xref: /dokuwiki/inc/Cache/CacheParser.php (revision c1ec88ce7a0ae07d293ad44112518b7cc27f242e)
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