packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/includes/smarty/plugins/function.html_select_time.php
changeset 0 3906ca745819
equal deleted inserted replaced
-1:000000000000 0:3906ca745819
       
     1 <?php
       
     2 /**
       
     3  * Smarty plugin
       
     4  *
       
     5  * @package Smarty
       
     6  * @subpackage PluginsFunction
       
     7  */
       
     8 
       
     9 /**
       
    10  * @ignore
       
    11  */
       
    12 require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
       
    13 /**
       
    14  * @ignore
       
    15  */
       
    16 require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
       
    17 
       
    18 /**
       
    19  * Smarty {html_select_time} function plugin
       
    20  *
       
    21  * Type:     function<br>
       
    22  * Name:     html_select_time<br>
       
    23  * Purpose:  Prints the dropdowns for time selection
       
    24  *
       
    25  * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
       
    26  *          (Smarty online manual)
       
    27  * @author Roberto Berto <roberto@berto.net>
       
    28  * @author Monte Ohrt <monte AT ohrt DOT com>
       
    29  * @param array                    $params   parameters
       
    30  * @param Smarty_Internal_Template $template template object
       
    31  * @return string
       
    32  * @uses smarty_make_timestamp()
       
    33  */
       
    34 function smarty_function_html_select_time($params, $template)
       
    35 {
       
    36     $prefix = "Time_";
       
    37     $field_array = null;
       
    38     $field_separator = "\n";
       
    39     $option_separator = "\n";
       
    40     $time = null;
       
    41 
       
    42     $display_hours = true;
       
    43     $display_minutes = true;
       
    44     $display_seconds = true;
       
    45     $display_meridian = true;
       
    46 
       
    47     $hour_format = '%02d';
       
    48     $hour_value_format = '%02d';
       
    49     $minute_format = '%02d';
       
    50     $minute_value_format = '%02d';
       
    51     $second_format = '%02d';
       
    52     $second_value_format = '%02d';
       
    53 
       
    54     $hour_size = null;
       
    55     $minute_size = null;
       
    56     $second_size = null;
       
    57     $meridian_size = null;
       
    58 
       
    59     $all_empty = null;
       
    60     $hour_empty = null;
       
    61     $minute_empty = null;
       
    62     $second_empty = null;
       
    63     $meridian_empty = null;
       
    64 
       
    65     $all_id = null;
       
    66     $hour_id = null;
       
    67     $minute_id = null;
       
    68     $second_id = null;
       
    69     $meridian_id = null;
       
    70 
       
    71     $use_24_hours = true;
       
    72     $minute_interval = 1;
       
    73     $second_interval = 1;
       
    74 
       
    75     $extra_attrs = '';
       
    76     $all_extra = null;
       
    77     $hour_extra = null;
       
    78     $minute_extra = null;
       
    79     $second_extra = null;
       
    80     $meridian_extra = null;
       
    81 
       
    82     foreach ($params as $_key => $_value) {
       
    83         switch ($_key) {
       
    84             case 'time':
       
    85                 if (!is_array($_value) && $_value !== null) {
       
    86                     $time = smarty_make_timestamp($_value);
       
    87                 }
       
    88                 break;
       
    89 
       
    90             case 'prefix':
       
    91             case 'field_array':
       
    92 
       
    93             case 'field_separator':
       
    94             case 'option_separator':
       
    95 
       
    96             case 'all_extra':
       
    97             case 'hour_extra':
       
    98             case 'minute_extra':
       
    99             case 'second_extra':
       
   100             case 'meridian_extra':
       
   101 
       
   102             case 'all_empty':
       
   103             case 'hour_empty':
       
   104             case 'minute_empty':
       
   105             case 'second_empty':
       
   106             case 'meridian_empty':
       
   107 
       
   108             case 'all_id':
       
   109             case 'hour_id':
       
   110             case 'minute_id':
       
   111             case 'second_id':
       
   112             case 'meridian_id':
       
   113 
       
   114             case 'hour_format':
       
   115             case 'hour_value_format':
       
   116             case 'minute_format':
       
   117             case 'minute_value_format':
       
   118             case 'second_format':
       
   119             case 'second_value_format':
       
   120                 $$_key = (string)$_value;
       
   121                 break;
       
   122 
       
   123             case 'display_hours':
       
   124             case 'display_minutes':
       
   125             case 'display_seconds':
       
   126             case 'display_meridian':
       
   127             case 'use_24_hours':
       
   128                 $$_key = (bool)$_value;
       
   129                 break;
       
   130 
       
   131             case 'minute_interval':
       
   132             case 'second_interval':
       
   133 
       
   134             case 'hour_size':
       
   135             case 'minute_size':
       
   136             case 'second_size':
       
   137             case 'meridian_size':
       
   138                 $$_key = (int)$_value;
       
   139                 break;
       
   140 
       
   141             default:
       
   142                 if (!is_array($_value)) {
       
   143                     $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
       
   144                 } else {
       
   145                     trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
       
   146                 }
       
   147                 break;
       
   148         }
       
   149     }
       
   150 
       
   151     if (isset($params['time']) && is_array($params['time'])) {
       
   152         if (isset($params['time'][$prefix . 'Hour'])) {
       
   153             // $_REQUEST[$field_array] given
       
   154             foreach (array('H' => 'Hour',  'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
       
   155                 $_variableName = '_' . strtolower($_elementName);
       
   156                 $$_variableName = isset($params['time'][$prefix . $_elementName])
       
   157                     ? $params['time'][$prefix . $_elementName]
       
   158                     : date($_elementKey);
       
   159             }
       
   160             $_meridian = isset($params['time'][$prefix . 'Meridian'])
       
   161                 ? (' ' . $params['time'][$prefix . 'Meridian'])
       
   162                 : '';
       
   163             $time = strtotime( $_hour . ':' . $_minute . ':' . $_second . $_meridian );
       
   164             list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
       
   165         } elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) {
       
   166             // $_REQUEST given
       
   167             foreach (array('H' => 'Hour',  'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
       
   168                 $_variableName = '_' . strtolower($_elementName);
       
   169                 $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
       
   170                     ? $params['time'][$field_array][$prefix . $_elementName]
       
   171                     : date($_elementKey);
       
   172             }
       
   173             $_meridian = isset($params['time'][$field_array][$prefix . 'Meridian'])
       
   174                 ? (' ' . $params['time'][$field_array][$prefix . 'Meridian'])
       
   175                 : '';
       
   176             $time = strtotime( $_hour . ':' . $_minute . ':' . $_second . $_meridian );
       
   177             list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
       
   178         } else {
       
   179             // no date found, use NOW
       
   180             list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
       
   181         }
       
   182     } elseif ($time === null) {
       
   183         if (array_key_exists('time', $params)) {
       
   184             $_hour = $_minute = $_second = $time = null;
       
   185         } else {
       
   186             list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s'));
       
   187         }
       
   188     } else {
       
   189         list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
       
   190     }
       
   191 
       
   192     // generate hour <select>
       
   193     if ($display_hours) {
       
   194         $_html_hours = '';
       
   195         $_extra = '';
       
   196         $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
       
   197         if ($all_extra) {
       
   198             $_extra .= ' ' . $all_extra;
       
   199         }
       
   200         if ($hour_extra) {
       
   201             $_extra .= ' ' . $hour_extra;
       
   202         }
       
   203 
       
   204         $_html_hours = '<select name="' . $_name . '"';
       
   205         if ($hour_id !== null || $all_id !== null) {
       
   206             $_html_hours .= ' id="' . smarty_function_escape_special_chars(
       
   207                 $hour_id !== null ? ( $hour_id ? $hour_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
       
   208             ) . '"';
       
   209         }
       
   210         if ($hour_size) {
       
   211             $_html_hours .= ' size="' . $hour_size . '"';
       
   212         }
       
   213         $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
       
   214 
       
   215         if (isset($hour_empty) || isset($all_empty)) {
       
   216             $_html_hours .= '<option value="">' . ( isset($hour_empty) ? $hour_empty : $all_empty ) . '</option>' . $option_separator;
       
   217         }
       
   218 
       
   219         $start = $use_24_hours ? 0 : 1;
       
   220         $end = $use_24_hours ? 23 : 12;
       
   221         for ($i=$start; $i <= $end; $i++) {
       
   222             $_val = sprintf('%02d', $i);
       
   223             $_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i);
       
   224             $_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i);
       
   225 
       
   226             if (!$use_24_hours) {
       
   227                 $_hour12 = $_hour == 0
       
   228                     ? 12
       
   229                     : ($_hour <= 12 ? $_hour : $_hour -12);
       
   230             }
       
   231 
       
   232             $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
       
   233             $_html_hours .= '<option value="' . $_value . '"'
       
   234                 . ($selected ? ' selected="selected"' : '')
       
   235                 . '>' . $_text . '</option>' . $option_separator;
       
   236         }
       
   237 
       
   238         $_html_hours .= '</select>';
       
   239     }
       
   240 
       
   241     // generate minute <select>
       
   242     if ($display_minutes) {
       
   243         $_html_minutes = '';
       
   244         $_extra = '';
       
   245         $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
       
   246         if ($all_extra) {
       
   247             $_extra .= ' ' . $all_extra;
       
   248         }
       
   249         if ($minute_extra) {
       
   250             $_extra .= ' ' . $minute_extra;
       
   251         }
       
   252 
       
   253         $_html_minutes = '<select name="' . $_name . '"';
       
   254         if ($minute_id !== null || $all_id !== null) {
       
   255             $_html_minutes .= ' id="' . smarty_function_escape_special_chars(
       
   256                 $minute_id !== null ? ( $minute_id ? $minute_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
       
   257             ) . '"';
       
   258         }
       
   259         if ($minute_size) {
       
   260             $_html_minutes .= ' size="' . $minute_size . '"';
       
   261         }
       
   262         $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
       
   263 
       
   264         if (isset($minute_empty) || isset($all_empty)) {
       
   265             $_html_minutes .= '<option value="">' . ( isset($minute_empty) ? $minute_empty : $all_empty ) . '</option>' . $option_separator;
       
   266         }
       
   267 
       
   268         $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
       
   269         for ($i=0; $i <= 59; $i += $minute_interval) {
       
   270             $_val = sprintf('%02d', $i);
       
   271             $_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i);
       
   272             $_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i);
       
   273             $_html_minutes .= '<option value="' . $_value . '"'
       
   274                 . ($selected === $i ? ' selected="selected"' : '')
       
   275                 . '>' . $_text . '</option>' . $option_separator;
       
   276         }
       
   277 
       
   278         $_html_minutes .= '</select>';
       
   279     }
       
   280 
       
   281     // generate second <select>
       
   282     if ($display_seconds) {
       
   283         $_html_seconds = '';
       
   284         $_extra = '';
       
   285         $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
       
   286         if ($all_extra) {
       
   287             $_extra .= ' ' . $all_extra;
       
   288         }
       
   289         if ($second_extra) {
       
   290             $_extra .= ' ' . $second_extra;
       
   291         }
       
   292 
       
   293         $_html_seconds = '<select name="' . $_name . '"';
       
   294         if ($second_id !== null || $all_id !== null) {
       
   295             $_html_seconds .= ' id="' . smarty_function_escape_special_chars(
       
   296                 $second_id !== null ? ( $second_id ? $second_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
       
   297             ) . '"';
       
   298         }
       
   299         if ($second_size) {
       
   300             $_html_seconds .= ' size="' . $second_size . '"';
       
   301         }
       
   302         $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
       
   303 
       
   304         if (isset($second_empty) || isset($all_empty)) {
       
   305             $_html_seconds .= '<option value="">' . ( isset($second_empty) ? $second_empty : $all_empty ) . '</option>' . $option_separator;
       
   306         }
       
   307 
       
   308         $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
       
   309         for ($i=0; $i <= 59; $i += $second_interval) {
       
   310             $_val = sprintf('%02d', $i);
       
   311             $_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i);
       
   312             $_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i);
       
   313             $_html_seconds .= '<option value="' . $_value . '"'
       
   314                 . ($selected === $i ? ' selected="selected"' : '')
       
   315                 . '>' . $_text . '</option>' . $option_separator;
       
   316         }
       
   317 
       
   318         $_html_seconds .= '</select>';
       
   319     }
       
   320 
       
   321     // generate meridian <select>
       
   322     if ($display_meridian && !$use_24_hours) {
       
   323         $_html_meridian = '';
       
   324         $_extra = '';
       
   325         $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
       
   326         if ($all_extra) {
       
   327             $_extra .= ' ' . $all_extra;
       
   328         }
       
   329         if ($meridian_extra) {
       
   330             $_extra .= ' ' . $meridian_extra;
       
   331         }
       
   332 
       
   333         $_html_meridian = '<select name="' . $_name . '"';
       
   334         if ($meridian_id !== null || $all_id !== null) {
       
   335             $_html_meridian .= ' id="' . smarty_function_escape_special_chars(
       
   336                 $meridian_id !== null ? ( $meridian_id ? $meridian_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
       
   337             ) . '"';
       
   338         }
       
   339         if ($meridian_size) {
       
   340             $_html_meridian .= ' size="' . $meridian_size . '"';
       
   341         }
       
   342         $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
       
   343 
       
   344         if (isset($meridian_empty) || isset($all_empty)) {
       
   345             $_html_meridian .= '<option value="">' . ( isset($meridian_empty) ? $meridian_empty : $all_empty ) . '</option>' . $option_separator;
       
   346         }
       
   347 
       
   348         $_html_meridian .= '<option value="am"'. ($_hour < 12 ? ' selected="selected"' : '') .'>AM</option>' . $option_separator
       
   349             . '<option value="pm"'. ($_hour < 12 ? '' : ' selected="selected"') .'>PM</option>' . $option_separator
       
   350             . '</select>';
       
   351     }
       
   352 
       
   353     $_html = '';
       
   354     foreach (array('_html_hours', '_html_minutes', '_html_seconds', '_html_meridian') as $k) {
       
   355         if (isset($$k)) {
       
   356             if ($_html) {
       
   357                 $_html .= $field_separator;
       
   358             }
       
   359             $_html .= $$k;
       
   360         }
       
   361     }
       
   362 
       
   363     return $_html;
       
   364 }
       
   365 
       
   366 ?>