From a4e3818f2a9abaa4aa77d35526c2fee8681ffe97 Mon Sep 17 00:00:00 2001
From: skodak <skodak>
Date: Sat, 19 Apr 2008 21:22:03 +0000
Subject: [PATCH] MDL-14417 fixed sql for menu adv search - multimenu already
 fixed today; merged from MOODLE_19_STABLE

---
 mod/data/field/menu/field.class.php      | 34 +++++++++++++++++++-----
 mod/data/field/multimenu/field.class.php |  4 +--
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/mod/data/field/menu/field.class.php b/mod/data/field/menu/field.class.php
index 9526519273..16aba4d0e3 100755
--- a/mod/data/field/menu/field.class.php
+++ b/mod/data/field/menu/field.class.php
@@ -57,17 +57,37 @@ class data_field_menu extends data_field_base {
         return $str;
     }
     
-    function display_search_field($value = '') {
+    function display_search_field($content = '') {
         global $CFG;
-        $temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');
+
+        $usedoptions = array();
+        $sql = "SELECT DISTINCT content
+                  FROM {$CFG->prefix}data_content
+                 WHERE fieldid={$this->field->id} AND content IS NOT NULL";
+        if ($used = get_records_sql($sql)) {
+            foreach ($used as $data) {
+                $value = $data->content;
+                if ($value === '') {
+                    continue;
+                }
+                $usedoptions[$value] = $value;
+            }
+        }
+
         $options = array();
-        if(!empty($temp)) {
-            $options[''] = '';              //Make first index blank.
-            foreach ($temp as $key) {
-                $options[$key] = $key;  //Build following indicies from the sql.
+        foreach (explode("\n",$this->field->param1) as $option) {
+            $option = trim($option);
+            if (!isset($usedoptions[$option])) {
+                continue;
             }
+            $options[$option] = $option;
+        }
+        if (!$options) {
+            // oh, nothing to search for
+            return '';
         }
-        return choose_from_menu($options, 'f_'.$this->field->id, $value, 'choose', '', 0, true);    
+
+        return choose_from_menu($options, 'f_'.$this->field->id, stripslashes($content), '&nbsp;', '', 0, true);    
     }
 
      function parse_search_field() {
diff --git a/mod/data/field/multimenu/field.class.php b/mod/data/field/multimenu/field.class.php
index a095d2c1db..038a494fae 100755
--- a/mod/data/field/multimenu/field.class.php
+++ b/mod/data/field/multimenu/field.class.php
@@ -81,11 +81,11 @@ class data_field_multimenu extends data_field_base {
         $usedoptions = array();
         $sql = "SELECT DISTINCT content
                   FROM {$CFG->prefix}data_content
-                 WHERE fieldid={$this->field->id}";
+                 WHERE fieldid={$this->field->id} AND content IS NOT NULL";
         if ($used = get_records_sql($sql)) {
             foreach ($used as $data) {
                 $valuestr = $data->content;
-                if (is_null($valuestr) or $valuestr === '') {
+                if ($valuestr === '') {
                     continue;
                 }
                 $values = explode('##', $valuestr);
-- 
2.39.5