xref: /plugin/combo/action/analytics.php (revision 266b617e1b5b0db7a1f15ec64288e722fbf9e36d)
1c25e802bSgerardnico<?php
2c25e802bSgerardnico
32c067407Sgerardnicouse ComboStrap\Analytics;
455d4462bSgerardnicouse ComboStrap\LogUtility;
5c25e802bSgerardnicouse ComboStrap\Page;
655d4462bSgerardnicouse 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        /**
33c42a1196Sgerardnico         * Analytics to refresh because they have lost or gain a backlinks
34c42a1196Sgerardnico         * are done via Sqlite table (The INDEXER_TASKS_RUN gives a way to
35c42a1196Sgerardnico         * manipulate this queue)
36*266b617eSgerardnico         *
37*266b617eSgerardnico         * There is no need to do it at page write
38*266b617eSgerardnico         * https://www.dokuwiki.org/devel:event:io_wikipage_write
39*266b617eSgerardnico         * because after the page is written, the page is shown and trigger the index tasks run
40c42a1196Sgerardnico         */
4155d4462bSgerardnico        $controller->register_hook('INDEXER_TASKS_RUN', 'BEFORE', $this, 'handle_refresh_analytics', array());
4255d4462bSgerardnico
43c25e802bSgerardnico    }
44c25e802bSgerardnico
4555d4462bSgerardnico    public function handle_refresh_analytics(Doku_Event $event, $param)
4655d4462bSgerardnico    {
4755d4462bSgerardnico
48c42a1196Sgerardnico        /**
49c42a1196Sgerardnico         * Check that the actual page has analytics data
50c42a1196Sgerardnico         * (if there is a cache, it's pretty quick)
51c42a1196Sgerardnico         */
52c42a1196Sgerardnico        global $ID;
53c42a1196Sgerardnico        Analytics::process($ID,true);
54c42a1196Sgerardnico
55c42a1196Sgerardnico        /**
56c42a1196Sgerardnico         * Check the analytics to refresh
57c42a1196Sgerardnico         */
5855d4462bSgerardnico        $sqlite = Sqlite::getSqlite();
5955d4462bSgerardnico        $res = $sqlite->query("SELECT ID FROM ANALYTICS_TO_REFRESH");
6055d4462bSgerardnico        if (!$res) {
6155d4462bSgerardnico            LogUtility::msg("There was a problem during the select: {$sqlite->getAdapter()->getDb()->errorInfo()}");
6255d4462bSgerardnico        }
6355d4462bSgerardnico        $rows = $sqlite->res2arr($res,true);
6455d4462bSgerardnico        $sqlite->res_close($res);
6555d4462bSgerardnico        foreach($rows as $row){
6655d4462bSgerardnico            $page = new Page($row['ID']);
6755d4462bSgerardnico            $page->refreshAnalytics();
6855d4462bSgerardnico        }
6955d4462bSgerardnico
7055d4462bSgerardnico    }
71c25e802bSgerardnico}
72c25e802bSgerardnico
73c25e802bSgerardnico
74c25e802bSgerardnico
75