xref: /plugin/notification/helper/cron.php (revision fca8ba9f117c37048eed918b64bd11e705248fbd)
1*fca8ba9fSAnna Dabrowska<?php
2*fca8ba9fSAnna Dabrowska/**
3*fca8ba9fSAnna Dabrowska * DokuWiki Plugin watchcycle (Helper Component)
4*fca8ba9fSAnna Dabrowska *
5*fca8ba9fSAnna Dabrowska * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6*fca8ba9fSAnna Dabrowska */
7*fca8ba9fSAnna Dabrowska
8*fca8ba9fSAnna Dabrowskaclass helper_plugin_notification_cron extends DokuWiki_Plugin
9*fca8ba9fSAnna Dabrowska{
10*fca8ba9fSAnna Dabrowska    /** @var helper_plugin_sqlite */
11*fca8ba9fSAnna Dabrowska    protected $sqlite;
12*fca8ba9fSAnna Dabrowska
13*fca8ba9fSAnna Dabrowska    public function __construct()
14*fca8ba9fSAnna Dabrowska    {
15*fca8ba9fSAnna Dabrowska        /** @var \helper_plugin_notification_db $db_helper */
16*fca8ba9fSAnna Dabrowska        $db_helper = plugin_load('helper', 'notification_db');
17*fca8ba9fSAnna Dabrowska        $this->sqlite = $db_helper->getDB();
18*fca8ba9fSAnna Dabrowska    }
19*fca8ba9fSAnna Dabrowska
20*fca8ba9fSAnna Dabrowska    public function addUsersToCron()
21*fca8ba9fSAnna Dabrowska    {
22*fca8ba9fSAnna Dabrowska        /** @var DokuWiki_Auth_Plugin $auth */
23*fca8ba9fSAnna Dabrowska        global $auth;
24*fca8ba9fSAnna Dabrowska
25*fca8ba9fSAnna Dabrowska        $res = $this->sqlite->query('SELECT user from cron_check');
26*fca8ba9fSAnna Dabrowska        $ourUsers = $this->sqlite->res2arr($res);
27*fca8ba9fSAnna Dabrowska
28*fca8ba9fSAnna Dabrowska        $ourUsers = array_map(function ($item) {
29*fca8ba9fSAnna Dabrowska            return $item['user'];
30*fca8ba9fSAnna Dabrowska        }, $ourUsers);
31*fca8ba9fSAnna Dabrowska
32*fca8ba9fSAnna Dabrowska        $allUsers = array_keys($auth->retrieveUsers());
33*fca8ba9fSAnna Dabrowska
34*fca8ba9fSAnna Dabrowska        $newUsers = array_diff($allUsers, $ourUsers);
35*fca8ba9fSAnna Dabrowska
36*fca8ba9fSAnna Dabrowska        if (!is_array($newUsers) || empty($newUsers)) return;
37*fca8ba9fSAnna Dabrowska
38*fca8ba9fSAnna Dabrowska        foreach ($newUsers as $user) {
39*fca8ba9fSAnna Dabrowska            $this->sqlite->storeEntry('cron_check',
40*fca8ba9fSAnna Dabrowska                ['user' => $user, 'timestamp' => date('c', 0)]);
41*fca8ba9fSAnna Dabrowska        }
42*fca8ba9fSAnna Dabrowska    }
43*fca8ba9fSAnna Dabrowska}
44