From 8ee3440f204dfc6532a49a05719ba37a8c4df359 Mon Sep 17 00:00:00 2001 From: polo Date: Sat, 21 Jun 2025 01:44:16 +0200 Subject: =?UTF-8?q?=C3=A9changes=20client/serveur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/calendar.php | 99 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/controller/calendar.php (limited to 'src/controller') diff --git a/src/controller/calendar.php b/src/controller/calendar.php new file mode 100644 index 0000000..ab2832e --- /dev/null +++ b/src/controller/calendar.php @@ -0,0 +1,99 @@ +setTimezone(new DateTimeZone('UTC')); + $end->setTimezone(new DateTimeZone('UTC')); + + // recherche des évènement en BDD avec ceci: + // WHERE end >= :start AND start <= :end + // on prend les évènements se finissant après le début + // ou commençant avant la fin de la fourchette + + // affichage format ISO à l'heure UTC + //$date->format('Y-m-d\TH:i:s\Z'); + + // chatgpt suggère l'utilisation d'un DTO => une classe de données simple et tout "public" + // => pour des évènements obtenables autant depuis la BDD que de fichiers .ics par exemple + + $events = [ + [ + 'id' => 1, + 'title' => 'Évènement1', + 'start' => '2025-06-03T05:00:00Z', // Z indique que l'heure est en UTC + 'end' => '2025-06-03T09:00:00Z', + 'allDay' => false, + 'color' => '#ffa500', // couleur hexa, éviter les couleurs CSS qui ne fonctionnent pas dans value="" en HTML + //'url' => 'https://dev.nageurs-bigoudens.fr', // comportement: https://fullcalendar.io/docs/eventClick + 'description' => 'blablabla', + ], + [ + 'id' => 2, + 'title' => 'Évènement2', + 'start' => '2025-06-06T08:00:00Z', + 'end' => '2025-06-07T08:00:00Z', + 'allDay' => false, + 'color' => '#e01b24', + 'description' => 'truc machin', + ], + [ + 'id' => 3, + 'title' => 'Évènement3', + 'start' => '2025-06-08', + 'end' => '2025-06-09', + 'allDay' => true, // pas d'heure + 'color' => '#008000', + 'description' => 'ça va chier', + ], + // provoque une erreur, si allDay la fin ne peut être égale au début + /*[ + 'id' => 4, + 'title' => 'Évènement4', + 'start' => '2025-06-09', + 'end' => '2025-06-09', + 'allDay' => true, + 'color' => '#1a5fb4', + ],*/ + ]; + + header('Content-Type: application/json'); + echo json_encode($events); + die; +} + +// actions sur le calendrier +elseif(isset($_SESSION['admin']) && $_SESSION['admin'] === true + && $_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['CONTENT_TYPE'] === 'application/json') +{ + $data = file_get_contents('php://input'); + $json = json_decode($data, true); + + if($_GET['action'] === 'new_event'){ + // BDD + //print_r($json);die; + $id = 7; // généré par la BDD + echo json_encode(['success' => true, 'id' => $id]); + } + elseif($_GET['action'] === 'update_event'){ + // BDD + //print_r($json);die; + echo json_encode(['success' => true]); + } + elseif($_GET['action'] === 'remove_event'){ + // BDD + //echo $json['id']; die; + echo json_encode(['success' => true]); + } + else{ + echo json_encode(['success' => false]); + } + die; +} \ No newline at end of file -- cgit v1.2.3