xref: /plugin/ireadit/action/auth.php (revision d0cab33c70741e3b980d195617fdaa5a25767f97)
1*d0cab33cSSzymon Olewniczak<?php
2*d0cab33cSSzymon Olewniczak
3*d0cab33cSSzymon Olewniczak// must be run within Dokuwiki
4*d0cab33cSSzymon Olewniczak
5*d0cab33cSSzymon Olewniczakif(!defined('DOKU_INC')) die();
6*d0cab33cSSzymon Olewniczak
7*d0cab33cSSzymon Olewniczakclass action_plugin_ireadit_auth extends DokuWiki_Action_Plugin {
8*d0cab33cSSzymon Olewniczak
9*d0cab33cSSzymon Olewniczak    /**
10*d0cab33cSSzymon Olewniczak     * Registers a callback function for a given event
11*d0cab33cSSzymon Olewniczak     *
12*d0cab33cSSzymon Olewniczak     * @param Doku_Event_Handler $controller DokuWiki's event controller object
13*d0cab33cSSzymon Olewniczak     * @return void
14*d0cab33cSSzymon Olewniczak     */
15*d0cab33cSSzymon Olewniczak    public function register(Doku_Event_Handler $controller) {
16*d0cab33cSSzymon Olewniczak        $controller->register_hook('AUTH_USER_CHANGE', 'AFTER', $this, 'handle_auth_user_change');
17*d0cab33cSSzymon Olewniczak    }
18*d0cab33cSSzymon Olewniczak
19*d0cab33cSSzymon Olewniczak    public function handle_auth_user_change(Doku_Event $event) {
20*d0cab33cSSzymon Olewniczak        $type = $event->data['type'];
21*d0cab33cSSzymon Olewniczak
22*d0cab33cSSzymon Olewniczak        /** @var helper_plugin_ireadit_db $db_helper */
23*d0cab33cSSzymon Olewniczak        $db_helper = plugin_load('helper', 'ireadit_db');
24*d0cab33cSSzymon Olewniczak        $sqlite = $db_helper->getDB();
25*d0cab33cSSzymon Olewniczak
26*d0cab33cSSzymon Olewniczak        /** @var helper_plugin_ireadit $helper */
27*d0cab33cSSzymon Olewniczak        $helper = plugin_load('helper', 'ireadit');
28*d0cab33cSSzymon Olewniczak
29*d0cab33cSSzymon Olewniczak        switch ($type) {
30*d0cab33cSSzymon Olewniczak            case 'create':
31*d0cab33cSSzymon Olewniczak                $user = $event->data['params'][0];
32*d0cab33cSSzymon Olewniczak                $res = $sqlite->query('SELECT page,meta FROM meta');
33*d0cab33cSSzymon Olewniczak                $rows = $sqlite->res2arr($res);
34*d0cab33cSSzymon Olewniczak                foreach ($rows as $row) {
35*d0cab33cSSzymon Olewniczak                    $page = $row['page'];
36*d0cab33cSSzymon Olewniczak                    $meta = json_decode($row['meta'], true);
37*d0cab33cSSzymon Olewniczak                    if ($helper->in_users_set($user, $meta)) {
38*d0cab33cSSzymon Olewniczak                        $last_change_date = p_get_metadata($page, 'last_change date');
39*d0cab33cSSzymon Olewniczak                        $sqlite->storeEntry('ireadit', [
40*d0cab33cSSzymon Olewniczak                            'page' => $page,
41*d0cab33cSSzymon Olewniczak                            'rev' => $last_change_date,
42*d0cab33cSSzymon Olewniczak                            'user' => $user
43*d0cab33cSSzymon Olewniczak                        ]);
44*d0cab33cSSzymon Olewniczak                    }
45*d0cab33cSSzymon Olewniczak                }
46*d0cab33cSSzymon Olewniczak                break;
47*d0cab33cSSzymon Olewniczak            case 'modify':
48*d0cab33cSSzymon Olewniczak                $old_username =  $event->data['params'][0];
49*d0cab33cSSzymon Olewniczak                if (!isset($event->data['params'][1]['user'])) return;
50*d0cab33cSSzymon Olewniczak
51*d0cab33cSSzymon Olewniczak                $new_username =  $event->data['params'][1]['user'];
52*d0cab33cSSzymon Olewniczak                if ($old_username == $new_username) return;
53*d0cab33cSSzymon Olewniczak
54*d0cab33cSSzymon Olewniczak                $sqlite->query('UPDATE ireadit SET user=? WHERE user=?', $new_username, $old_username);
55*d0cab33cSSzymon Olewniczak                break;
56*d0cab33cSSzymon Olewniczak            case 'delete':
57*d0cab33cSSzymon Olewniczak                $user = $event->data['params'][0][0];
58*d0cab33cSSzymon Olewniczak
59*d0cab33cSSzymon Olewniczak                $sqlite->query('DELETE FROM ireadit WHERE user=? AND timestamp IS NULL', $user);
60*d0cab33cSSzymon Olewniczak                break;
61*d0cab33cSSzymon Olewniczak        }
62*d0cab33cSSzymon Olewniczak
63*d0cab33cSSzymon Olewniczak    }
64*d0cab33cSSzymon Olewniczak
65*d0cab33cSSzymon Olewniczak}
66