1*c3437056SNickeau<?php 2*c3437056SNickeau 3*c3437056SNickeauuse ComboStrap\Canonical; 4*c3437056SNickeauuse ComboStrap\DokuPath; 5*c3437056SNickeauuse ComboStrap\Page; 6*c3437056SNickeauuse ComboStrap\PluginUtility; 7*c3437056SNickeau 8*c3437056SNickeauif (!defined('DOKU_INC')) die(); 9*c3437056SNickeau 10*c3437056SNickeau/** 11*c3437056SNickeau * 12*c3437056SNickeau * 13*c3437056SNickeau */ 14*c3437056SNickeauclass action_plugin_combo_canonical extends DokuWiki_Action_Plugin 15*c3437056SNickeau{ 16*c3437056SNickeau 17*c3437056SNickeau const CONF_CANONICAL_FOR_GA_PAGE_VIEW = "useCanonicalValueForGoogleAnalyticsPageView"; 18*c3437056SNickeau const CANONICAL = Canonical::PROPERTY_NAME; 19*c3437056SNickeau 20*c3437056SNickeau 21*c3437056SNickeau function __construct() 22*c3437056SNickeau { 23*c3437056SNickeau // enable direct access to language strings 24*c3437056SNickeau // ie $this->lang 25*c3437056SNickeau $this->setupLocale(); 26*c3437056SNickeau } 27*c3437056SNickeau 28*c3437056SNickeau public function register(Doku_Event_Handler $controller) 29*c3437056SNickeau { 30*c3437056SNickeau 31*c3437056SNickeau /** 32*c3437056SNickeau * Add canonical to javascript 33*c3437056SNickeau */ 34*c3437056SNickeau $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'addCanonicalToJavascript', array()); 35*c3437056SNickeau 36*c3437056SNickeau } 37*c3437056SNickeau 38*c3437056SNickeau 39*c3437056SNickeau 40*c3437056SNickeau /** 41*c3437056SNickeau * Add the canonical value to JSON 42*c3437056SNickeau * to be able to report only on canonical value and not on path 43*c3437056SNickeau * @param $event 44*c3437056SNickeau * @noinspection SpellCheckingInspection 45*c3437056SNickeau */ 46*c3437056SNickeau function addCanonicalToJavascript($event) 47*c3437056SNickeau { 48*c3437056SNickeau 49*c3437056SNickeau global $JSINFO; 50*c3437056SNickeau $page = Page::createPageFromRequestedPage(); 51*c3437056SNickeau if ($page->getCanonical() !== null) { 52*c3437056SNickeau $JSINFO[Canonical::PROPERTY_NAME] = $page->getCanonical(); 53*c3437056SNickeau if (isset($JSINFO["ga"]) && PluginUtility::getConfValue(self::CONF_CANONICAL_FOR_GA_PAGE_VIEW, 1)) { 54*c3437056SNickeau // 55*c3437056SNickeau // The path portion of a URL. This value should start with a slash (/) character. 56*c3437056SNickeau // As said here 57*c3437056SNickeau // https://developers.google.com/analytics/devguides/collection/analyticsjs/pages#pageview_fields 58*c3437056SNickeau // 59*c3437056SNickeau // 60*c3437056SNickeau // For the modification instructions 61*c3437056SNickeau // https://developers.google.com/analytics/devguides/collection/analyticsjs/pages#pageview_fields 62*c3437056SNickeau $pageViewCanonical = str_replace(DokuPath::PATH_SEPARATOR, "/", $page->getCanonical()); 63*c3437056SNickeau if ($pageViewCanonical[0] != "/") { 64*c3437056SNickeau $pageViewCanonical = "/$pageViewCanonical"; 65*c3437056SNickeau } 66*c3437056SNickeau $JSINFO["ga"]["pageview"] = $pageViewCanonical; 67*c3437056SNickeau } 68*c3437056SNickeau } 69*c3437056SNickeau } 70*c3437056SNickeau 71*c3437056SNickeau} 72