* @copyright (c) 2013, OnePress Ltd
*
* @package factory-forms
* @since 1.0.0
*/
/**
* A class that provides a set of methods to render form elements independently.
*
* @since 1.0.0
*/
class FactoryForms328_FormHelpers {
/**
* Renders a form element.
*
* @since 1.0.0
* @param type $type A type of a form element.
* @param type $options Element options.
* @return void
*/
public static function render( $type, $options = array() ) {
$options['type'] = $type;
if ( FactoryForms328_Form::isControl($type) ) {
self::renderControl($type, $options);
} elseif ( FactoryForms328_Form::isControlHolder($type) ) {
self::renderHolder($type, $options);
} else {
print_r($options);
die('The control type was not found: ' . $type );
}
}
/**
* Renders a given control.
*
* @since 1.0.0
* @param type $type A control type.
* @param type $options Control options.
* @return void
*/
public static function renderControl($type, $options) {
FactoryForms328_Form::connectAssetsForItem( $options );
$data = self::$_registeredControls[$type];
require_once ($data['include']);
$object = new $data['class']( $options );
$object->html();
}
/**
* Renders a given control holder.
*
* @since 1.0.0
* @param type $type A holder type.
* @param type $options Holder options.
* @return void
*/
public static function renderHolder($type, $options) {
FactoryForms328_Form::connectAssetsForItem( $options );
$data = self::$_registeredHolders[$type];
require_once ($data['include']);
$object = new $data['class']( $options );
$object->html();
}
/**
* A helper method to extract control options (items) by a given name.
*
* @since 3.0.5
* @param string $controlName a control name to search
* @param mixed $options a set of contol options
* @return null|string
*/
public static function extractControlOptions( $controlName, $options = array() ) {
foreach($options as $itemOptions) {
if ( isset( $itemOptions['name'] ) && $itemOptions['name'] == $controlName ) {
return $itemOptions;
}
if ( isset( $itemOptions['items'] ) && is_array( $itemOptions['items'] ) ) {
$result = self::extractControlOptions( $controlName, $itemOptions['items'] );
if ( $result ) return $result;
}
}
return null;
}
}