Browse Source

Fix table filters on exercises results - refs #7953

Angel Fernando Quiroz Campos 9 years ago
parent
commit
5166be6abb
1 changed files with 48 additions and 49 deletions
  1. 48 49
      main/inc/ajax/model.ajax.php

+ 48 - 49
main/inc/ajax/model.ajax.php

@@ -117,63 +117,62 @@ if (($search || $forceSearch) && ($search !== 'false')) {
     }
     $filters = isset($_REQUEST['filters']) && !is_array($_REQUEST['filters']) ? json_decode($_REQUEST['filters']) : false;
 
-    /*if (!empty($filters) && !empty($filters->rules)) {
-        $whereCondition .= ' AND ( ';
-        $counter = 0;
-        foreach ($filters->rules as $key => $rule) {
-            $whereCondition .= getWhereClause($rule->field, $rule->op, $rule->data);
-
-            if ($counter < count($filters->rules) -1) {
-                $whereCondition .= $filters->groupOp;
+    if (!empty($filters)) {
+        if (in_array($action, ['get_questions', 'get_sessions'])) {
+            switch ($action) {
+                case 'get_questions':
+                    $type = 'question';
+                    break;
+                case 'get_sessions':
+                    $type = 'session';
+                    break;
             }
-            $counter++;
-        }
-        $whereCondition .= ' ) ';
-    }*/
-
-    // for now
-    switch ($action) {
-        case 'get_questions':
-            $type = 'question';
-            break;
-        case 'get_sessions':
-            $type = 'session';
-            break;
-    }
-
-    if (!empty($type) && !empty($filters)) {
 
-        // Extra field.
-
-        $extraField = new ExtraField($type);
-        $result = $extraField->getExtraFieldRules($filters, 'extra_');
-        $extra_fields = $result['extra_fields'];
-        $condition_array = $result['condition_array'];
+            if (!empty($type)) {
+                // Extra field.
+                $extraField = new ExtraField($type);
+                $result = $extraField->getExtraFieldRules($filters, 'extra_');
+                $extra_fields = $result['extra_fields'];
+                $condition_array = $result['condition_array'];
+
+                $extraCondition = '';
+                if (!empty($condition_array)) {
+                    $extraCondition = ' AND ( ';
+                    $extraCondition .= implode($filters->groupOp, $condition_array);
+                    $extraCondition .= ' ) ';
+                }
 
-        $extraCondition = '';
-        if (!empty($condition_array)) {
-            $extraCondition = ' AND ( ';
-            $extraCondition .= implode($filters->groupOp, $condition_array);
-            $extraCondition .= ' ) ';
-        }
+                $whereCondition .= $extraCondition;
 
-        $whereCondition .= $extraCondition;
+                // Question field
 
-        // Question field
+                $resultQuestion = $extraField->getExtraFieldRules($filters, 'question_');
+                $questionFields = $resultQuestion['extra_fields'];
+                $condition_array = $resultQuestion['condition_array'];
 
-        $resultQuestion = $extraField->getExtraFieldRules($filters, 'question_');
-        $questionFields = $resultQuestion['extra_fields'];
-        $condition_array = $resultQuestion['condition_array'];
+                if (!empty($condition_array)) {
+                    $extraQuestionCondition = ' AND ( ';
+                    $extraQuestionCondition .= implode($filters->groupOp, $condition_array);
+                    $extraQuestionCondition .= ' ) ';
+                    // Remove conditions already added
+                    $extraQuestionCondition = str_replace($extraCondition, '', $extraQuestionCondition);
+                }
 
-        if (!empty($condition_array)) {
-            $extraQuestionCondition = ' AND ( ';
-            $extraQuestionCondition .= implode($filters->groupOp, $condition_array);
-            $extraQuestionCondition .= ' ) ';
-            // Remove conditions already added
-            $extraQuestionCondition = str_replace($extraCondition, '', $extraQuestionCondition);
+                $whereCondition .= $extraQuestionCondition;
+            }
+        } elseif (!empty($filters->rules)) {
+            $whereCondition .= ' AND ( ';
+            $counter = 0;
+            foreach ($filters->rules as $key => $rule) {
+                $whereCondition .= getWhereClause($rule->field, $rule->op, $rule->data);
+
+                if ($counter < count($filters->rules) -1) {
+                    $whereCondition .= $filters->groupOp;
+                }
+                $counter++;
+            }
+            $whereCondition .= ' ) ';
         }
-
-        $whereCondition .= $extraQuestionCondition;
     }
 }