]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6482
authorsoufiane <soufiane@cubedesigners.com>
Thu, 4 Jan 2024 14:14:10 +0000 (15:14 +0100)
committersoufiane <soufiane@cubedesigners.com>
Thu, 4 Jan 2024 14:14:10 +0000 (15:14 +0100)
app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php

index cca8fdfae3e369563a92ee5c351ec0e21f07fde3..4e5a2156c36eaabe8f11dd634d22c58812f85070 100644 (file)
@@ -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]);