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