Browse Source

Allow filter session list by category - refs BT#10283

Angel Fernando Quiroz Campos 9 years ago
parent
commit
588ad672dd
1 changed files with 14 additions and 5 deletions
  1. 14 5
      main/inc/lib/sessionmanager.lib.php

+ 14 - 5
main/inc/lib/sessionmanager.lib.php

@@ -419,6 +419,8 @@ class SessionManager
         $order = $conditions['order'];
         $limit = $conditions['limit'];
 
+        $isMakingOrder = false;
+
         if ($get_count == true) {
             $select = " SELECT count(*) as total_rows";
         } else {
@@ -434,12 +436,19 @@ class SessionManager
                 " $inject_extra_fields ".
                 " s.id ";
 
-            if (strpos($options['order'], 'category_name') === 0) {
-                $inject_joins .= "
-                    LEFT JOIN $sessionCategoryTable sc
-                        ON s.session_category_id = sc.id
-                ";
+            $isMakingOrder = strpos($options['order'], 'category_name') === 0;
+        }
+
+        $isFilteringSessionCategory = strpos($where, 'category_name') !== false;
+
+        if ($isMakingOrder || $isFilteringSessionCategory) {
+            $inject_joins .= " LEFT JOIN $sessionCategoryTable sc ON s.session_category_id = sc.id ";
+
+            if ($isFilteringSessionCategory) {
+                $where = str_replace('category_name', 'sc.name', $where);
+            }
 
+            if ($isMakingOrder) {
                 $order = str_replace('category_name', 'sc.name', $order);
             }
         }