1c25e802bSgerardnico<?php 2c25e802bSgerardnico 3c25e802bSgerardnico 4c25e802bSgerardnico/** 5c25e802bSgerardnico * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved. 6c25e802bSgerardnico * 7c25e802bSgerardnico * This source code is licensed under the GPL license found in the 8c25e802bSgerardnico * COPYING file in the root directory of this source tree. 9c25e802bSgerardnico * 10c25e802bSgerardnico * @license GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html) 11c25e802bSgerardnico * @author ComboStrap <support@combostrap.com> 12c25e802bSgerardnico * 13c25e802bSgerardnico */ 14c25e802bSgerardnico 1537748cd8SNickeau 16*04fd306cSNickeaurequire_once(__DIR__ . '/../vendor/autoload.php'); 17*04fd306cSNickeau 18*04fd306cSNickeau/** 19*04fd306cSNickeau * Mandatory, don't known why ? Otherwise it does not work 20*04fd306cSNickeau * The class is not found 21*04fd306cSNickeau */ 22*04fd306cSNickeaurequire_once(__DIR__ . '/../ComboStrap/AnalyticsMenuItem.php'); 23*04fd306cSNickeau 24*04fd306cSNickeauuse Combostrap\AnalyticsMenuItem; 25*04fd306cSNickeauuse ComboStrap\ExceptionNotFound; 26*04fd306cSNickeauuse ComboStrap\ExecutionContext; 27*04fd306cSNickeauuse ComboStrap\Identity; 282c067407Sgerardnico 29c25e802bSgerardnico/** 30c25e802bSgerardnico * Class action_plugin_combo_analytics 31c25e802bSgerardnico * Update the analytics data 32c25e802bSgerardnico */ 33c25e802bSgerardnicoclass action_plugin_combo_analytics extends DokuWiki_Action_Plugin 34c25e802bSgerardnico{ 35c25e802bSgerardnico 36c25e802bSgerardnico 37c25e802bSgerardnico public function register(Doku_Event_Handler $controller) 38c25e802bSgerardnico { 392c067407Sgerardnico 4055d4462bSgerardnico 41db974367Sgerardnico /** 42db974367Sgerardnico * Add a icon in the page tools menu 43db974367Sgerardnico * https://www.dokuwiki.org/devel:event:menu_items_assembly 44db974367Sgerardnico */ 45e8b2ff59SNickeau $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'handle_rail_bar'); 46db974367Sgerardnico 475f891b7eSNickeau 48c25e802bSgerardnico } 49c25e802bSgerardnico 50db974367Sgerardnico 51e8b2ff59SNickeau public function handle_rail_bar(Doku_Event $event, $param) 52d81822adSgerardnico { 53db974367Sgerardnico 54*04fd306cSNickeau 55*04fd306cSNickeau $executionContext = ExecutionContext::getActualOrCreateFromEnv(); 56*04fd306cSNickeau if (!$executionContext->isPublicationAction()) { 57*04fd306cSNickeau // a search for instance 58*04fd306cSNickeau return; 59*04fd306cSNickeau } 60*04fd306cSNickeau 61a6bf47aaSNickeau if (!Identity::isWriter()) { 62db974367Sgerardnico return; 63db974367Sgerardnico } 64db974367Sgerardnico 65db974367Sgerardnico /** 66db974367Sgerardnico * The `view` property defines the menu that is currently built 67db974367Sgerardnico * https://www.dokuwiki.org/devel:menus 68db974367Sgerardnico * If this is not the page menu, return 69db974367Sgerardnico */ 70db974367Sgerardnico if ($event->data['view'] != 'page') return; 71db974367Sgerardnico 72db974367Sgerardnico global $INFO; 73db974367Sgerardnico if (!$INFO['exists']) { 74db974367Sgerardnico return; 75db974367Sgerardnico } 76db974367Sgerardnico array_splice($event->data['items'], -1, 0, array(new AnalyticsMenuItem())); 77db974367Sgerardnico 78db974367Sgerardnico } 79d81822adSgerardnico 805f891b7eSNickeau 81c25e802bSgerardnico} 82c25e802bSgerardnico 83c25e802bSgerardnico 84c25e802bSgerardnico 85