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

📄 quickform.php

📁 完美的在线教育系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
    /**     * Registers a new validation rule     *     * @param     string    $ruleName   Name of validation rule     * @param     string    $type       Either: 'regex', 'function' or 'rule' for an HTML_QuickForm_Rule object     * @param     string    $data1      Name of function, regular expression or HTML_QuickForm_Rule classname     * @param     string    $data2      Object parent of above function or HTML_QuickForm_Rule file path     * @since     1.0     * @access    public     * @return    void     */    function registerRule($ruleName, $type, $data1, $data2 = null)    {        include_once('HTML/QuickForm/RuleRegistry.php');        $registry =& HTML_QuickForm_RuleRegistry::singleton();        $registry->registerRule($ruleName, $type, $data1, $data2);    } // end func registerRule    // }}}    // {{{ elementExists()    /**     * Returns true if element is in the form     *     * @param     string   $element         form name of element to check     * @since     1.0     * @access    public     * @return    boolean     */    function elementExists($element=null)    {        return isset($this->_elementIndex[$element]);    } // end func elementExists    // }}}    // {{{ setDatasource()    /**     * Sets a datasource object for this form object     *     * Datasource default and constant values will feed the QuickForm object if     * the datasource implements defaultValues() and constantValues() methods.     *     * @param     object   $datasource          datasource object implementing the informal datasource protocol     * @param     mixed    $defaultsFilter      string or array of filter(s) to apply to default values     * @param     mixed    $constantsFilter     string or array of filter(s) to apply to constants values     * @since     3.3     * @access    public     * @return    void     */    function setDatasource(&$datasource, $defaultsFilter = null, $constantsFilter = null)    {        if (is_object($datasource)) {            $this->_datasource =& $datasource;            if (is_callable(array($datasource, 'defaultValues'))) {                $this->setDefaults($datasource->defaultValues($this), $defaultsFilter);            }            if (is_callable(array($datasource, 'constantValues'))) {                $this->setConstants($datasource->constantValues($this), $constantsFilter);            }        } else {            return PEAR::raiseError(null, QUICKFORM_INVALID_DATASOURCE, null, E_USER_WARNING, "Datasource is not an object in QuickForm::setDatasource()", 'HTML_QuickForm_Error', true);        }    } // end func setDatasource    // }}}    // {{{ setDefaults()    /**     * Initializes default form values     *     * @param     array    $defaultValues       values used to fill the form     * @param     mixed    $filter              (optional) filter(s) to apply to all default values     * @since     1.0     * @access    public     * @return    void     */    function setDefaults($defaultValues = null, $filter = null)    {        if (is_array($defaultValues)) {            if (isset($filter)) {                if (is_array($filter) && (2 != count($filter) || !is_callable($filter))) {                    foreach ($filter as $val) {                        if (!is_callable($val)) {                            return PEAR::raiseError(null, QUICKFORM_INVALID_FILTER, null, E_USER_WARNING, "Callback function does not exist in QuickForm::setDefaults()", 'HTML_QuickForm_Error', true);                        } else {                            $defaultValues = $this->_recursiveFilter($val, $defaultValues);                        }                    }                } elseif (!is_callable($filter)) {                    return PEAR::raiseError(null, QUICKFORM_INVALID_FILTER, null, E_USER_WARNING, "Callback function does not exist in QuickForm::setDefaults()", 'HTML_QuickForm_Error', true);                } else {                    $defaultValues = $this->_recursiveFilter($filter, $defaultValues);                }            }            $this->_defaultValues = HTML_QuickForm::arrayMerge($this->_defaultValues, $defaultValues);            foreach (array_keys($this->_elements) as $key) {                $this->_elements[$key]->onQuickFormEvent('updateValue', null, $this);            }        }    } // end func setDefaults    // }}}    // {{{ setConstants()    /**     * Initializes constant form values.     * These values won't get overridden by POST or GET vars     *     * @param     array   $constantValues        values used to fill the form         * @param     mixed    $filter              (optional) filter(s) to apply to all default values         *     * @since     2.0     * @access    public     * @return    void     */    function setConstants($constantValues = null, $filter = null)    {        if (is_array($constantValues)) {            if (isset($filter)) {                if (is_array($filter) && (2 != count($filter) || !is_callable($filter))) {                    foreach ($filter as $val) {                        if (!is_callable($val)) {                            return PEAR::raiseError(null, QUICKFORM_INVALID_FILTER, null, E_USER_WARNING, "Callback function does not exist in QuickForm::setConstants()", 'HTML_QuickForm_Error', true);                        } else {                            $constantValues = $this->_recursiveFilter($val, $constantValues);                        }                    }                } elseif (!is_callable($filter)) {                    return PEAR::raiseError(null, QUICKFORM_INVALID_FILTER, null, E_USER_WARNING, "Callback function does not exist in QuickForm::setConstants()", 'HTML_QuickForm_Error', true);                } else {                    $constantValues = $this->_recursiveFilter($filter, $constantValues);                }            }            $this->_constantValues = HTML_QuickForm::arrayMerge($this->_constantValues, $constantValues);            foreach (array_keys($this->_elements) as $key) {                $this->_elements[$key]->onQuickFormEvent('updateValue', null, $this);            }        }    } // end func setConstants    // }}}    // {{{ setMaxFileSize()    /**     * Sets the value of MAX_FILE_SIZE hidden element     *     * @param     int    $bytes    Size in bytes     * @since     3.0     * @access    public     * @return    void     */    function setMaxFileSize($bytes = 0)    {        if ($bytes > 0) {            $this->_maxFileSize = $bytes;        }        if (!$this->elementExists('MAX_FILE_SIZE')) {            $this->addElement('hidden', 'MAX_FILE_SIZE', $this->_maxFileSize);        } else {            $el =& $this->getElement('MAX_FILE_SIZE');            $el->updateAttributes(array('value' => $this->_maxFileSize));        }    } // end func setMaxFileSize    // }}}    // {{{ getMaxFileSize()    /**     * Returns the value of MAX_FILE_SIZE hidden element     *     * @since     3.0     * @access    public     * @return    int   max file size in bytes     */    function getMaxFileSize()    {        return $this->_maxFileSize;    } // end func getMaxFileSize    // }}}    // {{{ &createElement()    /**     * Creates a new form element of the given type.     *      * This method accepts variable number of parameters, their      * meaning and count depending on $elementType     *     * @param     string     $elementType    type of element to add (text, textarea, file...)     * @since     1.0     * @access    public     * @return    object extended class of HTML_element     * @throws    HTML_QuickForm_Error     */    function &createElement($elementType)    {        $args    =  func_get_args();        $element =& HTML_QuickForm::_loadElement('createElement', $elementType, array_slice($args, 1));        return $element;    } // end func createElement    // }}}    // {{{ _loadElement()    /**     * Returns a form element of the given type     *     * @param     string   $event   event to send to newly created element ('createElement' or 'addElement')     * @param     string   $type    element type     * @param     array    $args    arguments for event     * @since     2.0     * @access    private     * @return    object    a new element     * @throws    HTML_QuickForm_Error     */    function &_loadElement($event, $type, $args)    {        $type = strtolower($type);        if (!HTML_QuickForm::isTypeRegistered($type)) {            $error = PEAR::raiseError(null, QUICKFORM_UNREGISTERED_ELEMENT, null, E_USER_WARNING, "Element '$type' does not exist in HTML_QuickForm::_loadElement()", 'HTML_QuickForm_Error', true);            return $error;        }        $className = $GLOBALS['HTML_QUICKFORM_ELEMENT_TYPES'][$type][1];        $includeFile = $GLOBALS['HTML_QUICKFORM_ELEMENT_TYPES'][$type][0];        include_once($includeFile);        $elementObject =& new $className();        for ($i = 0; $i < 5; $i++) {            if (!isset($args[$i])) {                $args[$i] = null;            }        }        $err = $elementObject->onQuickFormEvent($event, $args, $this);        if ($err !== true) {            return $err;        }        return $elementObject;    } // end func _loadElement    // }}}    // {{{ addElement()    /**     * Adds an element into the form     *      * If $element is a string representing element type, then this      * method accepts variable number of parameters, their meaning      * and count depending on $element     *     * @param    mixed      $element        element object or type of element to add (text, textarea, file...)     * @since    1.0     * @return   object     reference to element     * @access   public     * @throws   HTML_QuickForm_Error     */    function &addElement($element)    {        if (is_object($element) && is_subclass_of($element, 'html_quickform_element')) {           $elementObject = &$element;           $elementObject->onQuickFormEvent('updateValue', null, $this);        } else {            $args = func_get_args();            $elementObject =& $this->_loadElement('addElement', $element, array_slice($args, 1));            if (PEAR::isError($elementObject)) {                return $elementObject;            }        }        $elementName = $elementObject->getName();        // Add the element if it is not an incompatible duplicate        if (!empty($elementName) && isset($this->_elementIndex[$elementName])) {            if ($this->_elements[$this->_elementIndex[$elementName]]->getType() ==                $elementObject->getType()) {                $this->_elements[] =& $elementObject;                $elKeys = array_keys($this->_elements);                $this->_duplicateIndex[$elementName][] = end($elKeys);            } else {                $error = PEAR::raiseError(null, QUICKFORM_INVALID_ELEMENT_NAME, null, E_USER_WARNING, "Element '$elementName' already exists in HTML_QuickForm::addElement()", 'HTML_QuickForm_Error', true);                return $error;            }        } else {            $this->_elements[] =& $elementObject;            $elKeys = array_keys($this->_elements);            $this->_elementIndex[$elementName] = end($elKeys);        }        if ($this->_freezeAll) {            $elementObject->freeze();        }        return $elementObject;    } // end func addElement        // }}}    // {{{ insertElementBefore()   /**    * Inserts a new element right before the other element    *    * Warning: it is not possible to check whether the $element is already    * added to the form, therefore if you want to move the existing form    * element to a new position, you'll have to use removeElement():    * $form->insertElementBefore($form->removeElement('foo', false), 'bar');    *    * @access   public    * @since    3.2.4    * @param    object  HTML_QuickForm_element  Element to insert    * @param    string  Name of the element before which the new one is inserted    * @return   object  HTML_QuickForm_element  reference to inserted element    * @throws   HTML_QuickForm_Error    */    function &insertElementBefore(&$element, $nameAfter)    {        if (!empty($this->_duplicateIndex[$nameAfter])) {            $error = PEAR::raiseError(null, QUICKFORM_INVALID_ELEMENT_NAME, null, E_USER_WARNING, 'Several elements named "' . $nameAfter . '" exist in HTML_QuickForm::insertElementBefore().', 'HTML_QuickForm_Error', true);            return $error;        } elseif (!$this->elementExists($nameAfter)) {            $error = PEAR::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Element '$nameAfter' does not exist in HTML_QuickForm::insertElementBefore()", 'HTML_QuickForm_Error', true);            return $error;        }        $elementName = $element->getName();        $targetIdx   = $this->_elementIndex[$nameAfter];        $duplicate   = false;        // Like in addElement(), check that it's not an incompatible duplicate        if (!empty($elementName) && isset($this->_elementIndex[$elementName])) {            if ($this->_elements[$this->_elementIndex[$elementName]]->getType() != $element->getType()) {                $error = PEAR::raiseError(null, QUICKFORM_INVALID_ELEMENT_NAME, null, E_USER_WARNING, "Element '$elementName' already exists in HTML_QuickForm::insertElementBefore()", 'HTML_QuickForm_Error', true);                return $error;            }            $duplicate = true;        }        // Move all the elements after added back one place, reindex _elementIndex and/or _duplicateIndex        $elKeys = array_keys($this->_elements);        for ($i = end($elKeys); $i >= $targetIdx; $i--) {            if (isset($this->_elements[$i])) {                $currentName = $this->_elements[$i]->getName();                $this->_elements[$i + 1] =& $this->_elements[$i];                if ($this->_elementIndex[$currentName] == $i) {

⌨️ 快捷键说明

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