$fluidbookId = $request->id;
$token = $request->token;
$userId = backpack_user()->id;
- $counter = $request->counter;
- $tabClosed = $request->tabClosed;
-
- $connexionMultipleExist = cache()->get('connexion_multiple'.$fluidbookId);
-
- /*cache()->forget('connexion'.$fluidbookId);
- cache()->forget('connexion_multiple'.$fluidbookId);*/
-
- if(!$connexionMultipleExist) {
- cache(['connexion_multiple' . $fluidbookId => 0]);
- }
-
- cache()->increment('connexion_multiple'.$fluidbookId,$counter);
-
- if(intval($tabClosed) > 0) {
- cache()->decrement('connexion_multiple'.$fluidbookId,1);
+ $unload = $request->unload;
+ /*cache()->forget('queue_editor'.$fluidbookId);
+ /* Reset
+ *
+ */
+
+ if(!cache()->has('queue_editor'.$fluidbookId)) {
+ $entries = [$token => 'active'];
+ cache(['queue_editor'.$fluidbookId => $entries]);
+ } else {
+ $queueEditor = cache()->get('queue_editor'.$fluidbookId);
+ if(!array_key_exists($token, $queueEditor)) {
+ $queueEditor[$token] = 'is connected';
+ } elseif(intval($unload) === 1) {
+ unset($queueEditor[$token]);
+ }
+ cache(['queue_editor'.$fluidbookId => $queueEditor]);
}
$connexionExist = cache()->get('connexion'.$fluidbookId);
+ $queueEditor = cache()->get('queue_editor'.$fluidbookId);
- // réinitialiser la connexion courante quand on clique sur "éjecter l'utilisateur"
+ $firstKey = array_key_first($queueEditor);
+ $queueEditor[$firstKey] = 'active';
+ cache(['queue_editor'.$fluidbookId => $queueEditor]);
+ $queueEditor = cache()->get('queue_editor'.$fluidbookId);
+
+ // réinitialiser la connexion courante quand on clique sur "déconnecter l'utilisateur"
if($request->clear) {
cache()->forget('connexion'.$fluidbookId);
}
- if($connexionMultipleExist == 1) {
+ if(sizeof(cache()->get('queue_editor'.$fluidbookId)) === 1) {
cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]);
- return json_encode(["status"=>"available",$connexionExist]);
+ return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",$connexionExist]);
}
if($connexionExist && $fluidbookId === $connexionExist['f_id']) {
$user = User::withoutGlobalScopes()->find($connexionExist['id']);
$user = $user->firstname.' '.$user->lastname;
- if($token !== $connexionExist['token']) {
- return json_encode(["tabClosed"=>$tabClosed,"compteur"=>$connexionMultipleExist,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]);
+ if(sizeof($queueEditor) > 1) {
+ return json_encode(["queueEditor"=>$queueEditor,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]);
} else {
- return json_encode(["status"=>"available",$connexionExist]);
+ return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",$connexionExist]);
}
} else {
cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $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";
- }
+ return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",cache()->get('connexion'.$fluidbookId)]);
}
-
- $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)) {
let interval = null
let token = $("[data-token]").data("token")
- let counter = 0;
- let pageIsLoaded = sessionStorage.getItem('page_loaded');
-
- if (!pageIsLoaded || !counter) {
- counter = 0
- sessionStorage.setItem('page_loaded', true);
- }
-
- if(pageIsLoaded) {
- localStorage.setItem('tabClosed','0')
- }
-
- counter++
-
- console.log(counter)
function intervalConnection(data = {}) {
- let tabClosed = localStorage.getItem('tabClosed')
+ let unload = localStorage.getItem('unload')
+ let token_ = localStorage.getItem('token')
+
$.ajax({
method: "POST",
url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links',
- data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token, counter: counter, tabClosed: tabClosed}
+ data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token_ ?? token, unload: unload}
}).done(function (msg) {
let response = JSON.parse(msg)
-
+ console.log(response.queueEditor)
if (response.status === "unavailable" ) {
if ($("#popup-overlay").find('.popup').length === 0) {
$("#popup-overlay").addClass("show")
return true;
};
}
- counter = 0
- localStorage.setItem('tabClosed', '0');
+ localStorage.removeItem('unload');
+ localStorage.removeItem('token');
setTimeout(function () { intervalConnection(); }, 1000)
});
}
//
$(window).on("unload",function(){
clearTimeout(interval)
- localStorage.setItem('tabClosed', '1');
+ console.log("token",token)
+ localStorage.setItem('token', token)
+ localStorage.setItem('unload', '1');
})
});