xref: /plugin/numatomo/action.php (revision fce6bfe4ece0cdc69dbfc99fb7f7834aa00a7db5)
168843692SSascha Leib<?php
268843692SSascha Leib
368843692SSascha Leibuse dokuwiki\Extension\EventHandler;
468843692SSascha Leibuse dokuwiki\Extension\Event;
568843692SSascha Leib
668843692SSascha Leib/**
7*fce6bfe4SSascha Leib * Action Component for the Nu Matomo Plugin
868843692SSascha Leib *
968843692SSascha Leib * @license	GPL 2 (http://www.gnu.org/licenses/gpl.html)
1068843692SSascha Leib * @author	 Sascha Leib <sascha.leib(at)kolmio.com>
1168843692SSascha Leib */
1268843692SSascha Leib
13*fce6bfe4SSascha Leibclass action_plugin_numatomo extends DokuWiki_Action_Plugin {
1468843692SSascha Leib
1568843692SSascha Leib	/**
1668843692SSascha Leib     * Registers a callback functions
1768843692SSascha Leib     *
1868843692SSascha Leib     * @param EventHandler $controller DokuWiki's event controller object
1968843692SSascha Leib     * @return void
2068843692SSascha Leib     */
2168843692SSascha Leib    public function register(EventHandler $controller)
2268843692SSascha Leib    {
2368843692SSascha Leib        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handleHeader');
2468843692SSascha Leib    }
2568843692SSascha Leib
2668843692SSascha Leib    /**
2768843692SSascha Leib     * Adds the preview parameter to the stylesheet loading in non-js mode
2868843692SSascha Leib     *
2968843692SSascha Leib     * @param Event $event event object by reference
3068843692SSascha Leib     * @return void
3168843692SSascha Leib     */
3268843692SSascha Leib	public function handleHeader(Event $event, $param) {
3368843692SSascha Leib
3468843692SSascha Leib		global $INFO;
3568843692SSascha Leib		$loggedin = isset($INFO['userinfo']);
3668843692SSascha Leib		$exgrp = $this->getConf('exclude');
3768843692SSascha Leib		$exclUser = false;
3868843692SSascha Leib		if ($exgrp === 'admins' && ($loggedin && ($INFO['isadmin'] === 1))) {
3968843692SSascha Leib			$exclUser = true;
4068843692SSascha Leib		} elseif ($exgrp === 'users' && $loggedin) {
4168843692SSascha Leib			$exclUser = true;
4268843692SSascha Leib		}
4368843692SSascha Leib
4468843692SSascha Leib		$code = NL . DOKU_TAB . DOKU_TAB . "var _paq = window._paq = window._paq || [];" . NL;
4568843692SSascha Leib
4668843692SSascha Leib		foreach (explode(',', $this->getConf('feature-flags')) as $flag) {
4768843692SSascha Leib			$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['$flag']);" . NL;
4868843692SSascha Leib		}
4968843692SSascha Leib		if ($exclUser) {
5068843692SSascha Leib			$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['optUserOut']);" . NL;
5168843692SSascha Leib		}
5268843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['setLinkClasses', ['interwiki','urlextern']]);" . NL;
5368843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['setExcludedQueryParams', ['do']]);" . NL;
5468843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['setDoNotTrack', 'true']);" . NL;
5568843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "_paq.push(['trackPageView']);" . NL;
5668843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "(function() {" . NL;
5768843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "var u='{$this->getConf('server')}';" . NL;
5868843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "_paq.push(['setTrackerUrl', u+'{$this->getConf('instance')}.php']);" . NL;
5968843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "_paq.push(['setSiteId', '{$this->getConf('siteid')}}']);" . NL;
6068843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];" . NL;
6168843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . DOKU_TAB . "g.async=true; g.src=u+'{$this->getConf('instance')}.js'; s.parentNode.insertBefore(g,s);" . NL;
6268843692SSascha Leib		$code .= DOKU_TAB . DOKU_TAB . "})();" . NL. DOKU_TAB;
6368843692SSascha Leib
6468843692SSascha Leib		// $code .= '<!-- ' . print_r($INFO, true) . ' -->' . NL;
6568843692SSascha Leib
6668843692SSascha Leib        $event->data['script'][] = [
6768843692SSascha Leib			'_data'   => $code
6868843692SSascha Leib        ];
6968843692SSascha Leib    }
7068843692SSascha Leib}