]> git.mjollnir.org Git - moodle.git/commitdiff
special handling of frozen fields - frozen elements pass the default value (set by...
authorjamiesensei <jamiesensei>
Fri, 12 Jan 2007 04:36:02 +0000 (04:36 +0000)
committerjamiesensei <jamiesensei>
Fri, 12 Jan 2007 04:36:02 +0000 (04:36 +0000)
lib/formslib.php

index 88112f7f5f7b48acc4791e2a0765a141dc292e51..7aff7da2232090f4331815a292ecc88f9167f676 100644 (file)
@@ -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;
         }