xref: /plugin/ireadit/action/cache.php (revision 692a14509184c6b7e10ac11e9d8c2b8e6d16b1f1)
1ce9be9e9SSzymon Olewniczak<?php
2ce9be9e9SSzymon Olewniczak/**
3ce9be9e9SSzymon Olewniczak * DokuWiki Plugin notification (Action Component)
4ce9be9e9SSzymon Olewniczak *
5ce9be9e9SSzymon Olewniczak * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6ce9be9e9SSzymon Olewniczak * @author  Szymon Olewniczak <it@rid.pl>
7ce9be9e9SSzymon Olewniczak */
8ce9be9e9SSzymon Olewniczak
9ce9be9e9SSzymon Olewniczak// must be run within Dokuwiki
10ce9be9e9SSzymon Olewniczakif (!defined('DOKU_INC')) {
11ce9be9e9SSzymon Olewniczak    die();
12ce9be9e9SSzymon Olewniczak}
13ce9be9e9SSzymon Olewniczak
14ce9be9e9SSzymon Olewniczakclass action_plugin_ireadit_cache extends DokuWiki_Action_Plugin
15ce9be9e9SSzymon Olewniczak{
16ce9be9e9SSzymon Olewniczak
17ce9be9e9SSzymon Olewniczak    /**
18ce9be9e9SSzymon Olewniczak     * Registers a callback function for a given event
19ce9be9e9SSzymon Olewniczak     *
20ce9be9e9SSzymon Olewniczak     * @param Doku_Event_Handler $controller DokuWiki's event controller object
21ce9be9e9SSzymon Olewniczak     *
22ce9be9e9SSzymon Olewniczak     * @return void
23ce9be9e9SSzymon Olewniczak     */
24ce9be9e9SSzymon Olewniczak    public function register(Doku_Event_Handler $controller)
25ce9be9e9SSzymon Olewniczak    {
26ce9be9e9SSzymon Olewniczak        $controller->register_hook('PARSER_CACHE_USE', 'BEFORE', $this, 'handle_parser_cache_use');
27ce9be9e9SSzymon Olewniczak    }
28ce9be9e9SSzymon Olewniczak
29ce9be9e9SSzymon Olewniczak    /**
30ce9be9e9SSzymon Olewniczak     * @param Doku_Event $event event object by reference
31ce9be9e9SSzymon Olewniczak     * @param mixed $param [the parameters passed as fifth argument to register_hook() when this
32ce9be9e9SSzymon Olewniczak     *                           handler was registered]
33ce9be9e9SSzymon Olewniczak     *
34ce9be9e9SSzymon Olewniczak     * @return void
35ce9be9e9SSzymon Olewniczak     */
36ce9be9e9SSzymon Olewniczak    public function handle_parser_cache_use(Doku_Event $event, $param)
37ce9be9e9SSzymon Olewniczak    {
38ce9be9e9SSzymon Olewniczak        /** @var cache_renderer $cache */
39ce9be9e9SSzymon Olewniczak        $cache = $event->data;
40ce9be9e9SSzymon Olewniczak
41ce9be9e9SSzymon Olewniczak        if(!$cache->page) return;
42ce9be9e9SSzymon Olewniczak        //purge only xhtml cache
43ce9be9e9SSzymon Olewniczak        if($cache->mode != 'xhtml') return;
44ce9be9e9SSzymon Olewniczak
45ce9be9e9SSzymon Olewniczak        //Check if it is plugins
46ce9be9e9SSzymon Olewniczak        $ireadit_list = p_get_metadata($cache->page, 'plugin ireadit_list');
47ce9be9e9SSzymon Olewniczak        if(!$ireadit_list) return;
48ce9be9e9SSzymon Olewniczak
49ce9be9e9SSzymon Olewniczak        if ($ireadit_list['dynamic_user']) {
50ce9be9e9SSzymon Olewniczak            $cache->_nocache = true;
51ce9be9e9SSzymon Olewniczak        } else {
52*692a1450SSzymon Olewniczak            try {
53*692a1450SSzymon Olewniczak                /** @var \helper_plugin_ireadit_db $db_helper */
54ce9be9e9SSzymon Olewniczak                $db_helper = plugin_load('helper', 'ireadit_db');
55*692a1450SSzymon Olewniczak                $sqlite = $db_helper->getDB();
56*692a1450SSzymon Olewniczak                $cache->depends['files'][] = $sqlite->getAdapter()->getDbFile();
57*692a1450SSzymon Olewniczak            } catch (Exception $e) {
58*692a1450SSzymon Olewniczak                msg($e->getMessage(), -1);
59*692a1450SSzymon Olewniczak                return;
60*692a1450SSzymon Olewniczak            }
61ce9be9e9SSzymon Olewniczak        }
62ce9be9e9SSzymon Olewniczak    }
63ce9be9e9SSzymon Olewniczak}
64