1*0db5771eSMichael Große<?php 2*0db5771eSMichael Große 3*0db5771eSMichael Großenamespace dokuwiki\Cache; 4*0db5771eSMichael Große 5*0db5771eSMichael Große/** 6*0db5771eSMichael Große * Parser caching 7*0db5771eSMichael Große */ 8*0db5771eSMichael Großeclass CacheParser extends Cache 9*0db5771eSMichael Große{ 10*0db5771eSMichael Große 11*0db5771eSMichael Große public $file = ''; // source file for cache 12*0db5771eSMichael Große public $mode = ''; // input mode (represents the processing the input file will undergo) 13*0db5771eSMichael Große public $page = ''; 14*0db5771eSMichael Große 15*0db5771eSMichael Große public $_event = 'PARSER_CACHE_USE'; 16*0db5771eSMichael Große 17*0db5771eSMichael Große /** 18*0db5771eSMichael Große * 19*0db5771eSMichael Große * @param string $id page id 20*0db5771eSMichael Große * @param string $file source file for cache 21*0db5771eSMichael Große * @param string $mode input mode 22*0db5771eSMichael Große */ 23*0db5771eSMichael Große public function __construct($id, $file, $mode) 24*0db5771eSMichael Große { 25*0db5771eSMichael Große if ($id) { 26*0db5771eSMichael Große $this->page = $id; 27*0db5771eSMichael Große } 28*0db5771eSMichael Große $this->file = $file; 29*0db5771eSMichael Große $this->mode = $mode; 30*0db5771eSMichael Große 31*0db5771eSMichael Große parent::__construct($file . $_SERVER['HTTP_HOST'] . $_SERVER['SERVER_PORT'], '.' . $mode); 32*0db5771eSMichael Große } 33*0db5771eSMichael Große 34*0db5771eSMichael Große /** 35*0db5771eSMichael Große * method contains cache use decision logic 36*0db5771eSMichael Große * 37*0db5771eSMichael Große * @return bool see useCache() 38*0db5771eSMichael Große */ 39*0db5771eSMichael Große public function _useCache() 40*0db5771eSMichael Große { 41*0db5771eSMichael Große 42*0db5771eSMichael Große if (!file_exists($this->file)) { 43*0db5771eSMichael Große return false; 44*0db5771eSMichael Große } // source exists? 45*0db5771eSMichael Große return parent::_useCache(); 46*0db5771eSMichael Große } 47*0db5771eSMichael Große 48*0db5771eSMichael Große protected function _addDependencies() 49*0db5771eSMichael Große { 50*0db5771eSMichael Große 51*0db5771eSMichael Große // parser cache file dependencies ... 52*0db5771eSMichael Große $files = array( 53*0db5771eSMichael Große $this->file, // ... source 54*0db5771eSMichael Große DOKU_INC . 'inc/parser/Parser.php', // ... parser 55*0db5771eSMichael Große DOKU_INC . 'inc/parser/handler.php', // ... handler 56*0db5771eSMichael Große ); 57*0db5771eSMichael Große $files = array_merge($files, getConfigFiles('main')); // ... wiki settings 58*0db5771eSMichael Große 59*0db5771eSMichael Große $this->depends['files'] = !empty($this->depends['files']) ? 60*0db5771eSMichael Große array_merge($files, $this->depends['files']) : 61*0db5771eSMichael Große $files; 62*0db5771eSMichael Große parent::_addDependencies(); 63*0db5771eSMichael Große } 64*0db5771eSMichael Große 65*0db5771eSMichael Große} 66