xref: /template/strap/action/analytics.php (revision 55d4462b3bcb71aef683189fd45073309dae8146)
1c25e802bSgerardnico<?php
2c25e802bSgerardnico
32c067407Sgerardnicouse ComboStrap\Analytics;
4*55d4462bSgerardnicouse ComboStrap\LogUtility;
5c25e802bSgerardnicouse ComboStrap\Page;
6*55d4462bSgerardnicouse ComboStrap\Sqlite;
7c25e802bSgerardnico
8c25e802bSgerardnico/**
9c25e802bSgerardnico * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved.
10c25e802bSgerardnico *
11c25e802bSgerardnico * This source code is licensed under the GPL license found in the
12c25e802bSgerardnico * COPYING  file in the root directory of this source tree.
13c25e802bSgerardnico *
14c25e802bSgerardnico * @license  GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
15c25e802bSgerardnico * @author   ComboStrap <support@combostrap.com>
16c25e802bSgerardnico *
17c25e802bSgerardnico */
18c25e802bSgerardnico
192c067407Sgerardnicorequire_once(__DIR__ . '/../class/'.'Analytics.php');
202c067407Sgerardnico
21c25e802bSgerardnico/**
22c25e802bSgerardnico * Class action_plugin_combo_analytics
23c25e802bSgerardnico * Update the analytics data
24c25e802bSgerardnico */
25c25e802bSgerardnicoclass action_plugin_combo_analytics extends DokuWiki_Action_Plugin
26c25e802bSgerardnico{
27c25e802bSgerardnico
28c25e802bSgerardnico
29c25e802bSgerardnico    public function register(Doku_Event_Handler $controller)
30c25e802bSgerardnico    {
312c067407Sgerardnico
32c25e802bSgerardnico        /**
33c25e802bSgerardnico         * Called on every page write
34c25e802bSgerardnico         * https://www.dokuwiki.org/devel:event:io_wikipage_write
35c25e802bSgerardnico         * On update to an existing page this event is called twice,
36c25e802bSgerardnico         * once for the transfer of the old version to the attic (rev will have a value)
37c25e802bSgerardnico         * and once to write the new version of the page into the wiki (rev is false)
38c25e802bSgerardnico         */
392c067407Sgerardnico        $controller->register_hook('IO_WIKIPAGE_WRITE', 'AFTER', $this, 'handle_update_analytics', array());
402c067407Sgerardnico
41*55d4462bSgerardnico        $controller->register_hook('INDEXER_TASKS_RUN', 'BEFORE', $this, 'handle_refresh_analytics', array());
42*55d4462bSgerardnico
43c25e802bSgerardnico    }
44c25e802bSgerardnico
452c067407Sgerardnico    public function handle_update_analytics(Doku_Event $event, $param)
46c25e802bSgerardnico    {
472c067407Sgerardnico
482c067407Sgerardnico        $rev = $event->data[3];
492c067407Sgerardnico        if ($rev===false){
502c067407Sgerardnico            $id = $event->data[2];
51*55d4462bSgerardnico            $page = new Page($id);
52*55d4462bSgerardnico            $page->refreshAnalytics();
53c25e802bSgerardnico        }
54c25e802bSgerardnico
55c25e802bSgerardnico
56c25e802bSgerardnico    }
57*55d4462bSgerardnico
58*55d4462bSgerardnico    public function handle_refresh_analytics(Doku_Event $event, $param)
59*55d4462bSgerardnico    {
60*55d4462bSgerardnico
61*55d4462bSgerardnico        $sqlite = Sqlite::getSqlite();
62*55d4462bSgerardnico        $res = $sqlite->query("SELECT ID FROM ANALYTICS_TO_REFRESH");
63*55d4462bSgerardnico        if (!$res) {
64*55d4462bSgerardnico            LogUtility::msg("There was a problem during the select: {$sqlite->getAdapter()->getDb()->errorInfo()}");
65*55d4462bSgerardnico        }
66*55d4462bSgerardnico        $rows = $sqlite->res2arr($res,true);
67*55d4462bSgerardnico        $sqlite->res_close($res);
68*55d4462bSgerardnico        foreach($rows as $row){
69*55d4462bSgerardnico            $page = new Page($row['ID']);
70*55d4462bSgerardnico            $page->refreshAnalytics();
71*55d4462bSgerardnico        }
72*55d4462bSgerardnico
73*55d4462bSgerardnico    }
74c25e802bSgerardnico}
75c25e802bSgerardnico
76c25e802bSgerardnico
77c25e802bSgerardnico
78