Same name and namespace in other branches
  1. 4.6.x modules/user.module \user_search()
  2. 4.7.x modules/user.module \user_search()
  3. 5.x modules/user/user.module \user_search()

Implementation of hook_search().

File

modules/user/user.module, line 598
Enables the user registration and login system.

Code

function user_search($op = 'search', $keys = NULL, $skip_access_check = FALSE) {
  switch ($op) {
    case 'name':
      if ($skip_access_check || user_access('access user profiles')) {
        return t('Users');
      }
    case 'search':
      if (user_access('access user profiles')) {
        $find = array();

        // Replace wildcards with MySQL/PostgreSQL wildcards.
        $keys = preg_replace('!\\*+!', '%', $keys);
        if (user_access('administer users')) {

          // Administrators can also search in the otherwise private email
          // field, and they don't need to be restricted to only active users.
          $result = pager_query("SELECT name, uid, mail FROM {users} WHERE LOWER(name) LIKE LOWER('%%%s%%') OR LOWER(mail) LIKE LOWER('%%%s%%')", 15, 0, NULL, $keys, $keys);
          while ($account = db_fetch_object($result)) {
            $find[] = array(
              'title' => $account->name . ' (' . $account->mail . ')',
              'link' => url('user/' . $account->uid, array(
                'absolute' => TRUE,
              )),
            );
          }
        }
        else {

          // Regular users can only search via user names, and we do not show
          // them blocked accounts.
          $result = pager_query("SELECT name, uid FROM {users} WHERE status = 1 AND LOWER(name) LIKE LOWER('%%%s%%')", 15, 0, NULL, $keys);
          while ($account = db_fetch_object($result)) {
            $find[] = array(
              'title' => $account->name,
              'link' => url('user/' . $account->uid, array(
                'absolute' => TRUE,
              )),
            );
          }
        }
        return $find;
      }
  }
}