From 0ffb4cc703d0181428b712fb26ae97e5de1ec68f Mon Sep 17 00:00:00 2001 From: jamiesensei Date: Fri, 12 Jan 2007 04:36:02 +0000 Subject: [PATCH] special handling of frozen fields - frozen elements pass the default value (set by set_defaults or setDefault) and ignore submitted data in data_submitted() --- lib/formslib.php | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/formslib.php b/lib/formslib.php index 88112f7f5f..7aff7da223 100644 --- a/lib/formslib.php +++ b/lib/formslib.php @@ -881,10 +881,36 @@ class MoodleQuickForm extends HTML_QuickForm_DHTMLRulesTableless { } function exportValues($elementList= null, $addslashes=true){ - $unfiltered=parent::exportValues($elementList); + $unfiltered = array(); + if (null === $elementList) { + // iterate over all elements, calling their exportValue() methods + foreach (array_keys($this->_elements) as $key) { + if ($this->_elements[$key]->isFrozen() && !$this->_elements[$key]->_persistantFreeze){ + $value = $this->_elements[$key]->exportValue(array(), true); + } else { + $value = $this->_elements[$key]->exportValue($this->_submitValues, true); + } + + if (is_array($value)) { + // This shit throws a bogus warning in PHP 4.3.x + $unfiltered = HTML_QuickForm::arrayMerge($unfiltered, $value); + } + } + } else { + if (!is_array($elementList)) { + $elementList = array_map('trim', explode(',', $elementList)); + } + foreach ($elementList as $elementName) { + $value = $this->exportValue($elementName); + if (PEAR::isError($value)) { + return $value; + } + $unfiltered[$elementName] = $value; + } + } if ($addslashes){ - return $this->_recursiveFilter('addslashes',$unfiltered); + return $this->_recursiveFilter('addslashes', $unfiltered); } else { return $unfiltered; } -- 2.39.5