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 [];
}
// 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;
}

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)
* 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,