From eff390414ea4942a8b9b96d55cd91eccf84d14c0 Mon Sep 17 00:00:00 2001
From: Andreas De Rijcke <me@andreasderijcke.be>
Date: Fri, 21 Mar 2025 16:01:48 +0100
Subject: [PATCH 1/3] Issue #3514678 Select terms to list by their own default
 language and current interface language.

---
 term_reference_tree.module | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/term_reference_tree.module b/term_reference_tree.module
index ff9fbe2..624181c 100644
--- a/term_reference_tree.module
+++ b/term_reference_tree.module
@@ -321,8 +321,6 @@ function _term_reference_tree_get_children($tid, $vid) {
   $table = 'taxonomy_term_field_data';
   $alias = 't';
 
-  $default_langcode = \Drupal::languageManager()->getDefaultLanguage()->getId();
-
   $query = \Drupal::database()
     ->select($table, $alias);
   $query->join('taxonomy_term__parent', 'p', 't.tid = p.entity_id');
@@ -337,18 +335,18 @@ function _term_reference_tree_get_children($tid, $vid) {
     ->orderBy('t.weight')
     ->orderBy('t.name');
 
+  $result = $query->execute();
+
+  $interface_langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
   if (\Drupal::moduleHandler()->moduleExists('locale')) {
-    $query->condition('t.langcode', [
-      \Drupal::languageManager()->getCurrentLanguage()->getId(),
-      $default_langcode,
-    ], 'IN');
+    $condition_group = $query->orConditionGroup();
+    $condition_group->condition('t.langcode', $interface_langcode);
+    $condition_group->condition('t.default_langcode', 1);
   }
-  
-  $result = $query->execute();
 
   $terms = [];
   while ($term = $result->fetchObject()) {
-    if (!isset($terms[$term->tid]) || $terms[$term->tid]->langcode === $default_langcode) {
+    if (!isset($terms[$term->tid]) || $term->langcode === $interface_langcode) {
       $terms[$term->tid] = $term;
     }
   }
-- 
GitLab


From af07548751f135caadede2223be10311a43b936c Mon Sep 17 00:00:00 2001
From: Andreas De Rijcke <me@andreasderijcke.be>
Date: Fri, 21 Mar 2025 16:07:54 +0100
Subject: [PATCH 2/3] PHPCS fixes.

---
 term_reference_tree.module | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/term_reference_tree.module b/term_reference_tree.module
index 624181c..2531dde 100644
--- a/term_reference_tree.module
+++ b/term_reference_tree.module
@@ -486,7 +486,7 @@ function _term_reference_tree_build_item($element, $term, $form_state, $value, $
   else {
     $e = [
       '#type' => 'checkbox_tree_label',
-      '#value' =>  $term->name,
+      '#value' => $term->name,
     ];
   }
 
@@ -578,7 +578,7 @@ function _term_reference_tree_get_parent($tid) {
 
 /**
  * Helper function to output a single level of the term reference tree display.
- * 
+ *
  * @throws \Drupal\Core\Entity\EntityMalformedException
  */
 function _term_reference_tree_output_list_level(&$element, &$tree) {
@@ -606,7 +606,7 @@ function _term_reference_tree_output_list_level(&$element, &$tree) {
         }
 
         $class = $item['selected'] ? 'selected' : 'unselected';
-        
+
         $tree_element['#items'][] = [
           '#type' => 'link',
           '#title' => $term->label(),
-- 
GitLab


From 2ac624aa502fb56e4670ecb7cdac511387787924 Mon Sep 17 00:00:00 2001
From: Andreas De Rijcke <me@andreasderijcke.be>
Date: Fri, 21 Mar 2025 16:44:59 +0100
Subject: [PATCH 3/3] Issue #3514678 Fix unintentional moved of query execution
 line.

---
 term_reference_tree.module | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/term_reference_tree.module b/term_reference_tree.module
index 2531dde..607ca15 100644
--- a/term_reference_tree.module
+++ b/term_reference_tree.module
@@ -335,8 +335,6 @@ function _term_reference_tree_get_children($tid, $vid) {
     ->orderBy('t.weight')
     ->orderBy('t.name');
 
-  $result = $query->execute();
-
   $interface_langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
   if (\Drupal::moduleHandler()->moduleExists('locale')) {
     $condition_group = $query->orConditionGroup();
@@ -344,6 +342,8 @@ function _term_reference_tree_get_children($tid, $vid) {
     $condition_group->condition('t.default_langcode', 1);
   }
 
+  $result = $query->execute();
+
   $terms = [];
   while ($term = $result->fetchObject()) {
     if (!isset($terms[$term->tid]) || $term->langcode === $interface_langcode) {
-- 
GitLab