xref: /plugin/approve/action/cache.php (revision 1989ee26e4c10d9fe322c2a0aa4ae990f031b47b)
1b1ff32a1SSzymon Olewniczak<?php
2b1ff32a1SSzymon Olewniczak
3*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\ActionPlugin;
4*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\EventHandler;
5*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\Event;
6b1ff32a1SSzymon Olewniczak
7*1989ee26SSzymon Olewniczakclass action_plugin_approve_cache extends ActionPlugin
8b1ff32a1SSzymon Olewniczak{
9b1ff32a1SSzymon Olewniczak    /**
10*1989ee26SSzymon Olewniczak     * @inheritDoc
11b1ff32a1SSzymon Olewniczak     */
12*1989ee26SSzymon 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    /**
17*1989ee26SSzymon Olewniczak     * @param Event $event
18*1989ee26SSzymon Olewniczak     * @param mixed $param
19b1ff32a1SSzymon Olewniczak     */
20*1989ee26SSzymon 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 {
370c60a293SSzymon Olewniczak                /** @var \helper_plugin_approve_db $db_helper */
38b1ff32a1SSzymon Olewniczak                $db_helper = plugin_load('helper', 'approve_db');
390c60a293SSzymon Olewniczak                $sqlite = $db_helper->getDB();
400c60a293SSzymon Olewniczak                $cache->depends['files'][] = $sqlite->getAdapter()->getDbFile();
410c60a293SSzymon Olewniczak            } catch (Exception $e) {
420c60a293SSzymon Olewniczak                msg($e->getMessage(), -1);
430c60a293SSzymon Olewniczak                return;
440c60a293SSzymon Olewniczak            }
45b1ff32a1SSzymon Olewniczak        }
46b1ff32a1SSzymon Olewniczak    }
47b1ff32a1SSzymon Olewniczak}
48