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