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