⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quickform.php

📁 完美的在线教育系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
                    $this->_elementIndex[$currentName] = $i + 1;                } else                 {                	if (is_array($this->_duplicateIndex[$currentName]))                	{                    	$dupIdx = array_search($i, $this->_duplicateIndex[$currentName]);                    	$this->_duplicateIndex[$currentName][$dupIdx] = $i + 1;                	}                }                unset($this->_elements[$i]);            }        }        // Put the element in place finally        $this->_elements[$targetIdx] =& $element;        if (!$duplicate) {            $this->_elementIndex[$elementName] = $targetIdx;        } else {            $this->_duplicateIndex[$elementName][] = $targetIdx;        }        $element->onQuickFormEvent('updateValue', null, $this);        if ($this->_freezeAll) {            $element->freeze();        }        // If not done, the elements will appear in reverse order        ksort($this->_elements);        return $element;    }    // }}}    // {{{ addGroup()    /**     * Adds an element group     * @param    array      $elements       array of elements composing the group     * @param    string     $name           (optional)group name     * @param    string     $groupLabel     (optional)group label     * @param    string     $separator      (optional)string to separate elements     * @param    string     $appendName     (optional)specify whether the group name should be     *                                      used in the form element name ex: group[element]     * @return   object     reference to added group of elements     * @since    2.8     * @access   public     * @throws   PEAR_Error     */    function &addGroup($elements, $name=null, $groupLabel='', $separator=null, $appendName = true)    {        static $anonGroups = 1;        if (0 == strlen($name)) {            $name       = 'qf_group_' . $anonGroups++;            $appendName = false;        }        $group =& $this->addElement('group', $name, $groupLabel, $elements, $separator, $appendName);        return $group;    } // end func addGroup        // }}}    // {{{ &getElement()    /**     * Returns a reference to the element     *     * @param     string     $element    Element name     * @since     2.0     * @access    public     * @return    object     reference to element     * @throws    HTML_QuickForm_Error     */    function &getElement($element)    {        if (isset($this->_elementIndex[$element])) {            return $this->_elements[$this->_elementIndex[$element]];        } else {            $error = PEAR::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Element '$element' does not exist in HTML_QuickForm::getElement()", 'HTML_QuickForm_Error', true);            return $error;        }    } // end func getElement    // }}}    // {{{ &getElementValue()    /**     * Returns the element's raw value     *      * This returns the value as submitted by the form (not filtered)      * or set via setDefaults() or setConstants()     *     * @param     string     $element    Element name     * @since     2.0     * @access    public     * @return    mixed     element value     * @throws    HTML_QuickForm_Error     */    function &getElementValue($element)    {        if (!isset($this->_elementIndex[$element])) {            $error = PEAR::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Element '$element' does not exist in HTML_QuickForm::getElementValue()", 'HTML_QuickForm_Error', true);            return $error;        }        $value = $this->_elements[$this->_elementIndex[$element]]->getValue();        if (isset($this->_duplicateIndex[$element])) {            foreach ($this->_duplicateIndex[$element] as $index) {                if (null !== ($v = $this->_elements[$index]->getValue())) {                    if (is_array($value)) {                        $value[] = $v;                    } else {                        $value = (null === $value)? $v: array($value, $v);                    }                }            }        }        return $value;    } // end func getElementValue    // }}}    // {{{ getSubmitValue()    /**     * Returns the elements value after submit and filter     *     * @param     string     Element name     * @since     2.0     * @access    public     * @return    mixed     submitted element value or null if not set     */        function getSubmitValue($elementName)    {        $value = null;        if (isset($this->_submitValues[$elementName]) || isset($this->_submitFiles[$elementName])) {            $value = isset($this->_submitValues[$elementName])? $this->_submitValues[$elementName]: array();            if (is_array($value) && isset($this->_submitFiles[$elementName])) {                foreach ($this->_submitFiles[$elementName] as $k => $v) {                    $value = HTML_QuickForm::arrayMerge($value, $this->_reindexFiles($this->_submitFiles[$elementName][$k], $k));                }            }        } elseif ('file' == $this->getElementType($elementName)) {            return $this->getElementValue($elementName);        } elseif (false !== ($pos = strpos($elementName, '['))) {            $base = str_replace(                        array('\\', '\''), array('\\\\', '\\\''),                         substr($elementName, 0, $pos)                    );            $idx  = "['" . str_replace(                        array('\\', '\'', ']', '['), array('\\\\', '\\\'', '', "']['"),                         substr($elementName, $pos + 1, -1)                    ) . "']";            if (isset($this->_submitValues[$base])) {                $value = eval("return (isset(\$this->_submitValues['{$base}']{$idx})) ? \$this->_submitValues['{$base}']{$idx} : null;");            }            if ((is_array($value) || null === $value) && isset($this->_submitFiles[$base])) {                $props = array('name', 'type', 'size', 'tmp_name', 'error');                $code  = "if (!isset(\$this->_submitFiles['{$base}']['name']{$idx})) {\n" .                         "    return null;\n" .                         "} else {\n" .                         "    \$v = array();\n";                foreach ($props as $prop) {                    $code .= "    \$v = HTML_QuickForm::arrayMerge(\$v, \$this->_reindexFiles(\$this->_submitFiles['{$base}']['{$prop}']{$idx}, '{$prop}'));\n";                }                $fileValue = eval($code . "    return \$v;\n}\n");                if (null !== $fileValue) {                    $value = null === $value? $fileValue: HTML_QuickForm::arrayMerge($value, $fileValue);                }            }        }                // This is only supposed to work for groups with appendName = false        if (null === $value && 'group' == $this->getElementType($elementName)) {            $group    =& $this->getElement($elementName);            $elements =& $group->getElements();            foreach (array_keys($elements) as $key) {                $name = $group->getElementName($key);                // prevent endless recursion in case of radios and such                if ($name != $elementName) {                    if (null !== ($v = $this->getSubmitValue($name))) {                        $value[$name] = $v;                    }                }            }        }        return $value;    } // end func getSubmitValue    // }}}    // {{{ _reindexFiles()   /**    * A helper function to change the indexes in $_FILES array    *    * @param  mixed   Some value from the $_FILES array    * @param  string  The key from the $_FILES array that should be appended    * @return array    */    function _reindexFiles($value, $key)    {        if (!is_array($value)) {            return array($key => $value);        } else {            $ret = array();            foreach ($value as $k => $v) {                $ret[$k] = $this->_reindexFiles($v, $key);            }            return $ret;        }    }    // }}}    // {{{ getElementError()    /**     * Returns error corresponding to validated element     *     * @param     string    $element        Name of form element to check     * @since     1.0     * @access    public     * @return    string    error message corresponding to checked element     */    function getElementError($element)    {        if (isset($this->_errors[$element])) {            return $this->_errors[$element];        }    } // end func getElementError        // }}}    // {{{ setElementError()    /**     * Set error message for a form element     *     * @param     string    $element    Name of form element to set error for     * @param     string    $message    Error message, if empty then removes the current error message     * @since     1.0            * @access    public     * @return    void     */    function setElementError($element, $message = null)    {        if (!empty($message)) {            $this->_errors[$element] = $message;        } else {            unset($this->_errors[$element]);        }    } // end func setElementError              // }}}     // {{{ getElementType()     /**      * Returns the type of the given element      *      * @param      string    $element    Name of form element      * @since      1.1      * @access     public      * @return     string    Type of the element, false if the element is not found      */     function getElementType($element)     {         if (isset($this->_elementIndex[$element])) {             return $this->_elements[$this->_elementIndex[$element]]->getType();         }         return false;     } // end func getElementType     // }}}     // {{{ updateElementAttr()    /**     * Updates Attributes for one or more elements     *     * @param      mixed    $elements   Array of element names/objects or string of elements to be updated     * @param      mixed    $attrs      Array or sting of html attributes     * @since      2.10     * @access     public     * @return     void     */    function updateElementAttr($elements, $attrs)    {        if (is_string($elements)) {            $elements = split('[ ]?,[ ]?', $elements);        }        foreach (array_keys($elements) as $key) {            if (is_object($elements[$key]) && is_a($elements[$key], 'HTML_QuickForm_element')) {                $elements[$key]->updateAttributes($attrs);            } elseif (isset($this->_elementIndex[$elements[$key]])) {                $this->_elements[$this->_elementIndex[$elements[$key]]]->updateAttributes($attrs);                if (isset($this->_duplicateIndex[$elements[$key]])) {                    foreach ($this->_duplicateIndex[$elements[$key]] as $index) {                        $this->_elements[$index]->updateAttributes($attrs);                    }                }            }        }    } // end func updateElementAttr    // }}}    // {{{ removeElement()    /**     * Removes an element     *     * The method "unlinks" an element from the form, returning the reference     * to the element object. If several elements named $elementName exist,      * it removes the first one, leaving the others intact.     *      * @param string    $elementName The element name     * @param boolean   $removeRules True if rules for this element are to be removed too                          * @access public     * @since 2.0     * @return object HTML_QuickForm_element    a reference to the removed element     * @throws HTML_QuickForm_Error     */    function &removeElement($elementName, $removeRules = true)    {        if (!isset($this->_elementIndex[$elementName])) {            $error = PEAR::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Element '$elementName' does not exist in HTML_QuickForm::removeElement()", 'HTML_QuickForm_Error', true);            return $error;        }        $el =& $this->_elements[$this->_elementIndex[$elementName]];        unset($this->_elements[$this->_elementIndex[$elementName]]);        if (empty($this->_duplicateIndex[$elementName])) {            unset($this->_elementIndex[$elementName]);        } else {            $this->_elementIndex[$elementName] = array_shift($this->_duplicateIndex[$elementName]);        }        if ($removeRules) {            unset($this->_rules[$elementName], $this->_errors[$elementName]);        }        return $el;    } // end func removeElement    // }}}    // {{{ addRule()    /**     * Adds a validation rule for the given field

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -