Существует ли функция API для проверки того, зарегистрирован ли конкретный пользователь? - PullRequest
0 голосов
/ 31 октября 2011

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

т.е.

Ответы [ 3 ]

2 голосов
/ 22 декабря 2012

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

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;

}
1 голос
/ 01 ноября 2011

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

0 голосов
/ 31 октября 2011

Проверьте 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

...