diff -u user_reference/user_reference.module user_reference/user_reference.module --- user_reference/user_reference.module 26 Dec 2010 08:28:51 -0000 +++ user_reference/user_reference.module @@ -438,26 +438,26 @@ */ function _user_reference_potential_references_standard($field, $string = '', $match = 'contains', $ids = array(), $limit = NULL) { // Avoid useless work. - // @todo Do not diplay widget if settings are empty. $filter_roles = array_filter($field['settings']['referenceable_roles']); $filter_status = array_filter($field['settings']['referenceable_status']); if (!count($filter_status) && !count($filter_roles)) { return array(); } - $query = db_select('users', 'u'); - $query->fields('u', array('uid', 'name', 'status')); - $query->addMetaData('id', ' _user_reference_potential_references_standard'); + $query = db_select('users', 'u') + ->addMetaData('id', ' _user_reference_potential_references_standard') + // Select the whole record, so that format_username() has enough + // information. + ->fields('u'); - // Enable this filter only if any statuses checked. - if ($filter_status) { + // Enable this filter only if any statuses checked (and not both). + if (count($filter_status) == 1) { $query->condition('u.status', array_keys($filter_status), 'IN'); } // Skip filter when "authenticated user" choosen. if ($filter_roles && !isset($filter_roles[DRUPAL_AUTHENTICATED_RID])) { $query->join('users_roles', 'r', 'u.uid = r.uid'); - $query->addField('r', 'rid'); $query->condition('r.rid', array_keys($filter_roles), 'IN'); } @@ -482,19 +482,17 @@ $query->condition('u.uid', $ids, 'IN'); } - $query->orderBy('u.name'); + // Explicitly exclude the anonymous user. + $query->condition('u.uid', 0, '<>'); if ($limit) { $query->range(0, $limit); } - + $query->orderBy('u.name'); + $result = $query->execute()->fetchAll(); $references = array(); foreach ($result as $account) { - if ($account->uid == 0) { - // Skip Anonymous user. - continue; - } $references[$account->uid] = array( 'title' => $account->name, 'rendered' => check_plain(format_username($account)),