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