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 1604fd306cSNickeaurequire_once(__DIR__ . '/../vendor/autoload.php'); 1704fd306cSNickeau 1804fd306cSNickeau/** 1904fd306cSNickeau * Mandatory, don't known why ? Otherwise it does not work 2004fd306cSNickeau * The class is not found 2104fd306cSNickeau */ 2204fd306cSNickeaurequire_once(__DIR__ . '/../ComboStrap/AnalyticsMenuItem.php'); 2304fd306cSNickeau 2404fd306cSNickeauuse Combostrap\AnalyticsMenuItem; 2504fd306cSNickeauuse ComboStrap\ExceptionNotFound; 2604fd306cSNickeauuse ComboStrap\ExecutionContext; 2704fd306cSNickeauuse 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 5404fd306cSNickeau 5504fd306cSNickeau $executionContext = ExecutionContext::getActualOrCreateFromEnv(); 5604fd306cSNickeau if (!$executionContext->isPublicationAction()) { 5704fd306cSNickeau // a search for instance 5804fd306cSNickeau return; 5904fd306cSNickeau } 6004fd306cSNickeau 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; 73*70bbd7f1Sgerardnico $exists = $INFO['exists'] ?? null; 74*70bbd7f1Sgerardnico if (!$exists) { 75db974367Sgerardnico return; 76db974367Sgerardnico } 77db974367Sgerardnico array_splice($event->data['items'], -1, 0, array(new AnalyticsMenuItem())); 78db974367Sgerardnico 79db974367Sgerardnico } 80d81822adSgerardnico 815f891b7eSNickeau 82c25e802bSgerardnico} 83c25e802bSgerardnico 84c25e802bSgerardnico 85c25e802bSgerardnico 86