MDL-57925 mod_data: Support new search criteria
authorJuan Leyva <juanleyvadelgado@gmail.com>
Tue, 14 Feb 2017 10:05:30 +0000 (11:05 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Thu, 30 Mar 2017 01:19:45 +0000 (03:19 +0200)
mod/data/lib.php
mod/data/locallib.php

index 594df7c..05bbb02 100644 (file)
@@ -3757,7 +3757,7 @@ function data_get_advance_search_ids($recordids, $searcharray, $dataid) {
  */
 function data_get_recordids($alias, $searcharray, $dataid, $recordids) {
     global $DB;
-
+    $searchcriteria = $alias;   // Keep the criteria.
     $nestsearch = $searcharray[$alias];
     // searching for content outside of mdl_data_content
     if ($alias < 0) {
@@ -3780,7 +3780,10 @@ function data_get_recordids($alias, $searcharray, $dataid, $recordids) {
     if (count($nestsearch->params) != 0) {
         $params = array_merge($params, $nestsearch->params);
         $nestsql = $nestselect . $nestwhere . $nestsearch->sql;
-    } else {
+    } else if ($searchcriteria == DATA_TIMEMODIFIED) {
+        $nestsql = $nestselect . $nestwhere . $nestsearch->field . ' >= :timemodified GROUP BY c' . $alias . '.recordid';
+        $params['timemodified'] = $nestsearch->data;
+    } else {    // First name or last name.
         $thing = $DB->sql_like($nestsearch->field, ':search1', false);
         $nestsql = $nestselect . $nestwhere . $thing . ' GROUP BY c' . $alias . '.recordid';
         $params['search1'] = "%$nestsearch->data%";
index 767ed14..8d61544 100644 (file)
@@ -911,6 +911,11 @@ function data_search_entries($data, $cm, $context, $mode, $currentgroup, $search
                     $params['search_flname_'.$i] = "%$val->data%";
                     continue;
                 }
+                if ($key == DATA_TIMEMODIFIED) {
+                    $searchselect .= " AND $val->field >= :timemodified";
+                    $params['timemodified'] = $val->data;
+                    continue;
+                }
                 $advtables .= ', {data_content} c'.$key.' ';
                 $advwhere .= ' AND c'.$key.'.recordid = r.id';
                 $advsearchselect .= ' AND ('.$val->sql.') ';
@@ -963,6 +968,11 @@ function data_search_entries($data, $cm, $context, $mode, $currentgroup, $search
                     $params['search_flname_'.$i] = "%$val->data%";
                     continue;
                 }
+                if ($key == DATA_TIMEMODIFIED) {
+                    $searchselect .= " AND $val->field >= :timemodified";
+                    $params['timemodified'] = $val->data;
+                    continue;
+                }
                 $advtables .= ', {data_content} c'.$key.' ';
                 $advwhere .= ' AND c'.$key.'.recordid = r.id AND c'.$key.'.fieldid = '.$key;
                 $advsearchselect .= ' AND ('.$val->sql.') ';