| 
<?php
 /**
 * AuriumForm Smarty Integration
 *
 * usage:
 * {auriumform type='type' attributes..}
 *
 * - If called before {auriumform_config ...}
 * all the fields will have the config no_template=true
 * - If called after {auriumform_config ...}
 * all the fields will use the given template
 *
 * Especial Cases:
 * TEXTAREA - in place of using size=array(COLS, ROWS), use cols=X rows=Y, e.g.:
 * {auriumform type='textarea' cols=10 rows=10}
 *
 * TEXT, PASSWORD and TEXTAREA
 * - Set attribute strip=true if you want to stripslashes of the value
 * - htmlentities will be called for the values of this type of fields
 *
 * - Use the attribute n as an alias for no_template
 *
 * @since Feb 17, 2005
 * @author Alfred Reinold Baudisch <[email protected]>
 */
 function smarty_function_auriumform($params, &$smarty)
 {
 /**
 * There is no AuriumForm class created yet, then import it
 */
 if(!class_exists('AuriumForm'))
 {
 require_once 'auriumform/class.auriumform.php';
 $smarty->_AuriumForm =& new AuriumForm(array('no_template' => true));
 }
 
 // Initiate field array
 $Field = array();
 
 /**
 * If is textarea, create an array for the size with the attributes cols and rows
 */
 if($params['type'] == 'textarea' && isset($params['cols']) && isset($params['rows']))
 {
 $Field['size'] = array($params['cols'], $params['rows']);
 
 // To not go through this data again
 unset($params['cols']);
 unset($params['rows']);
 }
 
 /**
 * Set field attributes
 */
 foreach($params as $_key => $_val)
 {
 /**
 * If attribute is value, do special things
 */
 if($_key == 'value')
 {
 /**
 * If is to stripslashes from data, e.g.: data obtained from BD
 */
 if($params['strip'])
 {
 $_val = stripslashes($_val);
 }
 
 /**
 * If is a box or something like this, escape characters like
 * ' " & to the html respective entity to avoid things like:
 * <input type="text" value="My name is "">
 * In the example, the value is My name is ", but it will be shown wrong,
 * there is a unexpected ", so htmlentities will transtale "
 * in " and the value will be show correctly
 */
 if(eregi('^(text|textarea|password)$', $params['type']))
 {
 $_val = htmlentities($_val, ENT_QUOTES);
 }
 }
 // If is 'no' (alias for 'no_template'), set it to no_template
 elseif($_key == 'no')
 {
 $_key = 'no_template';
 }
 
 // Send data to field array
 $Field[$_key] = $_val;
 }
 
 // Create and return the field
 return $smarty->_AuriumForm->OneField($Field);
 }
 
 ?>
 |