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