|
- <?php
-
- namespace dokuwiki\Cache;
-
- /**
- * Parser caching
- */
- class CacheParser extends Cache
- {
- public $file = ''; // source file for cache
- public $mode = ''; // input mode (represents the processing the input file will undergo)
- public $page = '';
-
- /**
- *
- * @param string $id page id
- * @param string $file source file for cache
- * @param string $mode input mode
- */
- public function __construct($id, $file, $mode)
- {
- global $INPUT;
-
- if ($id) {
- $this->page = $id;
- }
- $this->file = $file;
- $this->mode = $mode;
-
- $this->setEvent('PARSER_CACHE_USE');
- parent::__construct($file . $INPUT->server->str('HTTP_HOST') . $INPUT->server->str('SERVER_PORT'), '.' . $mode);
- }
-
- /**
- * method contains cache use decision logic
- *
- * @return bool see useCache()
- */
- public function makeDefaultCacheDecision()
- {
- if (!file_exists($this->file)) {
- // source doesn't exist
- return false;
- }
- return parent::makeDefaultCacheDecision();
- }
-
- protected function addDependencies()
- {
- // parser cache file dependencies ...
- $files = [
- $this->file, // source
- DOKU_INC . 'inc/Parsing/Parser.php', // parser
- DOKU_INC . 'inc/parser/handler.php', // handler
- ];
- $files = array_merge($files, getConfigFiles('main')); // wiki settings
-
- $this->depends['files'] = empty($this->depends['files']) ?
- $files :
- array_merge($files, $this->depends['files']);
- parent::addDependencies();
- }
- }
|