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