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