[prev in list] [next in list] [prev in thread] [next in thread] 

List:       smarty-dev
Subject:    [SMARTY-DEV] [patch] mysql_mode for html_select_date
From:       Sebastian Mendel <lists () sebastianmendel ! de>
Date:       2007-06-13 6:22:53
Message-ID: 466F8D3D.7080504 () sebastianmendel ! de
[Download RAW message or body]

Hi,

i added a mysql_mode parameter:

* overriding day/month_value_format
* overriding day/month/year_empty_value
* defines day/month/year_empty if not set
* do not list years from 0 to 2007 if year is 0000

also you now can define day/month/year_empty_value


http://www.phpinsider.com/smarty-forum/viewtopic.php?t=11259


it could also be called ISO mode ...


-- 
Sebastian Mendel

www.sebastianmendel.de

["smarty_html_select_date_mysql_mode.patch" (text/plain)]

Index: libs/plugins/function.html_select_date.php
===================================================================
RCS file: /repository/smarty/libs/plugins/function.html_select_date.php,v
retrieving revision 1.36
diff -u -r1.36 function.html_select_date.php
--- libs/plugins/function.html_select_date.php	6 Mar 2007 20:13:55 -0000	1.36
+++ libs/plugins/function.html_select_date.php	12 Jun 2007 09:15:41 -0000
@@ -83,6 +83,13 @@
     $month_empty     = null;
     $year_empty      = null;
     $extra_attrs     = '';
+    $mysql_mode      = false;
+    $day_empty_value = '';
+    $month_empty_value = '';
+    $year_empty_value = '';
 
     foreach ($params as $_key=>$_value) {
         switch ($_key) {
@@ -120,6 +124,7 @@
             case 'display_years':
             case 'year_as_text':
             case 'reverse_years':
+            case 'mysql_mode':
                 $$_key = (bool)$_value;
                 break;
 
@@ -133,6 +138,24 @@
         }
     }
 
+    if ($mysql_mode) {
+        $month_value_format = "%m";
+        $day_value_format = "%d";
+        $day_empty_value = '00';
+        $month_empty_value = '00';
+        $year_empty_value = '0000';
+
+        if (null === $day_empty) {
+            $day_empty = $day_empty_value;
+        }
+        if (null === $month_empty) {
+            $month_empty = $month_empty_value;
+        }
+        if (null === $year_empty) {
+            $year_empty = $year_empty_value;
+        }
+    }
+
     if (preg_match('!^-\d+$!', $time)) {
         // negative timestamp, use date()
         $time = date('Y-m-d', $time);
@@ -163,7 +186,7 @@
             $start_year = strftime('%Y') - $match[2];
         }
     }
-    if (strlen($time[0]) > 0) {
+    if (strlen($time[0]) > 0 && !($mysql_mode && $time[0] === '0000')) {
         if ($start_year > $time[0] && !isset($params['start_year'])) {
             // force start year to include given date if not explicitly set
             $start_year = $time[0];
@@ -175,7 +198,7 @@
         $month_values = array();
         if(isset($month_empty)) {
             $month_names[''] = $month_empty;
-            $month_values[''] = '';
+            $month_values[''] = $month_empty_value;
         }
         for ($i = 1; $i <= 12; $i++) {
             $month_names[$i] = strftime($month_format, mktime(0, 0, 0, $i, 1, 2000));
@@ -222,7 +245,7 @@
         $days = array();
         if (isset($day_empty)) {
             $days[''] = $day_empty;
-            $day_values[''] = '';
+            $day_values[''] = $day_empty_value;
         }
         for ($i = 1; $i <= 31; $i++) {
             $days[] = sprintf($day_format, $i);
@@ -279,7 +304,7 @@
             $yearvals = $years;
             if(isset($year_empty)) {
                 array_unshift($years, $year_empty);
-                array_unshift($yearvals, '');
+                array_unshift($yearvals, $year_empty_value);
             }
             $year_result .= '<select name="' . $year_name . '"';
             if (null !== $year_size){





-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic