amelioration recup capacité traduction

This commit is contained in:
theShlavuk 2026-01-21 22:35:25 +01:00
parent 842f41c860
commit 1f988d8064
2 changed files with 25 additions and 11 deletions

View File

@ -894,11 +894,14 @@ class CRVI_Plugin {
return []; return [];
} }
// Récupérer la date actuelle // Calculer le début et la fin du mois courant
$date = current_time('Y-m-d'); $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 // 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, true); $capacites = \ESI_CRVI_AGENDA\models\CRVI_TraductionLangue_Model::getAllLanguesCapacitesForACF($date_debut, $date_fin, true);
return $capacites; return $capacites;
} }

View File

@ -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) * Récupère toutes les langues avec leurs capacités détaillées (périodes et jours)
* Format optimisé pour crviACFData JavaScript * 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) * @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' => [...]]] * @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 { public static function getAllLanguesCapacitesForACF(?string $date_debut = null, ?string $date_fin = null, bool $use_cache = true): array {
if (!$date) { // Si aucune date n'est fournie, utiliser le mois courant
$date = \current_time('Y-m-d'); 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 // Générer une clé de cache unique basée sur la plage de dates
$cache_key = 'crvi_langues_capacites_acf_' . $date; $cache_key = 'crvi_langues_capacites_acf_' . $date_debut . '_' . $date_fin;
// Essayer de récupérer depuis le cache // Essayer de récupérer depuis le cache
if ($use_cache) { if ($use_cache) {
@ -1017,7 +1027,8 @@ class CRVI_TraductionLangue_Model extends Main_Model {
} }
// Obtenir les disponibilités avec ventilation par jour // 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] = [ $result[$langue_term->slug] = [
'id' => $langue_term->term_id, 'id' => $langue_term->term_id,