diff --git a/GameEngine/Admin/Mods/delUser.php b/GameEngine/Admin/Mods/delUser.php index 09eb22fe..2055a845 100644 --- a/GameEngine/Admin/Mods/delUser.php +++ b/GameEngine/Admin/Mods/delUser.php @@ -116,7 +116,8 @@ $database->query("DELETE FROM " . TB_PREFIX . "ndata WHERE uid = $uid"); $database->query("DELETE FROM " . TB_PREFIX . "medal WHERE userid = $uid"); $database->query("DELETE FROM " . TB_PREFIX . "gold_fin_log WHERE uid = $uid"); $database->query("DELETE FROM " . TB_PREFIX . "links WHERE userid = $uid"); -$database->query("DELETE FROM " . TB_PREFIX . "active WHERE username = '$username'"); +// Tabela "active" a fost eliminata; ultima activitate sta in users.timestamp, +// iar randul utilizatorului se sterge oricum mai jos. $database->query("DELETE FROM " . TB_PREFIX . "online WHERE uid = $uid"); $database->query("DELETE FROM " . TB_PREFIX . "chat WHERE id_user = $uid"); $database->query("DELETE FROM " . TB_PREFIX . "login_log WHERE uid = $uid"); diff --git a/GameEngine/Database/DatabaseUserQueries.php b/GameEngine/Database/DatabaseUserQueries.php index 4cc6bad6..8c08d836 100644 --- a/GameEngine/Database/DatabaseUserQueries.php +++ b/GameEngine/Database/DatabaseUserQueries.php @@ -450,16 +450,33 @@ trait DatabaseUserQueries { return self::$fieldsCache[$ref.$mode]; } + /** + * Marcheaza intrarea/iesirea unui jucator. + * + * Tabela separata "active" a fost eliminata: dubla informatia din + * users.timestamp, care e oricum sursa pentru lista de jucatori online, + * harta de caldura si stergerea conturilor inactive. + * + * Metoda ramane, cu apelantii ei neschimbati, dar acum lucreaza pe + * users.timestamp. La delogare (mode = 1) punem timestamp-ul in trecut, ca + * jucatorul sa dispara imediat din lista de online, fara sa mai astepte + * fereastra de 5 minute. + * + * @param string $username + * @param int $mode 0 = intra in joc, 1 = iese + */ function activeModify($username, $mode) { - list($username, $mode) = $this->escape_input($username, $mode); + list($username) = $this->escape_input($username); - $time = time(); - if(!$mode) { - $q = "INSERT into " . TB_PREFIX . "active VALUES ('$username',$time)"; - } else { - $q = "DELETE FROM " . TB_PREFIX . "active where username = '$username'"; - } - return mysqli_query($this->dblink,$q); + $mode = (int) $mode; + + // la iesire il scoatem din fereastra de 5 minute a listei de online + $stamp = $mode ? (time() - 600) : time(); + + $q = "UPDATE " . TB_PREFIX . "users SET timestamp = " . $stamp + . " WHERE username = '" . $username . "' LIMIT 1"; + + return mysqli_query($this->dblink, $q); } function updateActiveUser($username, $time) {