/** * 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; }
/** * 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); }
/** * * 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; }
/** * 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
/** * * 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; }