xref: /plugin/approve/action/cache.php (revision f75683023155363f0519cf0c9df930c5b2e15bdf)
1b1ff32a1SSzymon Olewniczak<?php
2b1ff32a1SSzymon Olewniczak
31989ee26SSzymon Olewniczakuse dokuwiki\Extension\ActionPlugin;
41989ee26SSzymon Olewniczakuse dokuwiki\Extension\EventHandler;
51989ee26SSzymon Olewniczakuse dokuwiki\Extension\Event;
6b1ff32a1SSzymon Olewniczak
71989ee26SSzymon Olewniczakclass action_plugin_approve_cache extends ActionPlugin
8b1ff32a1SSzymon Olewniczak{
9b1ff32a1SSzymon Olewniczak    /**
101989ee26SSzymon Olewniczak     * @inheritDoc
11b1ff32a1SSzymon Olewniczak     */
121989ee26SSzymon Olewniczak    public function register(EventHandler $controller)
13b1ff32a1SSzymon Olewniczak    {
14b1ff32a1SSzymon Olewniczak        $controller->register_hook('PARSER_CACHE_USE', 'BEFORE', $this, 'handle_parser_cache_use');
15b1ff32a1SSzymon Olewniczak    }
16b1ff32a1SSzymon Olewniczak    /**
171989ee26SSzymon Olewniczak     * @param Event $event
181989ee26SSzymon Olewniczak     * @param mixed $param
19b1ff32a1SSzymon Olewniczak     */
201989ee26SSzymon Olewniczak    public function handle_parser_cache_use(Event $event, $param)
21b1ff32a1SSzymon Olewniczak    {
22b1ff32a1SSzymon Olewniczak        /** @var cache_renderer $cache */
23b1ff32a1SSzymon Olewniczak        $cache = $event->data;
24b1ff32a1SSzymon Olewniczak
25b1ff32a1SSzymon Olewniczak        if(!$cache->page) return;
26b1ff32a1SSzymon Olewniczak        //purge only xhtml cache
27b1ff32a1SSzymon Olewniczak        if($cache->mode != 'xhtml') return;
28b1ff32a1SSzymon Olewniczak
29b1ff32a1SSzymon Olewniczak        //Check if it is plugins
30b1ff32a1SSzymon Olewniczak        $approve = p_get_metadata($cache->page, 'plugin approve');
31b1ff32a1SSzymon Olewniczak        if(!$approve) return;
32b1ff32a1SSzymon Olewniczak
332ce523c6SSzymon Olewniczak        if ($approve['dynamic_approver']) {
34b1ff32a1SSzymon Olewniczak            $cache->_nocache = true;
35b1ff32a1SSzymon Olewniczak        } elseif ($approve['approve_table']) {
360c60a293SSzymon Olewniczak            try {
37*f7568302SSzymon Olewniczak                /** @var helper_plugin_approve_db $db */
38*f7568302SSzymon Olewniczak                $db = $this->loadHelper('approve_db');
39*f7568302SSzymon Olewniczak                $cache->depends['files'][] = $db->getDbFile();
400c60a293SSzymon Olewniczak            } catch (Exception $e) {
410c60a293SSzymon Olewniczak                msg($e->getMessage(), -1);
420c60a293SSzymon Olewniczak                return;
430c60a293SSzymon Olewniczak            }
44b1ff32a1SSzymon Olewniczak        }
45b1ff32a1SSzymon Olewniczak    }
46b1ff32a1SSzymon Olewniczak}
47