2011-10-31 45 views

回答

1

沒有沒有,如果你想要一個你將不得不自己編寫。查看數據庫中的會話表。

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; 

}