1*b1ff32a1SSzymon Olewniczak<?php 2*b1ff32a1SSzymon Olewniczak 3*b1ff32a1SSzymon Olewniczakif(!defined('DOKU_INC')) die(); 4*b1ff32a1SSzymon Olewniczak 5*b1ff32a1SSzymon Olewniczakclass action_plugin_approve_cache extends DokuWiki_Action_Plugin 6*b1ff32a1SSzymon Olewniczak{ 7*b1ff32a1SSzymon Olewniczak /** 8*b1ff32a1SSzymon Olewniczak * Registers a callback function for a given event 9*b1ff32a1SSzymon Olewniczak * 10*b1ff32a1SSzymon Olewniczak * @param Doku_Event_Handler $controller DokuWiki's event controller object 11*b1ff32a1SSzymon Olewniczak * 12*b1ff32a1SSzymon Olewniczak * @return void 13*b1ff32a1SSzymon Olewniczak */ 14*b1ff32a1SSzymon Olewniczak public function register(Doku_Event_Handler $controller) 15*b1ff32a1SSzymon Olewniczak { 16*b1ff32a1SSzymon Olewniczak $controller->register_hook('PARSER_CACHE_USE', 'BEFORE', $this, 'handle_parser_cache_use'); 17*b1ff32a1SSzymon Olewniczak } 18*b1ff32a1SSzymon Olewniczak /** 19*b1ff32a1SSzymon Olewniczak * @param Doku_Event $event event object by reference 20*b1ff32a1SSzymon Olewniczak * @param mixed $param [the parameters passed as fifth argument to register_hook() when this 21*b1ff32a1SSzymon Olewniczak * handler was registered] 22*b1ff32a1SSzymon Olewniczak * 23*b1ff32a1SSzymon Olewniczak * @return void 24*b1ff32a1SSzymon Olewniczak */ 25*b1ff32a1SSzymon Olewniczak public function handle_parser_cache_use(Doku_Event $event, $param) 26*b1ff32a1SSzymon Olewniczak { 27*b1ff32a1SSzymon Olewniczak /** @var cache_renderer $cache */ 28*b1ff32a1SSzymon Olewniczak $cache = $event->data; 29*b1ff32a1SSzymon Olewniczak 30*b1ff32a1SSzymon Olewniczak if(!$cache->page) return; 31*b1ff32a1SSzymon Olewniczak //purge only xhtml cache 32*b1ff32a1SSzymon Olewniczak if($cache->mode != 'xhtml') return; 33*b1ff32a1SSzymon Olewniczak 34*b1ff32a1SSzymon Olewniczak //Check if it is plugins 35*b1ff32a1SSzymon Olewniczak $approve = p_get_metadata($cache->page, 'plugin approve'); 36*b1ff32a1SSzymon Olewniczak if(!$approve) return; 37*b1ff32a1SSzymon Olewniczak 38*b1ff32a1SSzymon Olewniczak if ($approve['dynamic_maintainer']) { 39*b1ff32a1SSzymon Olewniczak $cache->_nocache = true; 40*b1ff32a1SSzymon Olewniczak } elseif ($approve['approve_table']) { 41*b1ff32a1SSzymon Olewniczak $db_helper = plugin_load('helper', 'approve_db'); 42*b1ff32a1SSzymon Olewniczak $cache->depends['files'][] = $db_helper->getDB()->getAdapter()->getDbFile(); 43*b1ff32a1SSzymon Olewniczak } 44*b1ff32a1SSzymon Olewniczak } 45*b1ff32a1SSzymon Olewniczak} 46