- //user searchable selector - get all users (admin and guest included)
- //user must be confirmed, not deleted, not suspended, not guest
- $sql = "SELECT u.id, u.firstname, u.lastname
- FROM {user} u
- WHERE u.deleted = 0 AND u.confirmed = 1 AND u.suspended = 0 AND u.id != ?
- ORDER BY u.lastname";
- $users = $DB->get_records_sql($sql, array($CFG->siteguest));
- $options = array();
- foreach ($users as $userid => $user) {
- $options[$userid] = $user->firstname . " " . $user->lastname;
+
+ //check if the number of user is reasonable to be displayed in a select box
+ $usertotal = $DB->count_records('user',
+ array('deleted' => 0, 'suspended' => 0, 'confirmed' => 1));
+
+ if ($usertotal < 500) {
+ //user searchable selector - get all users (admin and guest included)
+ //user must be confirmed, not deleted, not suspended, not guest
+ $sql = "SELECT u.id, u.firstname, u.lastname
+ FROM {user} u
+ WHERE u.deleted = 0 AND u.confirmed = 1 AND u.suspended = 0 AND u.id != ?
+ ORDER BY u.lastname";
+ $users = $DB->get_records_sql($sql, array($CFG->siteguest));
+
+ $options = array();
+ foreach ($users as $userid => $user) {
+ $options[$userid] = $user->firstname . " " . $user->lastname;
+ }
+ $mform->addElement('searchableselector', 'user', get_string('user'), $options);
+ } else {
+ //simple text box for username or user id (if two username exists, a form error is displayed)
+ $mform->addElement('text', 'user', get_string('usernameorid', 'webservice'));