コード例 #1
0
ファイル: QuickForm.php プロジェクト: ksecor/civicrm
 /**
  * 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    HTML_QuickForm_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;
 }
コード例 #2
0
 /**
  * DB_DataObject_FormBuilder_QuickForm::_addElementTableToForm
  *
  * Adds an elementTable to the form
  *
  * @param HTML_QuickForm $form        the form to add the element to
  * @param string         $fieldName        the name of the element to be added
  * @param array          $columnNames an array of the column names
  * @param array          $rowNames    an array of the row names
  * @param array          $rows        an array of rows, each row being an array of HTML_QuickForm elements
  */
 function _addElementTableToForm(&$form, $fieldName, $columnNames, $rowNames, &$rows)
 {
     if (!HTML_QuickForm::isTypeRegistered('elementTable')) {
         HTML_QuickForm::registerElementType('elementTable', 'DB/DataObject/FormBuilder/QuickForm/ElementTable.php', 'DB_DataObject_FormBuilder_QuickForm_ElementTable');
     }
     $element =& HTML_QuickForm::createElement($this->_getQFType('elementTable'), $this->getFieldName($fieldName), $this->getFieldLabel($fieldName));
     $element->setColumnNames($columnNames);
     $element->setRowNames($rowNames);
     $element->setRows($rows);
     $attr = $this->_getAttributes('elementTable', $fieldName);
     $element->updateAttributes($attr);
     $this->_addElementToForm($form, $element);
 }
コード例 #3
0
ファイル: QuickForm.php プロジェクト: ksecor/civicrm
 /**
  * 
  * Build a single QuickForm element based on a DB_Table column.
  * 
  * @static
  * 
  * @access public
  * 
  * @param array $col A DB_Table column definition.
  * 
  * @param string $elemname The name to use for the generated QuickForm
  * element.
  * 
  * @return object HTML_QuickForm_Element
  * 
  */
 function &getElement($col, $elemname)
 {
     if (isset($col['qf_setvalue'])) {
         $setval = $col['qf_setvalue'];
     }
     switch ($col['qf_type']) {
         case 'advcheckbox':
         case 'checkbox':
             $element =& HTML_QuickForm::createElement('advcheckbox', $elemname, $col['qf_label'], isset($col['qf_label_append']) ? $col['qf_label_append'] : null, $col['qf_attrs'], $col['qf_vals']);
             // WARNING: advcheckbox elements in HTML_QuickForm v3.2.2
             // and earlier do not honor setChecked(); they will always
             // be un-checked, unless a POST value sets them.  Upgrade
             // to QF 3.2.3 or later.
             if (isset($setval) && $setval == true) {
                 $element->setChecked(true);
             } else {
                 $element->setChecked(false);
             }
             break;
         case 'autocomplete':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_vals'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'date':
             if (!isset($col['qf_opts']['format'])) {
                 $col['qf_opts']['format'] = 'Y-m-d';
             }
             $element =& HTML_QuickForm::createElement('date', $elemname, $col['qf_label'], $col['qf_opts'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'time':
             if (!isset($col['qf_opts']['format'])) {
                 $col['qf_opts']['format'] = 'H:i:s';
             }
             $element =& HTML_QuickForm::createElement('date', $elemname, $col['qf_label'], $col['qf_opts'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'timestamp':
             if (!isset($col['qf_opts']['format'])) {
                 $col['qf_opts']['format'] = 'Y-m-d H:i:s';
             }
             $element =& HTML_QuickForm::createElement('date', $elemname, $col['qf_label'], $col['qf_opts'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'hidden':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, null, $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'radio':
             $element = array();
             foreach ((array) $col['qf_vals'] as $btnvalue => $btnlabel) {
                 $element[] =& HTML_QuickForm::createElement($col['qf_type'], null, null, $btnlabel, $btnvalue, $col['qf_attrs']);
             }
             break;
         case 'select':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_vals'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setSelected($setval);
             }
             break;
         case 'password':
         case 'text':
         case 'textarea':
             if (!isset($col['qf_attrs']['maxlength']) && isset($col['size'])) {
                 $col['qf_attrs']['maxlength'] = $col['size'];
             }
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'static':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], isset($setval) ? $setval : '');
             break;
         case 'hierselect':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_attrs'], $col['qf_groupsep']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'jscalendar':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_opts'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'header':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'static':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'link':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_href'], $setval, $col['qf_attrs']);
             break;
         case 'reset':
         case 'submit':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, null, $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'callback':
             // custom QF elements that need more than
             // the standard parameters
             // code from Arne Bippes <*****@*****.**>
             if (is_callable(array($col['qf_callback'], 'createElement'))) {
                 // Does an object with name from $col['qf_callback'] and
                 // a method with name 'createElement' exist?
                 $ret_value = call_user_func_array(array($col['qf_callback'], 'createElement'), array(&$element, &$col, &$elemname, &$setval));
             } elseif (is_callable($col['qf_callback'])) {
                 // Does a method with name from $col['qf_callback'] exist?
                 $ret_value = call_user_func_array($col['qf_callback'], array(&$element, &$col, &$elemname, &$setval));
             }
             if ($ret_value) {
                 break;
             }
             // fall into default block of switch statement:
             // - if $col['qf_callback'] is ...
             //   - not a valid object
             //   - a valid object, but a method 'createElement' doesn't exist
             //   - not a valid method name
             // - if an error occured in 'createElement' or in the method
         // fall into default block of switch statement:
         // - if $col['qf_callback'] is ...
         //   - not a valid object
         //   - a valid object, but a method 'createElement' doesn't exist
         //   - not a valid method name
         // - if an error occured in 'createElement' or in the method
         default:
             /**
              * @author Moritz Heidkamp <*****@*****.**>
              */
             // not a recognized type.  is it registered with QuickForm?
             if (HTML_QuickForm::isTypeRegistered($col['qf_type'])) {
                 // yes, create it with some minimalist parameters
                 $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_attrs']);
                 // set its default value, if there is one
                 if (isset($setval)) {
                     $element->setValue($setval);
                 }
             } else {
                 // element type is not registered with QuickForm.
                 $element = null;
             }
             break;
     }
     // done
     return $element;
 }
コード例 #4
0
ファイル: QuickForm.php プロジェクト: annickvdp/Chamilo1.9.10
    /**
     * 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    HTML_QuickForm_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;
        // Modified by Ivan Tcholakov, 16-MAR-2010. Suppressing a deprecation warning on PHP 5.3
        //$elementObject =& new $className();
        $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
コード例 #5
0
 /**
  * 
  * Build a single QuickForm element based on a DB_Table column.
  * 
  * @static
  * 
  * @access public
  * 
  * @param array $col A DB_Table column definition.
  * 
  * @param string $elemname The name to use for the generated QuickForm
  * element.
  * 
  * @return object HTML_QuickForm_Element
  * 
  */
 function &getElement($col, $elemname)
 {
     if (isset($col['qf_setvalue'])) {
         $setval = $col['qf_setvalue'];
     }
     switch ($col['qf_type']) {
         case 'advcheckbox':
         case 'checkbox':
             $element =& HTML_QuickForm::createElement('advcheckbox', $elemname, $col['qf_label'], null, $col['qf_attrs'], $col['qf_vals']);
             // WARNING: advcheckbox elements in HTML_QuickForm v3.2.2
             // and earlier do not honor setChecked(); they will always
             // be un-checked, unless a POST value sets them.  Upgrade
             // to QF 3.2.3 or later.
             if (isset($setval) && $setval == true) {
                 $element->setChecked(true);
             } else {
                 $element->setChecked(false);
             }
             break;
         case 'autocomplete':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_vals'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'date':
             if (!isset($col['qf_opts']['format'])) {
                 $col['qf_opts']['format'] = 'Y-m-d';
             }
             $element =& HTML_QuickForm::createElement('date', $elemname, $col['qf_label'], $col['qf_opts'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'time':
             if (!isset($col['qf_opts']['format'])) {
                 $col['qf_opts']['format'] = 'H:i:s';
             }
             $element =& HTML_QuickForm::createElement('date', $elemname, $col['qf_label'], $col['qf_opts'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'timestamp':
             if (!isset($col['qf_opts']['format'])) {
                 $col['qf_opts']['format'] = 'Y-m-d H:i:s';
             }
             $element =& HTML_QuickForm::createElement('date', $elemname, $col['qf_label'], $col['qf_opts'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'hidden':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'radio':
             $element = array();
             foreach ($col['qf_vals'] as $btnvalue => $btnlabel) {
                 if (isset($setval) && $setval == $btnvalue) {
                     $col['qf_attrs']['checked'] = 'checked';
                 }
                 $element[] =& HTML_QuickForm::createElement($col['qf_type'], null, null, $btnlabel . '<br />', $btnvalue, $col['qf_attrs']);
             }
             break;
         case 'select':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_vals'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setSelected($setval);
             }
             break;
         case 'password':
         case 'text':
         case 'textarea':
             if (!isset($col['qf_attrs']['maxlength']) && isset($col['size'])) {
                 $col['qf_attrs']['maxlength'] = $col['size'];
             }
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_attrs']);
             if (isset($setval)) {
                 $element->setValue($setval);
             }
             break;
         case 'static':
             $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], isset($setval) ? $setval : '');
             break;
         default:
             /**
              * @author Moritz Heidkamp <*****@*****.**>
              */
             // not a recognized type.  is it registered with QuickForm?
             if (HTML_QuickForm::isTypeRegistered($col['qf_type'])) {
                 // yes, create it with some minimalist parameters
                 $element =& HTML_QuickForm::createElement($col['qf_type'], $elemname, $col['qf_label'], $col['qf_attrs']);
                 // set its default value, if there is one
                 if (isset($setval)) {
                     $element->setValue($setval);
                 }
             } else {
                 // element type is not registered with QuickForm.
                 $element = null;
             }
             break;
     }
     // done
     return $element;
 }