xref: /plugin/googletagmanager/action.php (revision fea4b0963fde9a9be5b956772b362c5545438444)
1bfa47fb6SAlex<?php
2bfa47fb6SAlex
3*fea4b096SAlexander Lehmannuse dokuwiki\Extension\ActionPlugin;
4*fea4b096SAlexander Lehmannuse dokuwiki\Extension\EventHandler;
5*fea4b096SAlexander Lehmann
6*fea4b096SAlexander Lehmannclass action_plugin_googletagmanager extends ActionPlugin
7737086b3SAlexander Lehmann{
8737086b3SAlexander Lehmann    public const GTMID = 'GTMID';
931d01fc3SNickeau
10bfa47fb6SAlex    /**
11bfa47fb6SAlex     * Register its handlers with the DokuWiki's event controller
12bfa47fb6SAlex     */
13*fea4b096SAlexander Lehmann    public function register(EventHandler $controller)
14737086b3SAlexander Lehmann    {
158b69576fSAlexander Lehmann        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'addHeaders');
16bfa47fb6SAlex    }
17bfa47fb6SAlex
18737086b3SAlexander Lehmann    public function addHeaders(&$event, $param)
19737086b3SAlexander Lehmann    {
208b69576fSAlexander Lehmann            $GTMID = $this->getConf(self::GTMID);
218b69576fSAlexander Lehmann            if (!$GTMID) return;
2231d01fc3SNickeau
238b69576fSAlexander Lehmann            $is_AW_tag = substr($GTMID, 0, 3) == 'AW-';
240fc69df8SAlexander Lehmann
250fc69df8SAlexander Lehmann        if ($is_AW_tag) {
26*fea4b096SAlexander Lehmann            $event->data['script'][] = ['src' => "https://www.googletagmanager.com/gtag/js?id=" . $GTMID];
27*fea4b096SAlexander Lehmann            $event->data['script'][] = ['type' => 'text/javascript', '_data' => "window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);}" .
28bcb1a129SAlexander Lehmann                " gtag('js', new Date()); gtag('config', '" .
29737086b3SAlexander Lehmann                $GTMID .
30*fea4b096SAlexander Lehmann                "');"];
310fc69df8SAlexander Lehmann        } else {
32*fea4b096SAlexander Lehmann            $event->data['noscript'][] = ['_data' => '<iframe src="https://www.googletagmanager.com/ns.html?id=' .
33bcb1a129SAlexander Lehmann                $GTMID .
34*fea4b096SAlexander Lehmann                '" height="0" width="0" style="display:none;visibility:hidden"></iframe>'];
35*fea4b096SAlexander Lehmann            $event->data['script'][] = ['type' => 'text/javascript', '_data' => "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
36bfa47fb6SAlexnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
37bfa47fb6SAlexj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
388b69576fSAlexander Lehmann'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
39737086b3SAlexander Lehmann})(window,document,'script','dataLayer','" .
40737086b3SAlexander Lehmann                $GTMID .
41*fea4b096SAlexander Lehmann                "');"];
42bfa47fb6SAlex        }
43bfa47fb6SAlex    }
440fc69df8SAlexander Lehmann}
45