]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/QuickForm/mdate.php
Se arregla para que ande bien con QuickForm 3.2.
[mecon/meconlib.git] / lib / MECON / HTML / QuickForm / mdate.php
index de9c54bb7fe2f5fc8b026a265c49eb14699dc298..78aced3c42b990920b7e78eb574210d2cbf359f4 100644 (file)
@@ -1,31 +1,28 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP Version 4                                                        |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2003 The PHP Group                                |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.0 of the PHP license,       |
-// | that is bundled with this package in the file LICENSE, and is        |
-// | available at through the world-wide-web at                           |
-// | http://www.php.net/license/2_02.txt.                                 |
-// | If you did not receive a copy of the PHP license and are unable to   |
-// | obtain it through the world-wide-web, please send a note to          |
-// | license@php.net so we can mail you a copy immediately.               |
-// +----------------------------------------------------------------------+
-// | Authors: Martin Marrese
-// | Date: jue jun  5 17:59:44 ART 2003
-// +----------------------------------------------------------------------+
-//
-// $Id$
-//
-// $Author$
-// $URL$
-// $Date$
-// $Rev$
-//
-
-
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    meconlib
+-------------------------------------------------------------------------------
+This file is part of meconlib.
+meconlib is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+meconlib is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: jue jun  5 17:59:44 ART 2003
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
 
 require_once 'HTML/QuickForm/date.php';
 require_once 'Date.php';
@@ -36,8 +33,7 @@ require_once 'Validate.php';
  * Modificado para que cumpla con los requisitos de mecon
  *
  */
-class HTML_QuickForm_mdate extends HTML_QuickForm_date
-{   
+class MECON_HTML_QuickForm_mdate extends HTML_QuickForm_date {
     // {{{ constructor
 
     /**
@@ -50,45 +46,38 @@ class HTML_QuickForm_mdate extends HTML_QuickForm_date
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_mdate($elementName=null, $elementLabel=null, $options=array(), $attributes=null)
-    {
-        $this->_options = 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', 'Septimbre', 'Octubre', 'Noviembre', 'Diciembre')
-                                )
-                        );
-                        
-        parent::HTML_QuickForm_date($elementName, $elementLabel, $options, $attributes);
+    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
 
-    // }}}
-    // {{{ _createNumericOptionList()
-
-    /**
-     * Creates a numeric option list based on a start number and end number
-     *
-     * @param int $start The start number
-     * @param int $end The end number
-     *
-     * @access public
-     * @return array An array of numeric options.
-     */
-    function _createNumericOptionList($start, $end)
-    {
-        $options = array();
-        //TODO 
-        //Verificar que esto este funcionando bien.
-        $options['--'] = '--';
-        //Hasta aca
-        for ($i = $start; $i <= $end; $i++) {
+   /**
+    * 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 _createNumericOptionList
+    } // end func _createOptionList
 
     /**
      * Devuelve un objeto date
@@ -97,12 +86,13 @@ class HTML_QuickForm_mdate extends HTML_QuickForm_date
      * @access public
      * @return object Date.
      */
-    function &getValue()
-    {
-        if ($this->_selectedDate['Y'] != 00) {
-            return new Date (sprintf("%04d-%02d-%02d 00:00:00",$this->_selectedDate['Y'],$this->_selectedDate['F'],$this->_selectedDate['d']));
-        } 
-        else {
+    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
@@ -116,12 +106,21 @@ class HTML_QuickForm_mdate extends HTML_QuickForm_date
      * @access public
      * @return bool
      */
-    function validate($valor, $nombre, $formato = '')
-    {
-        if ($valor['Y'] != '--' && $valor['d'] != '--' && $valor['F'] != '--') {
-            return Validate::date($valor['Y'].'-'.$valor['d'].'-'.$valor['F'], array('format' => '%Y-%m-%d'));
+    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;
         }
-        return true;
     } // end func validate
 }
+
 ?>