From f96caf164073875717e93df6701aae354d7f7b97 Mon Sep 17 00:00:00 2001 From: soufiane Date: Thu, 4 Jan 2024 15:14:10 +0100 Subject: [PATCH] wait #6482 --- .../FluidbookPublication/LinksOperation.php | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index cca8fdfae..4e5a2156c 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -303,24 +303,33 @@ trait LinksOperation $userId = backpack_user()->id; $unload = $request->unload; + /*cache()->forget('queue_editor'.$fluidbookId);*/ + /*cache()->forget('connexion'.$fluidbookId);*/ + /* Reset * */ if(!cache()->has('queue_editor'.$fluidbookId)) { - $entries = [$token]; + $entries = [["token" => $token, "date" => now()]]; cache(['queue_editor'.$fluidbookId => $entries]); } else { $queueEditor = cache()->get('queue_editor'.$fluidbookId); // on récupère la liste des onglets - $key = array_search($token, $queueEditor); + $key = key(array_filter($queueEditor, function($n) use($token) { return $n["token"] === $token; })); - if ((int)$unload === 1) { + if ((int)$unload === 1 && $key) { unset($queueEditor[$key]); // on supprime l'onglet de la liste au chargement ou à sa fermeture } if(!$key) { - $queueEditor[] = $token; + $queueEditor[] = ["token" => $token, "date" => now()]; + } else { + $queueEditor[$key]["date"] = now(); } - $queueEditor = array_unique($queueEditor); + $queueEditor = array_filter($queueEditor, function($n) { + return strtotime($n["date"]) > strtotime(now())-20; + }); + + //$queueEditor = array_unique($queueEditor); cache(['queue_editor'.$fluidbookId => $queueEditor]); } @@ -330,9 +339,9 @@ trait LinksOperation // réinitialiser la connexion courante quand on clique sur "déconnecter l'utilisateur" if($request->clear) { - $key = array_search($token, $queueEditor); + $key = key(array_filter($queueEditor, function($n) use($token) { return $n["token"] === $token; })); $queueEditor = array_slice($queueEditor, $key, 1); - $queueEditor = array_merge([$token],$queueEditor); + $queueEditor = array_merge($queueEditor[$key],$queueEditor); cache(['queue_editor'.$fluidbookId => $queueEditor]); cache(['connexion' . $fluidbookId => ['id' => $userId, 'token' => $token, 'f_id' => $fluidbookId]]); } @@ -351,7 +360,7 @@ trait LinksOperation $user = User::withoutGlobalScopes()->find($connexionExist['id']); $user = $user->firstname.' '.$user->lastname; - if(current($queueEditor) !== $token) { + if(current($queueEditor)["token"] !== $token) { return json_encode(["queueEditor"=>$queueEditor,"token"=>$token,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]); } else { return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",$connexionExist]); -- 2.39.5