$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)) {
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")
};
}
- tabClosed = 0
+ /*tabClosed = 0
tabOpen = 0
- localStorage.setItem("tabClosed","0")
+ localStorage.setItem("tabClosed","0")*/
setTimeout(function () { intervalConnection(); }, 1000)
});
}
//
$("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) {