xref: /plugin/numatomo/action.php (revision 688436920272ef122233eaf35140a2cae89bc44e)
1*68843692SSascha Leib<?php
2*68843692SSascha Leib
3*68843692SSascha Leibuse dokuwiki\Extension\EventHandler;
4*68843692SSascha Leibuse dokuwiki\Extension\Event;
5*68843692SSascha Leib
6*68843692SSascha Leib/**
7*68843692SSascha Leib * Action Component for the Matomo Plugin
8*68843692SSascha Leib *
9*68843692SSascha Leib * @license	GPL 2 (http://www.gnu.org/licenses/gpl.html)
10*68843692SSascha Leib * @author	 Andreas Gohr <andi@splitbrain.org>
11*68843692SSascha Leib * @author	 Sascha Leib <sascha.leib(at)kolmio.com>
12*68843692SSascha Leib */
13*68843692SSascha Leib
14*68843692SSascha Leibclass action_plugin_matomo extends DokuWiki_Action_Plugin {
15*68843692SSascha Leib
16*68843692SSascha Leib	/**
17*68843692SSascha Leib     * Registers a callback functions
18*68843692SSascha Leib     *
19*68843692SSascha Leib     * @param EventHandler $controller DokuWiki's event controller object
20*68843692SSascha Leib     * @return void
21*68843692SSascha Leib     */
22*68843692SSascha Leib    public function register(EventHandler $controller)
23*68843692SSascha Leib    {
24*68843692SSascha Leib        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handleHeader');
25*68843692SSascha Leib    }
26*68843692SSascha Leib
27*68843692SSascha Leib    /**
28*68843692SSascha Leib     * Adds the preview parameter to the stylesheet loading in non-js mode
29*68843692SSascha Leib     *
30*68843692SSascha Leib     * @param Event $event event object by reference
31*68843692SSascha Leib     * @return void
32*68843692SSascha Leib     */
33*68843692SSascha Leib	public function handleHeader(Event $event, $param) {
34*68843692SSascha Leib
35*68843692SSascha Leib		global $INFO;
36*68843692SSascha Leib		$loggedin = isset($INFO['userinfo']);
37*68843692SSascha Leib		$exgrp = $this->getConf('exclude');
38*68843692SSascha Leib		$exclUser = false;
39*68843692SSascha Leib		if ($exgrp === 'admins' && ($loggedin && ($INFO['isadmin'] === 1))) {
40*68843692SSascha Leib			$exclUser = true;
41*68843692SSascha Leib		} elseif ($exgrp === 'users' && $loggedin) {
42*68843692SSascha Leib			$exclUser = true;
43*68843692SSascha Leib		}
44*68843692SSascha Leib
45*68843692SSascha Leib		$code = NL . DOKU_TAB . DOKU_TAB . "var _paq = window._paq = window._paq || [];" . NL;
46*68843692SSascha Leib
47*68843692SSascha Leib		foreach (explode(',', $this->getConf('feature-flags')) as $flag) {
48*68843692SSascha Leib			$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['$flag']);" . NL;
49*68843692SSascha Leib		}
50*68843692SSascha Leib		if ($exclUser) {
51*68843692SSascha Leib			$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['optUserOut']);" . NL;
52*68843692SSascha Leib		}
53*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['setLinkClasses', ['interwiki','urlextern']]);" . NL;
54*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['setExcludedQueryParams', ['do']]);" . NL;
55*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['setDoNotTrack', 'true']);" . NL;
56*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['trackPageView']);" . NL;
57*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "(function() {" . NL;
58*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "var u='{$this->getConf('server')}';" . NL;
59*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "_paq.push(['setTrackerUrl', u+'{$this->getConf('instance')}.php']);" . NL;
60*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "_paq.push(['setSiteId', '{$this->getConf('siteid')}}']);" . NL;
61*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];" . NL;
62*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "g.async=true; g.src=u+'{$this->getConf('instance')}.js'; s.parentNode.insertBefore(g,s);" . NL;
63*68843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "})();" . NL. DOKU_TAB;
64*68843692SSascha Leib
65*68843692SSascha Leib		// $code .= '<!-- ' . print_r($INFO, true) . ' -->' . NL;
66*68843692SSascha Leib
67*68843692SSascha Leib        $event->data['script'][] = [
68*68843692SSascha Leib			'_data'   => $code
69*68843692SSascha Leib        ];
70*68843692SSascha Leib    }
71*68843692SSascha Leib}