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 public $_event = 'PARSER_CACHE_USE'; 160db5771eSMichael Große 170db5771eSMichael Große /** 180db5771eSMichael Große * 190db5771eSMichael Große * @param string $id page id 200db5771eSMichael Große * @param string $file source file for cache 210db5771eSMichael Große * @param string $mode input mode 220db5771eSMichael Große */ 230db5771eSMichael Große public function __construct($id, $file, $mode) 240db5771eSMichael Große { 250db5771eSMichael Große if ($id) { 260db5771eSMichael Große $this->page = $id; 270db5771eSMichael Große } 280db5771eSMichael Große $this->file = $file; 290db5771eSMichael Große $this->mode = $mode; 300db5771eSMichael Große 310db5771eSMichael Große parent::__construct($file . $_SERVER['HTTP_HOST'] . $_SERVER['SERVER_PORT'], '.' . $mode); 320db5771eSMichael Große } 330db5771eSMichael Große 340db5771eSMichael Große /** 350db5771eSMichael Große * method contains cache use decision logic 360db5771eSMichael Große * 370db5771eSMichael Große * @return bool see useCache() 380db5771eSMichael Große */ 39*42c00b45SMichael Große public function makdeDefaultCacheDecision() 400db5771eSMichael Große { 410db5771eSMichael Große 420db5771eSMichael Große if (!file_exists($this->file)) { 430db5771eSMichael Große return false; 440db5771eSMichael Große } // source exists? 45*42c00b45SMichael Große return parent::makdeDefaultCacheDecision(); 460db5771eSMichael Große } 470db5771eSMichael Große 48*42c00b45SMichael Große protected function addDependencies() 490db5771eSMichael Große { 500db5771eSMichael Große 510db5771eSMichael Große // parser cache file dependencies ... 520db5771eSMichael Große $files = array( 530db5771eSMichael Große $this->file, // ... source 540db5771eSMichael Große DOKU_INC . 'inc/parser/Parser.php', // ... parser 550db5771eSMichael Große DOKU_INC . 'inc/parser/handler.php', // ... handler 560db5771eSMichael Große ); 570db5771eSMichael Große $files = array_merge($files, getConfigFiles('main')); // ... wiki settings 580db5771eSMichael Große 590db5771eSMichael Große $this->depends['files'] = !empty($this->depends['files']) ? 600db5771eSMichael Große array_merge($files, $this->depends['files']) : 610db5771eSMichael Große $files; 62*42c00b45SMichael Große parent::addDependencies(); 630db5771eSMichael Große } 640db5771eSMichael Große 650db5771eSMichael Große} 66