------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'HTML/QuickForm/date.php'; require_once 'Date.php'; require_once 'Validate.php'; /** * Class to dynamically create HTML Select elements from a date * Modificado para que cumpla con los requisitos de mecon * */ class MECON_HTML_QuickForm_mdate extends HTML_QuickForm_date { // {{{ constructor /** * Class constructor * * @param string $elementName (optional)Input field name attribute * @param string $value (optional)Input field value * @param mixed $attributes (optional)Either a typical HTML attribute string * or an associative array. Date format is passed along the attributes. * @access public * @return void */ function MECON_HTML_QuickForm_mdate($elementName=null, $elementLabel=null, $options=array(), $attributes=null) { $this->_locale = array ('es' => array ( 'weekdays_short'=> array ('' => '--', 'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'), 'weekdays_long' => array ('' => '--', 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'), 'months_short' => array ('' => '--', 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'), 'months_long' => array ('' => '--', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre') ) ); parent::HTML_QuickForm_date($elementName, $elementLabel, array_merge(array('language'=>'es','format'=>'d F Y'), $options), $attributes); } //end constructor /** * Creates an option list containing the numbers from the start number to the end, inclusive * * @param int The start number * @param int The end number * @param int Increment by this value * @access private * @return array An array of numeric options. */ function _createOptionList($start, $end, $step = 1) { for ($i = $start, $options = array('' => '--'); $start > $end? $i >= $end: $i <= $end; $i += $step) { $options[$i] = sprintf('%02d', $i); } return $options; } // end func _createOptionList /** * Devuelve un objeto date * * * @access public * @return object Date. */ function &getValue() { if ($this->_selectedDate['Y']) { return new Date (@sprintf("%04d-%02d-%02d %02d:%02d:00", $this->_selectedDate['Y'], $this->_selectedDate['F'], $this->_selectedDate['d'], $this->_selectedDate['H'], $this->_selectedDate['i'])); } else { return null; } } // end func getValue /** * Verifica que una fecha sea valida. * * Verifica que una fecha sea valida. El formato siempre debe ser * '%Y-%m-%d' * * @access public * @return bool */ function validate($valor, $nombre, $formato = '') { // Si viene completamente lleno, se valida con el paquete Validate. if ($valor['Y'] and $valor['d'] and $valor['F']) { $str = sprintf('%4d-%02d-%02d', $valor['Y'], $valor['F'], $valor['d']); return Validate::date($str, array('format' => '%Y-%m-%d')); // Si viene completamente vacio, es valido. } elseif (!$valor['Y'] and !$valor['d'] and !$valor['F']) { return true; // Si viene a medio completar, es invalido. } else { return false; } } // end func validate } ?>