From: soufiane Date: Wed, 20 Dec 2023 14:00:44 +0000 (+0100) Subject: wait #6482 correctif connexion multiple X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=aa38fe55118490eb88102abcd8fea67a5566f6e3;p=fluidbook-toolbox.git wait #6482 correctif connexion multiple --- diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index d409edb6e..6826429ba 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -301,43 +301,54 @@ trait LinksOperation $fluidbookId = $request->id; $token = $request->token; $userId = backpack_user()->id; + $compteur = $request->compteur; - if(cache()->get('connexion_multiple'.$fluidbookId) !== null) { - if(cache()->has('connexion_multiple'.$fluidbookId) && intval($request->tabOpen) > 0) { - cache()->increment('connexion_multiple'.$fluidbookId, 1); - }elseif(cache()->has('connexion_multiple'.$fluidbookId) && intval($request->tabClosed) > 0) { - cache()->decrement('connexion_multiple'.$fluidbookId, 1); - } - }else { - cache(['connexion_multiple'.$fluidbookId => intval($request->tabOpen)]); - } + cache(['connexion_multiple'.$fluidbookId => intval($compteur)]); + + $connexionExist = cache()->get('connexion'.$fluidbookId); + $connexionMultipleExist = cache()->get('connexion_multiple'.$fluidbookId); // réinitialiser la connexion courante quand on clique sur "éjecter l'utilisateur" if($request->clear) { cache()->forget('connexion'.$fluidbookId); } - $connexionExist = cache()->get('connexion'.$fluidbookId); - $connexionMultipleExist = cache()->get('connexion_multiple'.$fluidbookId); - if($connexionExist && $fluidbookId === $connexionExist['f_id']) { $user = User::withoutGlobalScopes()->find($connexionExist['id']); $user = $user->firstname.' '.$user->lastname; - if($userId != $connexionExist['id'] || ($connexionMultipleExist > 1 && $token !== $connexionExist['token'])) { - return json_encode(["status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]); + if($userId != $connexionExist['id'] || ($token !== $connexionExist['token'] && intval($connexionMultipleExist) > 1) ) { + return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]); } else { - return json_encode(["status"=>"available",$connexionExist]); + return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"available",$connexionExist]); } } else { - if($token === null) { - $token = Str::random(10); - } cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]); - return json_encode(["status"=>"available",cache()->get('connexion'.$fluidbookId)]); + return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"available",cache()->get('connexion'.$fluidbookId)]); } } + public function f_($a) { + $data = cache()->get('c_') ?? []; + $f_id = $a['f_id']; + $user_id = $a['id']; + $user_token = $a['token']; + + if(array_key_exists($f_id, $data)) { + $test = array_filter($data[$f_id], function($n) use($user_token) { return $n['token'] === $user_token; }); + if($test) { + return "user exist"; + } + } + + $data[$f_id][] = $a; + cache(['c_' => $data]); + } + + public function get_f($f_id) { + return cache()->get('c_')[$f_id]; + } + protected function fixDriftedLinks($fluidbook_id) { if (!FluidbookPublication::hasPermission($fluidbook_id)) { diff --git a/resources/linkeditor/js/linkeditor.js b/resources/linkeditor/js/linkeditor.js index be2ce4284..e6e9161ca 100644 --- a/resources/linkeditor/js/linkeditor.js +++ b/resources/linkeditor/js/linkeditor.js @@ -579,18 +579,42 @@ $(function () { let tabClosed = 0 let tabOpen = 1 let interval = null + let token = $("[data-token]").data("token") + + // Vérifie si la variable "compteur" existe dans localStorage + let compteur = localStorage.getItem('compteur'); + + + // Vérifie si la page a déjà été chargée dans cet onglet + let pageDejaChargee = sessionStorage.getItem('page_chargee'); + + // Si la page n'a pas encore été chargée, ou si "compteur" n'existe pas, initialise le compteur à 0 + if (!pageDejaChargee || !compteur) { + compteur = 0; + + // Indique que la page a été chargée dans cet onglet + sessionStorage.setItem('page_chargee', true); + } + + // Incrémente le compteur à chaque ouverture d'un nouvel onglet + compteur++; + + // Stocke la nouvelle valeur du compteur dans localStorage + localStorage.setItem('compteur', compteur.toString()); function intervalConnection(data = {}) { - tabClosed = localStorage.getItem("tabClosed") + let compteur = localStorage.getItem('compteur'); + if (!sessionStorage.getItem('token')) { + sessionStorage.setItem('token', token); + } $.ajax({ method: "POST", url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links', - data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: $("[data-token]").data("token"), tabClosed: tabClosed, tabOpen: tabOpen} + data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token, compteur: compteur} }).done(function (msg) { - console.log("msg",msg) let response = JSON.parse(msg) - if (response.status === "unavailable") { + if (response.status === "unavailable" ) { if ($("#popup-overlay").find('.popup').length === 0) { $("#popup-overlay").addClass("show") @@ -618,9 +642,9 @@ $(function () { }; } - tabClosed = 0 + /*tabClosed = 0 tabOpen = 0 - localStorage.setItem("tabClosed","0") + localStorage.setItem("tabClosed","0")*/ setTimeout(function () { intervalConnection(); }, 1000) }); } @@ -629,15 +653,15 @@ $(function () { // $("body").on("click", "#connectTo", function(e) { e.preventDefault() - intervalConnection({id:FLUIDBOOK_DATA.id,token:$("[data-token]").data("token"),clear:true}); + intervalConnection({id:FLUIDBOOK_DATA.id,token:token,clear:true}); }) // $(window).on("unload",function(){ clearTimeout(interval) - localStorage.setItem('tabClosed', "1") + compteur-- + localStorage.setItem('compteur', compteur.toString()); }) - }); (function (old) {