Init Git Prod Mars 2026
This commit is contained in:
commit
d81efe93b1
362 files changed
+86627
No files matched your search
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* Retourne le room_slug pour un RDV.
|
||||
* - Si existe en BD -> le retourne
|
||||
* - Sinon, ne crée QUE si $allowCreate = true (praticien + start=1)
|
||||
* Table attendue: visio_sessions (id, rendez_vous_id UNIQUE, room_slug, created_at)
|
||||
*/
|
||||
|
||||
function visio_room_for_rdv(PDO $pdo, int $rdvId, string $secret, bool $allowCreate): ?string
|
||||
{
|
||||
// 1) Déjà créée ?
|
||||
$sel = $pdo->prepare("SELECT room_slug FROM visio_sessions WHERE rendez_vous_id = ? LIMIT 1");
|
||||
$sel->execute([$rdvId]);
|
||||
$row = $sel->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row && !empty($row['room_slug'])) {
|
||||
return $row['room_slug'];
|
||||
}
|
||||
|
||||
if (!$allowCreate) {
|
||||
return null; // patient avant ouverture par praticien
|
||||
}
|
||||
|
||||
// 2) Créer un slug non prévisible
|
||||
// -> stable pour la séance, mais non devinable
|
||||
$raw = $rdvId . '|' . $secret . '|' . random_bytes(8);
|
||||
$slug = 'uslugi-' . substr(hash('sha256', $raw), 0, 20);
|
||||
|
||||
// 3) Insérer (idempotent via UNIQUE(rendez_vous_id))
|
||||
$ins = $pdo->prepare("
|
||||
INSERT INTO visio_sessions (rendez_vous_id, room_slug)
|
||||
VALUES (:r, :s)
|
||||
ON DUPLICATE KEY UPDATE room_slug = VALUES(room_slug)
|
||||
");
|
||||
$ins->execute(['r' => $rdvId, 's' => $slug]);
|
||||
|
||||
// 4) Relire pour retourner la valeur
|
||||
$sel->execute([$rdvId]);
|
||||
$row = $sel->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
return $row['room_slug'] ?? null;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user