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