1<?php 2/** 3 * DokuWiki Plugin pagestats (Action Component) 4 * Counts the number of pages and media files and calculates their total size. 5 */ 6 7if (!defined('DOKU_INC')) die(); 8 9class action_plugin_pagestats extends DokuWiki_Action_Plugin { 10 11 /** 12 * Register hooks 13 */ 14 public function register(Doku_Event_Handler $controller) { 15 $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'add_stats_to_page'); 16 $controller->register_hook('IO_WIKIPAGE_WRITE', 'AFTER', $this, 'clear_cache_on_change'); 17 $controller->register_hook('MEDIA_UPLOAD_FINISH', 'AFTER', $this, 'clear_cache_on_change'); 18 $controller->register_hook('MEDIA_DELETE_FILE', 'AFTER', $this, 'clear_cache_on_change'); 19 } 20 21 /** 22 * Add page stats to meta headers 23 */ 24 public function add_stats_to_page(Doku_Event $event, $param) { 25 /** @var helper_plugin_pagestats $helper */ 26 $helper = plugin_load('helper', 'pagestats'); 27 if (!$helper) return; 28 29 $stats = $helper->getStats(); 30 31 foreach ($stats as $name => $value) { 32 $event->data['meta'][] = ['name' => strtolower($name), 'content' => $value]; 33 } 34 } 35 36 /** 37 * Clear cache when pages or media files change 38 */ 39 public function clear_cache_on_change(Doku_Event $event, $param) { 40 /** @var helper_plugin_pagestats $helper */ 41 $helper = plugin_load('helper', 'pagestats'); 42 if ($helper) { 43 $helper->clearCache(); 44 45 // Bei manueller Cache-Leerung über das Admin-Formular eine Meldung ausgeben 46 if ($event->name == 'ACTION_ACT_PREPROCESS' && isset($_REQUEST['action']) && $_REQUEST['action'] == 'clearCache') { 47 msg($helper->getLang('admin_cache_cleared'), 1); 48 } 49 } 50 } 51}