1<?php 2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project 3// 4// All Rights Reserved. See copyright.txt for details and a complete list of authors. 5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. 6// $Id$ 7//this script may only be included - so its better to die if called directly. 8if (strpos($_SERVER["SCRIPT_NAME"], basename(__FILE__)) !== false) { 9 header("location: index.php"); 10 exit; 11} 12 13/** 14 * @return array 15 */ 16function module_users_list_info() 17{ 18 return [ 19 'name' => tra('Users List'), 20 'description' => tra('Display a list of users with optional extra information from each.'), 21 'prefs' => ['feature_wiki'], 22 'params' => [ 23 'login' => [ 24 'name' => tra('Login'), 25 'description' => tra('Show the user name.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 26 'filter' => 'word', 27 'required' => false, 28 'default' => 'y' 29 ], 30 'realName' => [ 31 'name' => tra('Real Name'), 32 'description' => tra('Show the user real name.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 33 'filter' => 'word', 34 'required' => false, 35 'default' => 'n' 36 ], 37 'lastLogin' => [ 38 'name' => tra('Last Login'), 39 'description' => tra('Show the last login date.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 40 'filter' => 'word', 41 'required' => false, 42 'default' => 'n' 43 ], 44 'groups' => [ 45 'name' => tra('Groups'), 46 'description' => tra('Show the direct and included groups a user belongs to.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 47 'filter' => 'word', 48 'required' => false, 49 'default' => 'n' 50 ], 51 'avatar' => [ 52 'name' => tra('Profile picture'), 53 'description' => tra('Show the user profile picture.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 54 'filter' => 'word', 55 'required' => false, 56 'default' => 'n' 57 ], 58 'userPage' => [ 59 'name' => tra('User Page'), 60 'description' => tra('Show a link to the userPage.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 61 'filter' => 'word', 62 'required' => false, 63 'default' => 'n' 64 ], 65 'log' => [ 66 'name' => tra('Log'), 67 'description' => tra('Show a link to the user logs(feature actionlog must be activated).') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 68 'filter' => 'word', 69 'required' => false, 70 'default' => 'n' 71 ], 72 'group' => [ 73 'name' => tra('Group'), 74 'description' => tra('Show only the users of the group.') . ' ' . tra('Possible values:') . ' ' . tra('Groupname'), 75 'filter' => 'word', 76 'required' => false, 77 'default' => 'n' 78 ], 79 'includedGroups' => [ 80 'name' => tra('Included Groups'), 81 'description' => tra('Show only the users of the group group and of a group including group.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 82 'filter' => 'word', 83 'required' => false, 84 'default' => 'n' 85 ], 86 'initial' => [ 87 'name' => tra('initial'), 88 'description' => tra('Show only the users whose name begins with the letter.') . ' ' . tra('Possible values:') . ' ' . tra('a letter'), 89 'filter' => 'word', 90 'required' => false, 91 'default' => 'n' 92 ], 93 'heading' => [ 94 'name' => tra('heading'), 95 'description' => tra('Show the table heading.') . ' ' . tra('Possible values:') . ' ' . tra('y|n'), 96 'filter' => 'word', 97 'required' => false, 98 'default' => 'y' 99 ], 100 'sort_mode' => [ 101 'name' => tra('Sort Mode'), 102 'description' => tra('Sort users in ascending or descending order using these values: ') . 103 'login_asc, login_desc, email_asc, email_desc.', 104 'filter' => 'word', 105 'required' => false, 106 'default' => 'login_asc' 107 ], 108 ], 109 'common_params' => ['nonums', 'rows'] 110 ]; 111} 112 113/** 114 * @param $module_params 115 */ 116function module_users_list($module_params) 117{ 118 global $prefs; 119 $userlib = TikiLib::lib('user'); 120 $tikilib = TikiLib::lib('tiki'); 121 $smarty = TikiLib::lib('smarty'); 122 123 if (isset($module_params['params']['group'])) { 124 $group = [$module_params['params']['group']]; 125 if (isset($module_params['params']['includedGroups']) && $module_params['params']['includedGroups'] == 'y') { 126 $group = array_merge($group, $userlib->get_including_groups($group[0])); 127 } 128 } else { 129 $group = ''; 130 } 131 132 if (! isset($module_params['params']['sort_mode'])) { 133 $sort_mode = 'login_asc'; 134 } else { 135 $sort_mode = $module_params['params']['sort_mode']; 136 } 137 138 $users = $userlib->get_users(0, -1, $sort_mode, '', ! empty($module_params['initial']) ? $module_params['initial'] : '', isset($module_params['groups']) ? true : false, $group); 139 if (isset($_REQUEST["realName"]) && ($prefs['auth_ldap_nameattr'] == '' || $prefs['auth_method'] != 'ldap')) { 140 $tikilib->set_user_preference($userwatch, 'realName', $_REQUEST["realName"]); 141 if ($prefs['user_show_realnames'] == 'y') { 142 $cachelib = TikiLib::lib('cache'); 143 $cachelib->invalidate('userlink.' . $user . '0'); 144 } 145 } 146 147 for ($i = 0; $i < $users['cant']; ++$i) { 148 $my_user = $users['data'][$i]['user']; 149 if (isset($module_params['params']['realName']) && $module_params['params']['realName'] == 'y') { 150 $users['data'][$i]['realName'] = $tikilib->get_user_preference($my_user, 'realName', ''); 151 } 152 if (isset($module_params['params']['avatar']) && $module_params['params']['avatar'] == 'y') { 153 $users['data'][$i]['avatar'] = $tikilib->get_user_avatar($my_user); 154 } 155 if ((isset($module_params['params']['realName']) && $module_params['params']['realName'] == 'y') 156 || (isset($module_params['params']['login']) && $module_params['params']['login'] == 'y')) { 157 $users['data'][$i]['info_public'] = $tikilib->get_user_preference($my_user, 'user_information', 'public') != 'private' ? 'y' : 'n'; 158 } 159 if (isset($module_params['params']['userPage']) && $module_params['params']['userPage'] == 'y') { 160 global $feature_wiki_userpage; 161 if ($prefs['feature_wiki_userpage'] == 'y' or $feature_wiki_userpage == 'y') { 162 if (! isset($prefs['feature_wiki_userpage_prefix'])) {//trick compat 1.9, 1.10 163 global $feature_wiki_userpage_prefix; 164 $pre = $feature_wiki_userpage_prefix; 165 } else { 166 $pre = $prefs['feature_wiki_userpage_prefix']; 167 } 168 if ($tikilib->page_exists($pre . $my_user)) { 169 $users['data'][$i]['userPage'] = $pre . $my_user; 170 } 171 } 172 } 173 } 174 if (isset($module_params['params']['log']) && $module_params['params']['log'] == 'y' && $prefs['feature_actionlog'] != 'y') { 175 $module_params['params']['log'] = 'n'; 176 } 177 $smarty->assign_by_ref('users', $users['data']); 178 $smarty->assign_by_ref('module_params_users_list', $module_params['params']); 179} 180