1b1ff32a1SSzymon Olewniczak<?php 2b1ff32a1SSzymon Olewniczak 3*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\ActionPlugin; 4*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\EventHandler; 5*1989ee26SSzymon Olewniczakuse dokuwiki\Extension\Event; 6b1ff32a1SSzymon Olewniczak 7*1989ee26SSzymon Olewniczakclass action_plugin_approve_cache extends ActionPlugin 8b1ff32a1SSzymon Olewniczak{ 9b1ff32a1SSzymon Olewniczak /** 10*1989ee26SSzymon Olewniczak * @inheritDoc 11b1ff32a1SSzymon Olewniczak */ 12*1989ee26SSzymon 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 /** 17*1989ee26SSzymon Olewniczak * @param Event $event 18*1989ee26SSzymon Olewniczak * @param mixed $param 19b1ff32a1SSzymon Olewniczak */ 20*1989ee26SSzymon 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 { 370c60a293SSzymon Olewniczak /** @var \helper_plugin_approve_db $db_helper */ 38b1ff32a1SSzymon Olewniczak $db_helper = plugin_load('helper', 'approve_db'); 390c60a293SSzymon Olewniczak $sqlite = $db_helper->getDB(); 400c60a293SSzymon Olewniczak $cache->depends['files'][] = $sqlite->getAdapter()->getDbFile(); 410c60a293SSzymon Olewniczak } catch (Exception $e) { 420c60a293SSzymon Olewniczak msg($e->getMessage(), -1); 430c60a293SSzymon Olewniczak return; 440c60a293SSzymon Olewniczak } 45b1ff32a1SSzymon Olewniczak } 46b1ff32a1SSzymon Olewniczak } 47b1ff32a1SSzymon Olewniczak} 48