From 77419ee70981894effaf89914b729351b1eb6456 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Thu, 27 Jun 2019 09:05:22 +0200 Subject: [PATCH 1/3] Modified jquery window function --- pandora_console/operation/users/webchat.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandora_console/operation/users/webchat.php b/pandora_console/operation/users/webchat.php index db97864863..3de302b0be 100644 --- a/pandora_console/operation/users/webchat.php +++ b/pandora_console/operation/users/webchat.php @@ -120,11 +120,10 @@ echo "
".html_print_button( init_webchat(); }); - - $(window).unload(function () { + $(window).on("beforeunload",function () { exit_webchat(); }); - + function init_webchat() { send_login_message(); long_polling_check_messages(); @@ -305,6 +304,7 @@ echo "
".html_print_button( data: parameters, dataType: "json", success: function(data) { + console.log(data); } }); } From 0e1ad434222ca243a26b05a48c4e0433b9cdd666 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Thu, 27 Jun 2019 09:33:31 +0200 Subject: [PATCH 2/3] Update webchat.php. Forgotten console log --- pandora_console/operation/users/webchat.php | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora_console/operation/users/webchat.php b/pandora_console/operation/users/webchat.php index 3de302b0be..4492c9703c 100644 --- a/pandora_console/operation/users/webchat.php +++ b/pandora_console/operation/users/webchat.php @@ -304,7 +304,6 @@ echo "
".html_print_button( data: parameters, dataType: "json", success: function(data) { - console.log(data); } }); } From b7c662d3f9e952062f71f9c78cbd0c3a0725c4f4 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Tue, 16 Jul 2019 17:55:44 +0200 Subject: [PATCH 3/3] Added session control for unexpected or forced logouts --- pandora_console/include/functions_users.php | 63 ++++++++++++++------- pandora_console/operation/users/webchat.php | 1 + 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/pandora_console/include/functions_users.php b/pandora_console/include/functions_users.php index 3b4af210d0..af733a2a8e 100755 --- a/pandora_console/include/functions_users.php +++ b/pandora_console/include/functions_users.php @@ -617,16 +617,21 @@ function users_save_login() $user_list = json_decode($user_list_json, true); if (empty($user_list)) { - $user_list = []; - } - - if (isset($user_list[$config['id_user']])) { - $user_list[$config['id_user']]['count']++; - } else { $user_list[$config['id_user']] = [ 'name' => $user['fullname'], 'count' => 1, ]; + } else if (isset($user_list[$config['id_user']])) { + $user_list[$config['id_user']] = [ + 'name' => $user['fullname'], + 'count' => $user_list[$config['id_user']]['count'], + ]; + } else { + $users_count = count($user_list); + $user_list[$config['id_user']] = [ + 'name' => $user['fullname'], + 'count' => ++$users_count, + ]; } // Clean the file @@ -704,17 +709,7 @@ function users_save_logout($user=false, $delete=false) $user_list = []; } - if ($delete) { - unset($user_list[$user['id_user']]); - } else { - if (isset($user_list[$config['id_user']])) { - $user_list[$config['id_user']]['count']--; - } - - if ($user_list[$config['id_user']]['count'] <= 0) { - unset($user_list[$user['id_user']]); - } - } + unset($user_list[$user['id_user']]); // Clean the file ftruncate($fp_user_list, 0); @@ -1052,6 +1047,13 @@ function users_check_users() 'users' => '', ]; + $users_with_session = db_get_all_rows_sql('SELECT tsessions_php.data FROM pandora.tsessions_php;'); + $users_logged_now = []; + foreach ($users_with_session as $user_with_session) { + $tmp_id_user = explode('"', $user_with_session['data']); + array_push($users_logged_now, $tmp_id_user[1]); + } + $file_global_user_list = $config['attachment_store'].'/pandora_chat.user_list.json.txt'; // First lock the file @@ -1082,13 +1084,32 @@ function users_check_users() $user_list = []; } - fclose($fp_user_list); - + // Compare both user list. Meanwhile the user from chat file have an active + // session, his continue in the list of active chat users $user_name_list = []; - foreach ($user_list as $user) { - $user_name_list[] = $user['name']; + foreach ($user_list as $key => $user) { + if (in_array($key, $users_logged_now)) { + array_push($user_name_list, $user['name']); + } else { + unset($user_list[$key]); + } } + // Clean the file + ftruncate($fp_user_list, 0); + + // Update the file with the correct list of users + $status = fwrite($fp_user_list, json_encode($user_list)); + + /* + if ($status === false) { + fclose($fp_user_list); + + return; + } */ + // Closing the resource + fclose($fp_user_list); + $return['correct'] = true; $return['users'] = implode('
', $user_name_list); echo json_encode($return); diff --git a/pandora_console/operation/users/webchat.php b/pandora_console/operation/users/webchat.php index 4492c9703c..68152a0cd5 100644 --- a/pandora_console/operation/users/webchat.php +++ b/pandora_console/operation/users/webchat.php @@ -115,6 +115,7 @@ echo "
".html_print_button( //Enter key. if (e.keyCode == 13) { send_message(); + check_users(); } });