This commit is contained in:
theShlavuk 2026-01-21 22:55:14 +01:00
parent 200f6aab15
commit 31bc09759a

View File

@ -1015,19 +1015,24 @@ class CRVI_TraductionLangue_Model extends Main_Model {
error_log('🔍 Posts de capacités récupérés: ' . count($capacites_posts));
if (empty($capacites_posts)) {
// Mettre en cache un résultat vide
error_log('⚠️ Aucune capacité active trouvée - résultat vide');
// Ne pas mettre en cache un résultat vide trop longtemps (1 heure au lieu de 1 jour)
if ($use_cache) {
\set_transient($cache_key, [], 1 * \DAY_IN_SECONDS);
\set_transient($cache_key, [], 1 * \HOUR_IN_SECONDS);
}
return [];
}
// Construire une liste unique de langues à partir des capacités actives
$langues_ids = [];
$capacites_sans_langue = 0;
foreach ($capacites_posts as $post) {
$langue_field = \get_field('langue', $post->ID);
// Le champ langue est un tableau d'IDs (multi-select)
if (is_array($langue_field)) {
if (empty($langue_field)) {
$capacites_sans_langue++;
}
foreach ($langue_field as $langue_id) {
if (!empty($langue_id) && !in_array($langue_id, $langues_ids)) {
$langues_ids[] = (int) $langue_id;
@ -1039,10 +1044,15 @@ class CRVI_TraductionLangue_Model extends Main_Model {
if (!in_array($langue_id, $langues_ids)) {
$langues_ids[] = $langue_id;
}
} else {
$capacites_sans_langue++;
}
}
error_log('🔍 IDs de langues uniques: ' . print_r($langues_ids, true));
if ($capacites_sans_langue > 0) {
error_log('⚠️ ' . $capacites_sans_langue . ' capacité(s) active(s) sans langue assignée');
}
error_log('🔍 IDs de langues uniques trouvées: ' . count($langues_ids) . ' - ' . print_r($langues_ids, true));
if (empty($langues_ids)) {
// Mettre en cache un résultat vide
@ -1054,21 +1064,31 @@ class CRVI_TraductionLangue_Model extends Main_Model {
// Récupérer les objets termes pour ces langues
$langues_terms = [];
$langues_manquantes = [];
foreach ($langues_ids as $langue_id) {
$term = \get_term($langue_id, 'langue');
if ($term && !\is_wp_error($term)) {
$langues_terms[] = $term;
} else {
$langues_manquantes[] = $langue_id;
error_log('⚠️ Langue ID ' . $langue_id . ' référencée dans une capacité mais non trouvée dans la taxonomie');
}
}
error_log('🔍 Langues récupérées: ' . count($langues_terms));
error_log('🔍 Langues récupérées: ' . count($langues_terms) . ' sur ' . count($langues_ids));
if (!empty($langues_manquantes)) {
error_log('⚠️ Langues manquantes (IDs): ' . implode(', ', $langues_manquantes));
}
error_log('🔍 Date de début: ' . $date_debut);
error_log('🔍 Date de fin: ' . $date_fin);
if (empty($langues_terms)) {
// Mettre en cache un résultat vide
error_log('⚠️ Aucune langue valide trouvée - résultat vide');
// Ne pas mettre en cache un résultat vide trop longtemps pour permettre un recalcul rapide
// Si des langues manquantes sont détectées, mettre un cache très court (5 minutes)
$cache_duration = !empty($langues_manquantes) ? 5 * \MINUTE_IN_SECONDS : 1 * \HOUR_IN_SECONDS;
if ($use_cache) {
\set_transient($cache_key, [], 1 * \DAY_IN_SECONDS);
\set_transient($cache_key, [], $cache_duration);
}
return [];
}
@ -1115,6 +1135,17 @@ class CRVI_TraductionLangue_Model extends Main_Model {
return $result;
}
/**
* Invalide le cache pour une période spécifique
* @param string $date_debut Date de début (Y-m-d)
* @param string $date_fin Date de fin (Y-m-d)
*/
public static function invalidate_cache_periode(string $date_debut, string $date_fin): void {
$cache_key = 'crvi_langues_capacites_acf_' . $date_debut . '_' . $date_fin;
\delete_transient($cache_key);
error_log('🗑️ Cache invalidé pour la période ' . $date_debut . ' à ' . $date_fin);
}
/**
* Invalide le cache pour une capacité donnée
* À appeler lors de la création/modification/suppression d'événements ou de capacités