1<?php
2/**
3 * DokuWiki Plugin pagestats (Syntax Component)
4 * Allows using ~~PAGESTATSPAGE~~, ~~PAGESTATSMB~~, ~~MEDIASTATSPAGE~~, and ~~MEDIASTATSMB~~ to display stats.
5 */
6
7if (!defined('DOKU_INC')) die();
8
9class syntax_plugin_pagestats extends DokuWiki_Syntax_Plugin {
10
11    public function getType() {
12        return 'substition';
13    }
14
15    public function getSort() {
16        return 999;
17    }
18
19    public function connectTo($mode) {
20        $this->Lexer->addSpecialPattern('~~PAGESTATSPAGE~~', $mode, 'plugin_pagestats');
21        $this->Lexer->addSpecialPattern('~~PAGESTATSMB~~', $mode, 'plugin_pagestats');
22        $this->Lexer->addSpecialPattern('~~MEDIASTATSPAGE~~', $mode, 'plugin_pagestats');
23        $this->Lexer->addSpecialPattern('~~MEDIASTATSMB~~', $mode, 'plugin_pagestats');
24    }
25
26    public function handle($match, $state, $pos, Doku_Handler $handler) {
27        return trim($match, '~');
28    }
29
30    public function render($mode, Doku_Renderer $renderer, $data) {
31        if ($mode !== 'xhtml') return false;
32
33        /** @var helper_plugin_pagestats $helper */
34        $helper = plugin_load('helper', 'pagestats');
35        if (!$helper) return false;
36
37        $stats = $helper->getStats();
38
39        if (isset($stats[$data])) {
40            $value = $stats[$data];
41
42            // Add "MB" unit if configured and it's a size value
43            if ($this->getConf('showUnit') && in_array($data, ['PAGESTATSMB', 'MEDIASTATSMB'])) {
44                $value .= " " . $this->getLang('unit_mb');
45            }
46
47            // Debug-Modus: Zeige die Sprachschlüssel
48            // $renderer->doc .= '<pre>Verfügbare Sprachschlüssel: ' . print_r($this->lang, true) . '</pre>';
49
50            // Output zu renderer
51            $renderer->doc .= hsc($value);
52        }
53
54        return true;
55    }
56}