diff --git a/Management/SessionsDataRetrieval.php b/Management/SessionsDataRetrieval.php index 14a018e..f761c52 100644 --- a/Management/SessionsDataRetrieval.php +++ b/Management/SessionsDataRetrieval.php @@ -184,6 +184,7 @@ private function getRelativPosition( array $user_b_values, string $direction ): int { + // Handle sorting for "Logged In" status if ($order_key === ManagementGUI::COLUMN_LOGGED_IN) { $user_a_session_active = $this->user_session_repo ->getSessionForUserId($user_a_values['usr_id']) @@ -192,7 +193,7 @@ private function getRelativPosition( ->getSessionForUserId($user_b_values['usr_id']) ->isSessionActive(); - if ($user_a_session_active === $user_b_values) { + if ($user_a_session_active === $user_b_session_active) { return 0; } @@ -204,6 +205,17 @@ private function getRelativPosition( return -1; } + // Handle sorting for IP address + if ($order_key === ManagementGUI::COLUMN_LAST_LOGIN_IP) { + $ip_a = $this->user_session_repo->getSessionForUserId($user_a_values['usr_id'])->getLoginIp(); + $ip_b = $this->user_session_repo->getSessionForUserId($user_b_values['usr_id'])->getLoginIp(); + if ($direction === 'ASC') { + return strnatcasecmp($ip_a, $ip_b); + } + return strnatcasecmp($ip_b, $ip_a); + } + + // Standard alphabetical sorting for all other basic user fields $value_a = $user_a_values[$order_key] ?? ''; $value_b = $user_b_values[$order_key] ?? ''; if ($direction === 'ASC') {