Index: user_reference/user_reference.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/references/user_reference/user_reference.module,v
retrieving revision 1.1
diff -u -p -r1.1 user_reference.module
--- user_reference/user_reference.module	6 Dec 2010 21:28:17 -0000	1.1
+++ user_reference/user_reference.module	26 Dec 2010 08:11:53 -0000
@@ -435,65 +435,64 @@ function _user_reference_potential_refer
  * List of referenceable users defined by user role and status.
  */
 function _user_reference_potential_references_standard($field, $string = '', $match = 'contains', $ids = array(), $limit = NULL) {
-  // Avoid useless work
-  if (!count($field['settings']['referenceable_status']) || !count($field['settings']['referenceable_roles'])) {
+  // 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');
-  $user_uid_alias    = $query->addField('u', 'uid');
-  $user_name_alias   = $query->addField('u', 'name');
-  $user_status_alias = $query->addField('u', 'status');
+  $query->fields('u', array('uid', 'name', 'status'));
   $query->addMetaData('id', ' _user_reference_potential_references_standard');
 
-  if (is_array($field['settings']['referenceable_status'])) {
-    $query->condition('u.status', $field['settings']['referenceable_status']);
+  // Enable this filter only if any statuses checked.
+  if ($filter_status) {
+    $query->condition('u.status', array_keys($filter_status), 'IN');
   }
 
-  if (is_array($field['settings']['referenceable_roles']) && (!in_array(DRUPAL_AUTHENTICATED_RID, $field['settings']['referenceable_roles']))) {
+  // 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', $field['settings']['referenceable_roles']);
+    $query->condition('r.rid', array_keys($filter_roles), 'IN');
   }
 
   if ($string !== '') {
     $args = array();
+    // @todo Should we display "Anonymous" user?
     switch ($match) {
       case 'contains':
-        $name_clause = 'u.name LIKE :match';
-        $args['match'] = '%' . $string . '%';
+        $query->condition('u.name', '%' . $string . '%', 'LIKE');
         break;
 
       case 'starts_with':
-        $name_clause = 'u.name LIKE :match';
-        $args['match'] = $string . '%';
+        $query->condition('u.name', $string . '%', 'LIKE');
         break;
 
       case 'equals':
       default: // no match type or incorrect match type: use "="
-        $name_clause = 'u.name = :match';
-        $args['match'] = $string;
+        $query->condition('u.name', $string, '=');
         break;
     }
-    $query->where($name_clause, $args);
   }
   elseif ($ids) {
-    $query->condition($user_uid_alias, $ids, 'IN', $ids);
+    $query->condition('u.uid', $ids, 'IN');
   }
 
-  $query
-    ->orderBy($user_name_alias);
+  $query->orderBy('u.name');
 
   if ($limit) {
     $query->range(0, $limit);
   }
 
-  $result = $query->execute();
+  $result = $query->execute()->fetchAll();
   $references = array();
-  foreach ($result->fetchAll() as $user) {
-    $references[$user->uid] = array(
-      'title'    => $user->name,
-      'rendered' => check_plain($user->name),
+  foreach ($result as $account) {
+    $references[$account->uid] = array(
+      'title'    => $account->name,
+      'rendered' => check_plain(format_username($account)),
     );
   }
   return $references;
