xref: /plugin/combo/action/analytics.php (revision 70bbd7f1f72440223cc13f3495efdcb2b0a11514)
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