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