xref: /plugin/piwiktagmanager/action.php (revision f61adf55237b0b373496ca83941b8ff4bc4ac0b6)
1<?php
2if(!defined('DOKU_INC')) die();
3if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
4
5class action_plugin_piwiktagmanager extends DokuWiki_Action_Plugin {
6
7    const PWTMID = 'PWTMID';
8    const PWTMHOST = 'PWTMHOST';
9
10    /**
11         * return some info
12         */
13        function getInfo(){
14                return array(
15                        'author' => 'Alexander Lehmann',
16                        'email'  => 'alexlehm@gmail.com',
17                        'date'   => '2025-12-06',
18                        'name'   => 'Piwik (Matomo) Tag Manager',
19                        'desc'   => 'Plugin to embed Piwik/Matomo Tag Manager in your wiki.',
20                        'url'    => 'https://wiki.lehmann.cx/projects:dokuwiki_piwik',
21                );
22        }
23
24        /**
25         * Register its handlers with the DokuWiki's event controller
26         */
27        function register(Doku_Event_Handler $controller) {
28            $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE',  $this, '_addHeaders');
29        }
30
31        function _addHeaders (&$event, $param) {
32
33                if(!$this->getConf(self::PWTMID)) return;
34
35                $event->data['script'][] = array (
36                    'type' => 'text/javascript',
37                    '_data' => "
38  var _mtm = window._mtm = window._mtm || [];
39  _mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'});
40  (function() {
41    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
42    g.async=true; g.src='https://".$this->getConf(self::PWTMHOST)."/piwik/js/container_".$this->getConf(self::PWTMID).".js'; s.parentNode.insertBefore(g,s);
43  })();",
44                );
45        }
46}
47?>
48