]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/QuickForm/mdate.php
Se arreglan bugs reportados por Myrna.
[mecon/meconlib.git] / lib / MECON / HTML / QuickForm / mdate.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7  
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12  
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: jue jun  5 17:59:44 ART 2003
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'HTML/QuickForm/date.php';
28 require_once 'Date.php';
29 require_once 'Validate.php';
30
31 /**
32  * Class to dynamically create HTML Select elements from a date
33  * Modificado para que cumpla con los requisitos de mecon
34  *
35  */
36 class MECON_HTML_QuickForm_mdate extends HTML_QuickForm_date {
37     // {{{ constructor
38
39     /**
40      * Class constructor
41      * 
42      * @param     string    $elementName    (optional)Input field name attribute
43      * @param     string    $value          (optional)Input field value
44      * @param     mixed     $attributes     (optional)Either a typical HTML attribute string 
45      *                                      or an associative array. Date format is passed along the attributes.
46      * @access    public
47      * @return    void
48      */
49     function MECON_HTML_QuickForm_mdate($elementName=null, $elementLabel=null, $options=array(), $attributes=null) {
50         $this->_options = array ('es' => array (
51                                            'weekdays_short'=> array ('' => '--', 'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'),
52                                            'weekdays_long' => array ('' => '--', 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'),
53                                            'months_short'  => array ('' => '--', 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'),
54                                            'months_long'   => array ('' => '--',
55                                                'Enero', 'Febrero', 'Marzo',
56                                                'Abril', 'Mayo', 'Junio',
57                                                'Julio', 'Agosto', 'Septiembre', 
58                                                'Octubre', 'Noviembre', 'Diciembre')
59                                        )
60                                 );
61
62         parent::HTML_QuickForm_date($elementName, $elementLabel,
63                                     array_merge(array('language'=>'es','format'=>'d F Y'), $options),
64                                     $attributes);
65     } //end constructor
66
67     // }}}
68     // {{{ _createNumericOptionList()
69
70     /**
71      * Creates a numeric option list based on a start number and end number
72      *
73      * @param int $start The start number
74      * @param int $end The end number
75      *
76      * @access public
77      * @return array An array of numeric options.
78      */
79     function _createNumericOptionList($start, $end) {
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         if ($this->_selectedDate['Y']) {
102             return new Date (@sprintf("%04d-%02d-%02d 00:00:00", $this->_selectedDate['Y'], $this->_selectedDate['F'], $this->_selectedDate['d']));
103         } else {
104             return null;
105         }
106     } // end func getValue
107
108     /**
109      * Verifica que una fecha sea valida.
110      *
111      * Verifica que una fecha sea valida. El formato siempre debe ser
112      * '%Y-%m-%d'
113      *
114      * @access public
115      * @return bool
116      */
117     function validate($valor, $nombre, $formato = '') {
118         // Si viene completamente lleno, se valida con el paquete Validate.
119         if ($valor['Y'] and $valor['d'] and $valor['F']) {
120             $str = sprintf('%4d-%02d-%02d', $valor['Y'], $valor['F'], $valor['d']);
121             return  Validate::date($str, array('format' => '%Y-%m-%d'));
122             // Si viene completamente vacio, es valido.
123         }
124         elseif (!$valor['Y'] and !$valor['d'] and !$valor['F']) {
125             return true;
126             // Si viene a medio completar, es invalido.
127         }
128         else {
129             return false;
130         }
131     } // end func validate
132 }
133
134 ?>