1b1ff32a1SSzymon Olewniczak<?php 2b1ff32a1SSzymon Olewniczak 31989ee26SSzymon Olewniczakuse dokuwiki\Extension\ActionPlugin; 41989ee26SSzymon Olewniczakuse dokuwiki\Extension\EventHandler; 51989ee26SSzymon Olewniczakuse dokuwiki\Extension\Event; 6b1ff32a1SSzymon Olewniczak 71989ee26SSzymon Olewniczakclass action_plugin_approve_cache extends ActionPlugin 8b1ff32a1SSzymon Olewniczak{ 9b1ff32a1SSzymon Olewniczak /** 101989ee26SSzymon Olewniczak * @inheritDoc 11b1ff32a1SSzymon Olewniczak */ 121989ee26SSzymon Olewniczak public function register(EventHandler $controller) 13b1ff32a1SSzymon Olewniczak { 14b1ff32a1SSzymon Olewniczak $controller->register_hook('PARSER_CACHE_USE', 'BEFORE', $this, 'handle_parser_cache_use'); 15b1ff32a1SSzymon Olewniczak } 16b1ff32a1SSzymon Olewniczak /** 171989ee26SSzymon Olewniczak * @param Event $event 181989ee26SSzymon Olewniczak * @param mixed $param 19b1ff32a1SSzymon Olewniczak */ 201989ee26SSzymon Olewniczak public function handle_parser_cache_use(Event $event, $param) 21b1ff32a1SSzymon Olewniczak { 22b1ff32a1SSzymon Olewniczak /** @var cache_renderer $cache */ 23b1ff32a1SSzymon Olewniczak $cache = $event->data; 24b1ff32a1SSzymon Olewniczak 25b1ff32a1SSzymon Olewniczak if(!$cache->page) return; 26b1ff32a1SSzymon Olewniczak //purge only xhtml cache 27b1ff32a1SSzymon Olewniczak if($cache->mode != 'xhtml') return; 28b1ff32a1SSzymon Olewniczak 29b1ff32a1SSzymon Olewniczak //Check if it is plugins 30b1ff32a1SSzymon Olewniczak $approve = p_get_metadata($cache->page, 'plugin approve'); 31b1ff32a1SSzymon Olewniczak if(!$approve) return; 32b1ff32a1SSzymon Olewniczak 332ce523c6SSzymon Olewniczak if ($approve['dynamic_approver']) { 34b1ff32a1SSzymon Olewniczak $cache->_nocache = true; 35b1ff32a1SSzymon Olewniczak } elseif ($approve['approve_table']) { 360c60a293SSzymon Olewniczak try { 37*f7568302SSzymon Olewniczak /** @var helper_plugin_approve_db $db */ 38*f7568302SSzymon Olewniczak $db = $this->loadHelper('approve_db'); 39*f7568302SSzymon Olewniczak $cache->depends['files'][] = $db->getDbFile(); 400c60a293SSzymon Olewniczak } catch (Exception $e) { 410c60a293SSzymon Olewniczak msg($e->getMessage(), -1); 420c60a293SSzymon Olewniczak return; 430c60a293SSzymon Olewniczak } 44b1ff32a1SSzymon Olewniczak } 45b1ff32a1SSzymon Olewniczak } 46b1ff32a1SSzymon Olewniczak} 47