<?php 
 
/** 
 * LICENSE 
 * 
 * This source file is subject to the new BSD license 
 * It is  available through the world-wide-web at this URL: 
 * http://www.petala-azul.com/bsd.txt 
 * If you did not receive a copy of the license and are unable to 
 * obtain it through the world-wide-web, please send an email 
 * to [email protected] so we can send you a copy immediately. 
 * 
 * @package   Bvb_Grid 
 * @author    Bento Vilas Boas <[email protected]> 
 * @copyright 2010 ZFDatagrid 
 * @license   http://www.petala-azul.com/bsd.txt   New BSD License 
 * @version   $Id$ 
 * @link      http://zfdatagrid.com 
 */ 
abstract class Bvb_Grid_Source_Db_DbAbstract { 
 
    /** 
     * Builds form elements based on field definition 
     * 
     * @param array $elements 
     * 
     * @return array 
     */ 
    public function buildFormElementsFromArray(array $elements) 
    { 
        $form = array(); 
 
        foreach ($elements as $column => $detail) { 
            $label = $detail['label']; 
            $required = isset($detail['required']) ? $detail['required'] : false; 
            $default = isset($detail['default']) ? $detail['default'] : ''; 
            $length = isset($detail['length']) ? $detail['length'] : false; 
 
            switch ($detail['type']) { 
                case 'select': 
                    $form['elements'][$column] = array('select', array('multiOptions' => $default, 
                            'required' => $required, 
                            'label' => $label)); 
                    break; 
 
                case 'multiSelect': 
                    $form['elements'][$column] = array('select', 
                                                        array('multiOptions' => $default, 
                                                              'required' => $required, 
                                                              'label' => $label)); 
                    break; 
 
                case 'smallText': 
                    $form['elements'][$column] = array('text', 
                                                       array('validators' => array(array('stringLength', 
                                                                                         false, 
                                                                                         array(0, $length))), 
                                                       'size' => 40, 
                                                       'label' => $label, 
                                                       'required' => $required, 
                                                       'value' => $default)); 
                    break; 
 
                case 'date': 
                    $form['elements'][$column] = array('text', 
                                                       array('validators' => array(array('Date')), 
                                                       'size' => 10, 
                                                       'label' => $label, 
                                                       'required' => $required, 
                                                       'value' => $default)); 
                    break; 
                case 'time': 
                    $form['elements'][$column] = array('text', 
                                                       array('validators' => array( 
                                                                array(new Zend_Validate_Date('H:i:s'))), 
                                                       'size' => 19, 
                                                       'label' => $label, 
                                                       'required' => $required, 
                                                       'value' => $default)); 
                    break; 
                case 'datetime': 
                    $form['elements'][$column] = array('text', 
                                                       array('validators' => array( 
                                                                array(new Zend_Validate_Date('Y-m-d H:i:s'))), 
                                                       'size' => 19, 
                                                       'label' => $label, 
                                                       'required' => $required, 
                                                       'value' => $default)); 
                    break; 
 
                case 'longtext': 
                    $form['elements'][$column] = array('textarea', 
                                                       array('label' => $label, 
                                                       'required' => $required)); 
                    break; 
 
                case 'number': 
                    $form['elements'][$column] = array('text', 
                                                       array('validators' => array('Digits'), 
                                                       'label' => $label, 
                                                       'size' => 10, 
                                                       'required' => $required, 
                                                       'value' => $default)); 
                    break; 
 
                case 'decimal': 
                    $form['elements'][$column] = array('text', 
                                                       array('validators' => array('Float'), 
                                                             'size' => 10, 
                                                             'label' => $label, 
                                                             'required' => $required, 
                                                             'value' => $default)); 
                    break; 
 
                default: 
                    break; 
            } 
        } 
 
        return $form; 
    } 
 
}
 
 |