loadPlugin('smarty_modifier_username'); static $iUserSelector = 0; $iUserSelector++; $defaults = [ 'user' => $user, 'group' => 'all', 'groupIds' => '', 'contact' => 'false', 'name' => 'user', 'id' => 'user_selector_' . $iUserSelector, 'multiple' => 'false', 'mustmatch' => 'true', 'style' => '' , 'editable' => $tiki_p_admin, 'user_selector_threshold' => $prefs['user_selector_threshold'], 'allowNone' => 'n', 'noneLabel' => 'None', 'realnames' => 'y', 'class' => 'form-control', ]; $params = array_merge($defaults, $params); if (isset($params['size'])) { $sz = ' size="' . $params['size'] . '"'; } else { $sz = ''; } if ($params['editable'] != 'y') { $ed = ' disabled="disabled"'; } else { $ed = ''; } if ($params['multiple'] === 'true') { $mt = ' multiple="multiple"'; } else { $mt = ''; } if (! empty($params['class'])) { $class = ' class="' . $params['class'] . '"'; } else { $class = ''; } $groupNames = []; if (is_array($params['groupIds'])) { foreach ($params['groupIds'] as $k => $groupId) { if ($groupId <= 0) { unset($params['groupIds'][$k]); } } if (! empty($params['groupIds'])) { $groupIds = $params['groupIds']; } } elseif (! empty($params['groupIds'])) { $groupIds = explode('|', $params['groupIds']); } if (! empty($groupIds)) { foreach ($groupIds as $groupId) { $group_info = $userlib->get_groupId_info($groupId); $groupNames[] = $group_info['groupName']; } } $users = []; $ret = ''; if (! empty($groupNames)) { $ucant = $userlib->count_users_consolidated($groupNames); } else { $ucant = $userlib->count_users(''); } if ($prefs['feature_jquery_autocomplete'] == 'y' && ($ucant > $prefs['user_selector_threshold'] or $ucant > $params['user_selector_threshold'])) { $ret .= ''; if (($params['contact'] == 'true')) { $mode = ('usersandcontacts'); } elseif ($prefs['user_show_realnames'] === 'y' && $params['realnames'] === 'y') { $mode = ('userrealname'); } else { $mode = ('username'); } $headerlib->add_jq_onready('$("#' . $params['id'] . '").tiki("autocomplete", "' . $mode . '", {mustMatch: ' . $params['mustmatch'] . ', multiple: ' . $params['multiple'] . ' });'); } else { // get the user list if ($params['group'] !== 'all') { $groupNames[] = $params['group']; } // NOTE: if groupIds are present, the list of users is limited to those groups regardless of group == 'all' if (! empty($groupNames)) { $groupNames = array_unique($groupNames); $usrs = []; foreach ($groupNames as $groupName) { $group_users = $userlib->get_group_users($groupName); $usrs = array_merge($usrs, $group_users); } $usrs = array_unique($usrs); foreach ($usrs as $usr) { $users["$usr"] = $params['realnames'] === 'y' ? smarty_modifier_username($usr) : $usr; } } if ($params['group'] == 'all' && empty($params['groupIds'])) { $usrs = $tikilib->list_users(0, -1, 'login_asc'); foreach ($usrs['data'] as $usr) { $users["{$usr['login']}"] = $params['realnames'] === 'y' ? smarty_modifier_username($usr['login']) : $usr['login']; } } if ($params['realnames'] === 'y') { $dupes = []; foreach (array_count_values($users) as $usr => $c) { if ($c > 1) { $dupes[] = $usr; } } foreach ($users as $usr => & $uname) { if (in_array($uname, $dupes)) { if ($prefs['login_is_email'] === 'y' && $prefs['login_is_email_obscure'] === 'y') { $added = ' (' . substr($usr, strpos($usr, '@')) . ')'; } else { $added = " ($usr)"; } $uname .= $added; } } } asort($users, SORT_NATURAL | SORT_FLAG_CASE); if ($params['multiple'] === 'true' && $params['allowNone'] === 'y') { $ret .= ''; } $ret .= ''; } return $ret; }