Есть ли функция API для проверки, зарегистрирован ли конкретный пользователь?

#drupal #drupal-6 #drupal-modules

#drupal #drupal-6 #drupal-модули

Вопрос:

Существует ли функция API Drupal, которая принимает идентификатор пользователя и возвращает, зарегистрирован ли этот пользователь в данный момент?

т.е. есть ли такая функция, как user_is_logged_in($some_uid) ?

Ответ №1:

Вот функция, которую я позаимствовал / изменил из модуля advanced forum, чтобы проверить, подключен ли конкретный пользователь к сети. Он проверяет таблицу сеансов для пользователей в течение определенного интервала времени. Добавьте его в пользовательский модуль и вызывайте по мере необходимости:

 function MODULENAME_check_user_online($uid) {

  $interval = REQUEST_TIME - variable_get('user_block_seconds_online', 900);

  $query = db_select("users", "u")->distinct()->fields("u", array("uid", "name"));
  $s_alias = $query->join("sessions", "s", "u.uid = s.uid");

  $query->addExpression("MAX({$s_alias}.timestamp)", "maxtime");
  $query
      ->condition("{$s_alias}.timestamp", $interval, ">=")
      ->condition("{$s_alias}.uid", $uid, "=")
      ->groupBy("u.uid, u.name")
      ->orderBy("maxtime", "DESC");

  $check_user_logged_in = $query->execute();
  if ($account = $check_user_logged_in->fetchObject()) {
    return TRUE;
  }
  return FALSE;

}
 

Ответ №2:

Нет, если вы хотите, вам придется написать его самостоятельно. Взгляните на таблицу сеансов в базе данных.

Ответ №3:

Проверьте API пользовательского модуля здесь:
http://api.drupal.org/api/drupal/modules—user—user.module/6

более конкретно
http://api.drupal.org/api/drupal/modules—user—user.module/function/user_is_logged_in/6

Комментарии:

1. user_is_logged_in() проверяет только глобального (текущего) пользователя. Я хотел бы проверить с помощью uid параметра as.