10db5771eSMichael Große<?php 20db5771eSMichael Große 30db5771eSMichael Großenamespace dokuwiki\Cache; 40db5771eSMichael Große 50db5771eSMichael Große/** 60db5771eSMichael Große * Parser caching 70db5771eSMichael Große */ 80db5771eSMichael Großeclass CacheParser extends Cache 90db5771eSMichael Große{ 100db5771eSMichael Große 110db5771eSMichael Große public $file = ''; // source file for cache 120db5771eSMichael Große public $mode = ''; // input mode (represents the processing the input file will undergo) 130db5771eSMichael Große public $page = ''; 140db5771eSMichael Große 150db5771eSMichael Große /** 160db5771eSMichael Große * 170db5771eSMichael Große * @param string $id page id 180db5771eSMichael Große * @param string $file source file for cache 190db5771eSMichael Große * @param string $mode input mode 200db5771eSMichael Große */ 210db5771eSMichael Große public function __construct($id, $file, $mode) 220db5771eSMichael Große { 230db5771eSMichael Große if ($id) { 240db5771eSMichael Große $this->page = $id; 250db5771eSMichael Große } 260db5771eSMichael Große $this->file = $file; 270db5771eSMichael Große $this->mode = $mode; 280db5771eSMichael Große 29*c1ec88ceSAndreas Gohr $this->setEvent('PARSER_CACHE_USE'); 300db5771eSMichael Große parent::__construct($file . $_SERVER['HTTP_HOST'] . $_SERVER['SERVER_PORT'], '.' . $mode); 310db5771eSMichael Große } 320db5771eSMichael Große 330db5771eSMichael Große /** 340db5771eSMichael Große * method contains cache use decision logic 350db5771eSMichael Große * 360db5771eSMichael Große * @return bool see useCache() 370db5771eSMichael Große */ 3872c2bae8SMichael Große public function makeDefaultCacheDecision() 390db5771eSMichael Große { 400db5771eSMichael Große 410db5771eSMichael Große if (!file_exists($this->file)) { 420db5771eSMichael Große return false; 430db5771eSMichael Große } // source exists? 4472c2bae8SMichael Große return parent::makeDefaultCacheDecision(); 450db5771eSMichael Große } 460db5771eSMichael Große 4742c00b45SMichael Große protected function addDependencies() 480db5771eSMichael Große { 490db5771eSMichael Große 500db5771eSMichael Große // parser cache file dependencies ... 510db5771eSMichael Große $files = array( 520db5771eSMichael Große $this->file, // ... source 530db5771eSMichael Große DOKU_INC . 'inc/parser/Parser.php', // ... parser 540db5771eSMichael Große DOKU_INC . 'inc/parser/handler.php', // ... handler 550db5771eSMichael Große ); 560db5771eSMichael Große $files = array_merge($files, getConfigFiles('main')); // ... wiki settings 570db5771eSMichael Große 580db5771eSMichael Große $this->depends['files'] = !empty($this->depends['files']) ? 590db5771eSMichael Große array_merge($files, $this->depends['files']) : 600db5771eSMichael Große $files; 6142c00b45SMichael Große parent::addDependencies(); 620db5771eSMichael Große } 630db5771eSMichael Große 640db5771eSMichael Große} 65