diff --git a/app/models/TraductionLangue_Model.php b/app/models/TraductionLangue_Model.php index dddd08c..6a58aa3 100644 --- a/app/models/TraductionLangue_Model.php +++ b/app/models/TraductionLangue_Model.php @@ -995,21 +995,23 @@ class CRVI_TraductionLangue_Model extends Main_Model { } } - // Récupérer uniquement les termes de la taxonomie 'langue' qui sont liés à des posts 'traduction_langue' actifs - $langues_terms = \get_terms([ - 'taxonomy' => 'langue', - 'hide_empty' => true, // Important: ne récupérer que les termes utilisés - 'object_ids' => \get_posts([ - 'post_type' => 'traduction_langue', - 'post_status' => 'publish', - 'numberposts' => -1, - 'fields' => 'ids' - ]) + // Récupérer tous les posts 'traduction_langue' publiés et actifs + $capacites_posts = \get_posts([ + 'post_type' => 'traduction_langue', + 'post_status' => 'publish', + 'posts_per_page' => -1, + 'meta_query' => [ + [ + 'key' => 'actif', + 'value' => '1', + 'compare' => '=', + ], + ], ]); - error_log('🔍 Langues récupérées: ' . print_r($langues_terms, true)); + error_log('🔍 Posts de capacités récupérés: ' . count($capacites_posts)); - if (\is_wp_error($langues_terms) || empty($langues_terms)) { + if (empty($capacites_posts)) { // Mettre en cache un résultat vide if ($use_cache) { \set_transient($cache_key, [], 1 * \DAY_IN_SECONDS); @@ -1017,17 +1019,64 @@ class CRVI_TraductionLangue_Model extends Main_Model { return []; } - error_log('🔍 Langues récupérées: ' . print_r($langues_terms, true)); + // Construire une liste unique de langues à partir des capacités actives + $langues_ids = []; + 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)) { + foreach ($langue_field as $langue_id) { + if (!empty($langue_id) && !in_array($langue_id, $langues_ids)) { + $langues_ids[] = (int) $langue_id; + } + } + } elseif (!empty($langue_field)) { + // Cas où c'est un seul ID (ne devrait pas arriver avec multi-select, mais on gère) + $langue_id = (int) $langue_field; + if (!in_array($langue_id, $langues_ids)) { + $langues_ids[] = $langue_id; + } + } + } + + error_log('🔍 IDs de langues uniques: ' . print_r($langues_ids, true)); + + if (empty($langues_ids)) { + // Mettre en cache un résultat vide + if ($use_cache) { + \set_transient($cache_key, [], 1 * \DAY_IN_SECONDS); + } + return []; + } + + // Récupérer les objets termes pour ces langues + $langues_terms = []; + foreach ($langues_ids as $langue_id) { + $term = \get_term($langue_id, 'langue'); + if ($term && !\is_wp_error($term)) { + $langues_terms[] = $term; + } + } + + error_log('🔍 Langues récupérées: ' . count($langues_terms)); 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 + if ($use_cache) { + \set_transient($cache_key, [], 1 * \DAY_IN_SECONDS); + } + return []; + } + $result = []; foreach ($langues_terms as $langue_term) { // Vérifier qu'il existe au moins une capacité active pour cette langue $capacites = self::getActiveCapacites(['langue' => $langue_term->term_id], false); - error_log('🔍 Capacités récupérées: ' . print_r($capacites, true)); + error_log('🔍 Capacités pour ' . $langue_term->name . ' (ID: ' . $langue_term->term_id . '): ' . count($capacites)); if (empty($capacites)) { // Pas de capacité active pour cette langue, on saute @@ -1048,7 +1097,6 @@ class CRVI_TraductionLangue_Model extends Main_Model { 'by_jour' => $dispos['by_jour'], ]; } - error_log('🔍 Résultat: ' . print_r($result, true)); // Trier par nom de langue