bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/website/www.git/commit/?id=c8cab04139f93b35525ce4f8ffd00069ac473a26
commit c8cab04139f93b35525ce4f8ffd00069ac473a26 Author: Marcel Hollerbach <[email protected]> Date: Thu Oct 3 17:47:29 2019 +0200 pagetitle: remove action.php this file has some logic in it that causes caches to be invalidated and purged. With this commit things are quite fast. --- public_html/lib/plugins/pagetitle/action.php | 142 --------------------------- 1 file changed, 142 deletions(-) diff --git a/public_html/lib/plugins/pagetitle/action.php b/public_html/lib/plugins/pagetitle/action.php deleted file mode 100644 index 9c00b388..00000000 --- a/public_html/lib/plugins/pagetitle/action.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php -/** - * DokuWiki Plugin PageTitle; Action component - * - * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) - * @author Satoshi Sahara <[email protected]> - */ - -if(!defined('DOKU_INC')) die(); - -class action_plugin_pagetitle extends DokuWiki_Action_Plugin { - - /** - * register the event handlers - */ - function register(Doku_Event_Handler $controller) { - //$controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'deleteObsoletedSingleClass'); - $controller->register_hook('INDEXER_VERSION_GET', 'BEFORE', $this, '_indexer_version'); - $controller->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, '_indexer_pagetitle'); - $controller->register_hook('PARSER_METADATA_RENDER', 'AFTER', $this, '_parser_render'); - $controller->register_hook('PARSER_CACHE_USE', 'BEFORE', $this, '_prepare_cache'); - } - - /** - * Delete syntax.php which is obsoleted since multi-components syntax structure - */ - function deleteObsoletedSingleClass(Doku_Event $event) { - $legacyFile = dirname(__FILE__).'/syntax.php'; - if (file_exists($legacyFile)) { unlink($legacyFile); } - } - - - /** - * INDEXER_VERSION_GET - * Set a version string to the metadata index so that - * the index will be re-created when the version increased - */ - function _indexer_version(Doku_Event $event, $param) { - $event->data['plgin_pagetitle'] = '1.'.$this->getConf('usePersistent'); - } - - /** - * INDEXER_PAGE_ADD - * Add id of the page to metadata index, relevant pages should be found - * in data/index/plugin_pagetitle_w.idx file - */ - function _indexer_pagetitle(Doku_Event $event, $param) { - $id = p_get_metadata($event->data['page'], 'plugin pagetitle'); - if ($id) { - $event->data['metadata']['plugin_pagetitle'] = $id; - } - } - - - /** - * PAESER_METADATA_RENDER - * Use this event to update/reflesh metadata they may have set elseware. - * The page metadata is passed including both the current and persistent arrays. - */ - function _parser_render(Doku_Event $event, $param) { - global $ID; - - /* - * The PageTitle plugin will overwrite "title" metadata of the page - * with "pagetitle" specified in page source. The page must be rendered - * first in xhtml mode to get pagetitle and to stote it on metadata - * storage. - - * Each metadata storage (.meta file) may be expired or refleshed by - * DokuWiki or any plugins at elsewhere in any stage. For example, - * metadata will be expired when main config modified. DokuWiki will set - * again title metadata through calls p_get_first_heading() depending on - * $conf['useheading"] setting. - * - * Since page text is not changed, instruction and xhtml cache files are - * used to set title metadata, there is no chance to handle/render page - * source to get pagetitle and to overwite title metadata. - * Therfore, the value of "title" metadata will remain wrong with that - * pagetitle plugin intended. - * - * For the purpose to trigger PageTitle plugin's renderer, we tentatively - * set $ID as "title" to tell DokuWiki caching mechanism so that old - * cache need to be purged and metadata must be rebuild again. - */ - - $meta =& $event->data['current']; - $persistent =& $event->data['persistent']; - - // check metadata index whether pagetitle had used in the wiki page - $pages = idx_get_indexer()->getPages('plugin_pagetitle'); - $pageTitled = in_array($ID, $pages); - - if (!$pageTitled) return; - - // check whether page has rendered by pagetitle plugin - if (!isset($meta['plugin']['pagetitle'])) { - // tentatively assign full id as page title, just to distinguish - // with normal setting noNS($ID) and to purge .meta file later - $meta['title'] = $ID; - } - - // unnecessary persistent metadata should be removed in syntax component, - // however it may be possible to remove it here - if (!$this->getConf('usePersistent')) { - unset($persistent['title']); - } - } - - /** - * PARSER_CACHE_USE - * prepare the cache object for default _useCache action - */ - function _prepare_cache(Doku_Event $event, $param) { - $cache =& $event->data; - - // we're only interested in wiki pages - if (!isset($cache->page)) return; - - // check metadata index whether pagetitle had used in the wiki page - $pages = idx_get_indexer()->getPages('plugin_pagetitle'); - $pageTitled = in_array($cache->page, $pages); - - if (!$pageTitled) return; - - // check title metadata whether cache files should be purged - $title = p_get_metadata($cache->page, 'title', METADATA_DONT_RENDER); - switch ($cache->mode) { - case 'metadata': // metadata cache? - $request = ($title == $cache->page) ? true : false; - break; - case 'i': // instruction cache - $request = ($title == $cache->page) ? true : false; - break; - case 'xhtml': // xhtml cache - $request = ($title == $cache->page) ? true : false; - break; - } - // request purge if necessary - $cache->depends['purge'] = $request; - } - -} --
