]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/QuickForm/mdate.php
Se arregla un bug del manejo de grupos.
[mecon/meconlib.git] / lib / MECON / HTML / QuickForm / mdate.php
1 <?php
2 /* vim: set expandtab tabstop=4 shiftwidth=4: */
3 // +----------------------------------------------------------------------+
4 // | PHP Version 4                                                        |
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group                                |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.0 of the PHP license,       |
9 // | that is bundled with this package in the file LICENSE, and is        |
10 // | available at through the world-wide-web at                           |
11 // | http://www.php.net/license/2_02.txt.                                 |
12 // | If you did not receive a copy of the PHP license and are unable to   |
13 // | obtain it through the world-wide-web, please send a note to          |
14 // | license@php.net so we can mail you a copy immediately.               |
15 // +----------------------------------------------------------------------+
16 // | Authors: Martin Marrese
17 // | Date: jue jun  5 17:59:44 ART 2003
18 // +----------------------------------------------------------------------+
19 //
20 // $Id$
21 //
22 // $Author$
23 // $URL$
24 // $Date$
25 // $Rev$
26 //
27
28 require_once 'HTML/QuickForm/date.php';
29 require_once 'Date.php';
30 require_once 'Validate.php';
31
32 /**
33  * Class to dynamically create HTML Select elements from a date
34  * Modificado para que cumpla con los requisitos de mecon
35  *
36  */
37 class HTML_QuickForm_mdate extends HTML_QuickForm_date
38 {   
39     // {{{ constructor
40
41     /**
42      * Class constructor
43      * 
44      * @param     string    $elementName    (optional)Input field name attribute
45      * @param     string    $value          (optional)Input field value
46      * @param     mixed     $attributes     (optional)Either a typical HTML attribute string 
47      *                                      or an associative array. Date format is passed along the attributes.
48      * @access    public
49      * @return    void
50      */
51     function HTML_QuickForm_mdate($elementName=null, $elementLabel=null, $options=array(), $attributes=null)
52     {
53         $this->_options = array ('es' => array (
54                                                'weekdays_short'=> array ('' => '--', 'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'),
55                                                'weekdays_long' => array ('' => '--', 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'),
56                                                'months_short'  => array ('' => '--', 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'),
57                                                'months_long'   => array ('' => '--', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septimbre', 'Octubre', 'Noviembre', 'Diciembre')
58                                 )
59                         );
60                         
61         parent::HTML_QuickForm_date($elementName, $elementLabel,
62             array_merge(array('language'=>'es','format'=>'d F Y'), $options),
63             $attributes);
64     } //end constructor
65
66     // }}}
67     // {{{ _createNumericOptionList()
68
69     /**
70      * Creates a numeric option list based on a start number and end number
71      *
72      * @param int $start The start number
73      * @param int $end The end number
74      *
75      * @access public
76      * @return array An array of numeric options.
77      */
78     function _createNumericOptionList($start, $end)
79     {
80         $options = array();
81         //TODO 
82         //Verificar que esto este funcionando bien.
83         $options[''] = '--';
84         //Hasta aca
85         for ($i = $start; $i <= $end; $i++) {
86             $options[$i] = sprintf('%02d', $i);
87         }
88         
89         return $options;
90         
91     } // end func _createNumericOptionList
92
93     /**
94      * Devuelve un objeto date
95      *
96      *
97      * @access public
98      * @return object Date.
99      */
100     function &getValue()
101     {
102         if ($this->_selectedDate['Y']) {
103             return new Date (sprintf("%04d-%02d-%02d 00:00:00",$this->_selectedDate['Y'],$this->_selectedDate['F'],$this->_selectedDate['d']));
104         } 
105         else {
106             return null;
107         }
108     } // end func getValue
109
110     /**
111      * Verifica que una fecha sea valida.
112      *
113      * Verifica que una fecha sea valida. El formato siempre debe ser
114      * '%Y-%m-%d'
115      *
116      * @access public
117      * @return bool
118      */
119     function validate($valor, $nombre, $formato = '')
120     {
121         // Si viene completamente lleno, se valida con el paquete Validate.
122         if ($valor['Y'] and $valor['d'] and $valor['F']) {
123             $str = sprintf('%4d-%02d-%02d', $valor['Y'], $valor['F'], $valor['d']);
124             return  Validate::date($str, array('format' => '%Y-%m-%d'));
125         // Si viene completamente vacio, es valido.
126         } elseif (!$valor['Y'] and !$valor['d'] and !$valor['F']) {
127             return true;
128         // Si viene a medio completar, es invalido.
129         } else {
130             return false;
131         }
132     } // end func validate
133 }
134 ?>