addField('wau', 'uid'); $sub_query->condition('access_scheme', $access_type); $sub_query->condition('access_id', $access_id); $query = db_select('users', 'u'); $query->addField('u', 'uid'); $query->condition('u.name', db_like($string) . '%', 'LIKE'); $query->condition('u.uid', $sub_query, 'NOT IN'); $query->range(0, 20); $query->addTag('user_autocomplete'); // If all authorized users are not allowed, JOIN to user_roles. if (!isset($cache['rids'][DRUPAL_AUTHENTICATED_RID])) { $query->join('users_roles', 'ur', 'u.uid = ur.uid'); $query->condition('ur.rid', array_keys($cache['rids']), 'IN'); } $uids = $query->execute()->fetchCol(); $accounts = user_load_multiple($uids); foreach ($accounts as $account) { $matches[$account->name] = check_plain(format_username($account)); } } // Yes, this will make Crell cry, but tests are tests. if ($test_mode) { return $matches; } drupal_json_output($matches); }