From 593b02295f9fdec5709b24b52954765dfa737cdd Mon Sep 17 00:00:00 2001 From: skodak Date: Wed, 16 Apr 2008 14:51:44 +0000 Subject: [PATCH] MDL-14390 fixed saving of multiselect field type; merged from MOODLE_19_STABLE --- mod/data/field/multimenu/field.class.php | 48 ++++++++++++++---------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/mod/data/field/multimenu/field.class.php b/mod/data/field/multimenu/field.class.php index 82760cfcae..ed6e830534 100755 --- a/mod/data/field/multimenu/field.class.php +++ b/mod/data/field/multimenu/field.class.php @@ -41,18 +41,19 @@ class data_field_multimenu extends data_field_base { } $str = '
'; + $str .= ''; // hidden field - needed for empty selection $str .= ''; @@ -80,13 +81,11 @@ class data_field_multimenu extends data_field_base { $option = trim($option); $str .= ''; } $str .= ''; @@ -129,9 +128,9 @@ class data_field_multimenu extends data_field_base { function update_content($recordid, $value, $name='') { $content = new object; - $content->fieldid = $this->field->id; + $content->fieldid = $this->field->id; $content->recordid = $recordid; - $content->content = $this->format_data_field_multimenu_content($value); + $content->content = $this->format_data_field_multimenu_content($value); if ($oldcontent = get_record('data_content','fieldid', $this->field->id, 'recordid', $recordid)) { $content->id = $oldcontent->id; @@ -143,16 +142,27 @@ class data_field_multimenu extends data_field_base { function format_data_field_multimenu_content($content) { if (!is_array($content)) { - $str = $content; - } else { - $str = ''; - foreach ($content as $val) { - $str .= $val . '##'; + return NULL; + } + $options = explode("\n", $this->field->param1); + $options = array_map('trim', $options); + + $vals = array(); + foreach ($content as $key=>$val) { + if ($key === 'xxx') { + continue; + } + if (!in_array(stripslashes($val), $options)) { + continue; } - $str = substr($str, 0, -2); + $vals[] = $val; } - $str = clean_param($str, PARAM_NOTAGS); - return $str; + + if (empty($vals)) { + return NULL; + } + + return implode('##', $vals); } -- 2.39.5