diff --git a/app/controllers/Plugin.php b/app/controllers/Plugin.php index 8c6885c..6be17f1 100644 --- a/app/controllers/Plugin.php +++ b/app/controllers/Plugin.php @@ -894,11 +894,14 @@ class CRVI_Plugin { return []; } - // Récupérer la date actuelle - $date = current_time('Y-m-d'); + // Calculer le début et la fin du mois courant + $date_actuelle = current_time('Y-m-d'); + $date_obj = new \DateTime($date_actuelle); + $date_debut = $date_obj->format('Y-m-01'); // Premier jour du mois + $date_fin = $date_obj->format('Y-m-t'); // Dernier jour du mois - // Utiliser la méthode du modèle qui gère le cache - $capacites = \ESI_CRVI_AGENDA\models\CRVI_TraductionLangue_Model::getAllLanguesCapacitesForACF($date, true); + // Utiliser la méthode du modèle qui gère le cache avec la plage de dates + $capacites = \ESI_CRVI_AGENDA\models\CRVI_TraductionLangue_Model::getAllLanguesCapacitesForACF($date_debut, $date_fin, true); return $capacites; } diff --git a/app/models/TraductionLangue_Model.php b/app/models/TraductionLangue_Model.php index 89a05d9..e12796c 100644 --- a/app/models/TraductionLangue_Model.php +++ b/app/models/TraductionLangue_Model.php @@ -965,17 +965,27 @@ class CRVI_TraductionLangue_Model extends Main_Model { * Récupère toutes les langues avec leurs capacités détaillées (périodes et jours) * Format optimisé pour crviACFData JavaScript * - * @param string|null $date Date de référence (Y-m-d). Si null, utilise la date actuelle + * @param string|null $date_debut Date de début (Y-m-d). Si null, utilise le début du mois courant + * @param string|null $date_fin Date de fin (Y-m-d). Si null, utilise la fin du mois courant * @param bool $use_cache Utiliser le cache transient (par défaut: true) * @return array ['langue_slug' => ['id' => X, 'name' => '...', 'total' => X, 'remaining' => Y, 'by_periode' => [...], 'by_jour' => [...]]] */ - public static function getAllLanguesCapacitesForACF(?string $date = null, bool $use_cache = true): array { - if (!$date) { - $date = \current_time('Y-m-d'); + public static function getAllLanguesCapacitesForACF(?string $date_debut = null, ?string $date_fin = null, bool $use_cache = true): array { + // Si aucune date n'est fournie, utiliser le mois courant + if (!$date_debut || !$date_fin) { + $date_actuelle = \current_time('Y-m-d'); + $date_obj = new \DateTime($date_actuelle); + + if (!$date_debut) { + $date_debut = $date_obj->format('Y-m-01'); // Premier jour du mois + } + if (!$date_fin) { + $date_fin = $date_obj->format('Y-m-t'); // Dernier jour du mois + } } - // Générer une clé de cache unique - $cache_key = 'crvi_langues_capacites_acf_' . $date; + // Générer une clé de cache unique basée sur la plage de dates + $cache_key = 'crvi_langues_capacites_acf_' . $date_debut . '_' . $date_fin; // Essayer de récupérer depuis le cache if ($use_cache) { @@ -1017,7 +1027,8 @@ class CRVI_TraductionLangue_Model extends Main_Model { } // Obtenir les disponibilités avec ventilation par jour - $dispos = self::getDisponibilitesByLangueWithJours($langue_term->term_id, $date, $use_cache); + // Utiliser la date de début pour le calcul (les méthodes sous-jacentes calculent déjà le mois complet) + $dispos = self::getDisponibilitesByLangueWithJours($langue_term->term_id, $date_debut, $use_cache); $result[$langue_term->slug] = [ 'id' => $langue_term->term_id,