1<?php
2
3use dokuwiki\Extension\ActionPlugin;
4use dokuwiki\Extension\EventHandler;
5use dokuwiki\Extension\Event;
6
7/**
8 * DokuWiki Plugin umami (Action Component)
9 *
10 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
11 * @author Feralheart <dokuwiki@feralheart.dev>
12 */
13class action_plugin_umami_tracker extends ActionPlugin
14{
15    /** @inheritDoc */
16    public function register(EventHandler $controller)
17    {
18        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'injectUmamiScript');
19    }
20
21    /**
22     * Event handler for TPL_METAHEADER_OUTPUT
23     *
24     * @see https://www.dokuwiki.org/devel:events:TPL_METAHEADER_OUTPUT
25     * @param Event $event Event object
26     * @param mixed $param optional parameter passed when event was registered
27     * @return void
28     */
29    public function injectUmamiScript(Doku_Event $event, $param) {
30        $src = $this->getConf('script_src');
31        $websiteId = $this->getConf('website_id');
32
33        if (empty($src) || empty($websiteId)) return;
34
35        $event->data['script'][] = [
36            'type' => 'text/javascript',
37            'src'  => $src,
38            'data-website-id' => $websiteId,
39            'defer' => 'defer',
40            'async' => 'async'
41        ];
42    }
43}
44