public static function onLogin(GWF_User $user, $bind_to_ip = true, $with_hooks = true) { $userid = $user->getID(); # Keep only N sessions for one user if (false === ($result = self::$SESSION->selectFirst('sess_id min', "sess_user={$userid}", 'sess_id DESC', NULL, self::ARRAY_N, GWF_SESS_PER_USER - 1))) { $cut_id = '1'; #return false; } else { $cut_id = $result[0]; } if (false === self::$SESSION->deleteWhere("sess_user={$userid} AND sess_id<{$cut_id}")) { GWF_HTML::err(ERR_DATABASE, array(__FILE__, __LINE__)); return false; } # Update session if (!self::$SESSION->saveVars(array('sess_user' => $userid, 'sess_ip' => $bind_to_ip ? GWF_IP6::getIP(GWF_IP_EXACT) : null))) { return false; } self::$SESSION->setVar('sess_user', $user); # Set cookies self::setCookies(self::$SESSION->getVar('sess_id'), $userid, self::$SESSION->getVar('sess_sid')); self::$USER = $user; # Call hooks return $with_hooks ? GWF_Hook::call(GWF_Hook::LOGIN, $user) : true; }