是否有Drupal API函数接受用户ID并返回该用户当前是否已登录?
即。是否有像user_is_logged_in($some_uid)
这样的函数?
答案 0 :(得分:2)
这是我从高级论坛模块借用/修改的功能,用于检查特定用户是否在线。它在特定时间间隔内检查会话表中的用户。将其添加到自定义模块并根据需要调用:
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 :(得分:1)
不,没有,如果你想要一个,你必须自己写。看一下数据库中的会话表。
答案 2 :(得分:-1)