XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
function.html_select_time.php
Go to the documentation of this file.
1 <?php
24 function smarty_function_html_select_time($params, &$smarty)
25 {
26  require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
27  require_once $smarty->_get_plugin_filepath('function','html_options');
28  /* Default values. */
29  $prefix = "Time_";
30  $time = time();
31  $display_hours = true;
32  $display_minutes = true;
33  $display_seconds = true;
34  $display_meridian = true;
35  $use_24_hours = true;
36  $minute_interval = 1;
37  $second_interval = 1;
38  /* Should the select boxes be part of an array when returned from PHP?
39  e.g. setting it to "birthday", would create "birthday[Hour]",
40  "birthday[Minute]", "birthday[Seconds]" & "birthday[Meridian]".
41  Can be combined with prefix. */
42  $field_array = null;
43  $all_extra = null;
44  $hour_extra = null;
45  $minute_extra = null;
46  $second_extra = null;
47  $meridian_extra = null;
48 
49  foreach ($params as $_key=>$_value) {
50  switch ($_key) {
51  case 'prefix':
52  case 'time':
53  case 'field_array':
54  case 'all_extra':
55  case 'hour_extra':
56  case 'minute_extra':
57  case 'second_extra':
58  case 'meridian_extra':
59  $$_key = (string)$_value;
60  break;
61 
62  case 'display_hours':
63  case 'display_minutes':
64  case 'display_seconds':
65  case 'display_meridian':
66  case 'use_24_hours':
67  $$_key = (bool)$_value;
68  break;
69 
70  case 'minute_interval':
71  case 'second_interval':
72  $$_key = (int)$_value;
73  break;
74 
75  default:
76  $smarty->trigger_error("[html_select_time] unknown parameter $_key", E_USER_WARNING);
77  }
78  }
79 
81 
82  $html_result = '';
83 
84  if ($display_hours) {
85  $hours = $use_24_hours ? range(0, 23) : range(1, 12);
86  $hour_fmt = $use_24_hours ? '%H' : '%I';
87  for ($i = 0, $for_max = count($hours); $i < $for_max; $i++)
88  $hours[$i] = sprintf('%02d', $hours[$i]);
89  $html_result .= '<select name=';
90  if (null !== $field_array) {
91  $html_result .= '"' . $field_array . '[' . $prefix . 'Hour]"';
92  } else {
93  $html_result .= '"' . $prefix . 'Hour"';
94  }
95  if (null !== $hour_extra){
96  $html_result .= ' ' . $hour_extra;
97  }
98  if (null !== $all_extra){
99  $html_result .= ' ' . $all_extra;
100  }
101  $html_result .= '>'."\n";
102  $html_result .= smarty_function_html_options(array('output' => $hours,
103  'values' => $hours,
104  'selected' => strftime($hour_fmt, $time),
105  'print_result' => false),
106  $smarty);
107  $html_result .= "</select>\n";
108  }
109 
110  if ($display_minutes) {
111  $all_minutes = range(0, 59);
112  for ($i = 0, $for_max = count($all_minutes); $i < $for_max; $i+= $minute_interval)
113  $minutes[] = sprintf('%02d', $all_minutes[$i]);
114  $selected = intval(floor(strftime('%M', $time) / $minute_interval) * $minute_interval);
115  $html_result .= '<select name=';
116  if (null !== $field_array) {
117  $html_result .= '"' . $field_array . '[' . $prefix . 'Minute]"';
118  } else {
119  $html_result .= '"' . $prefix . 'Minute"';
120  }
121  if (null !== $minute_extra){
122  $html_result .= ' ' . $minute_extra;
123  }
124  if (null !== $all_extra){
125  $html_result .= ' ' . $all_extra;
126  }
127  $html_result .= '>'."\n";
128 
129  $html_result .= smarty_function_html_options(array('output' => $minutes,
130  'values' => $minutes,
131  'selected' => $selected,
132  'print_result' => false),
133  $smarty);
134  $html_result .= "</select>\n";
135  }
136 
137  if ($display_seconds) {
138  $all_seconds = range(0, 59);
139  for ($i = 0, $for_max = count($all_seconds); $i < $for_max; $i+= $second_interval)
140  $seconds[] = sprintf('%02d', $all_seconds[$i]);
141  $selected = intval(floor(strftime('%S', $time) / $second_interval) * $second_interval);
142  $html_result .= '<select name=';
143  if (null !== $field_array) {
144  $html_result .= '"' . $field_array . '[' . $prefix . 'Second]"';
145  } else {
146  $html_result .= '"' . $prefix . 'Second"';
147  }
148 
149  if (null !== $second_extra){
150  $html_result .= ' ' . $second_extra;
151  }
152  if (null !== $all_extra){
153  $html_result .= ' ' . $all_extra;
154  }
155  $html_result .= '>'."\n";
156 
157  $html_result .= smarty_function_html_options(array('output' => $seconds,
158  'values' => $seconds,
159  'selected' => $selected,
160  'print_result' => false),
161  $smarty);
162  $html_result .= "</select>\n";
163  }
164 
165  if ($display_meridian && !$use_24_hours) {
166  $html_result .= '<select name=';
167  if (null !== $field_array) {
168  $html_result .= '"' . $field_array . '[' . $prefix . 'Meridian]"';
169  } else {
170  $html_result .= '"' . $prefix . 'Meridian"';
171  }
172 
173  if (null !== $meridian_extra){
174  $html_result .= ' ' . $meridian_extra;
175  }
176  if (null !== $all_extra){
177  $html_result .= ' ' . $all_extra;
178  }
179  $html_result .= '>'."\n";
180 
181  $html_result .= smarty_function_html_options(array('output' => array('AM', 'PM'),
182  'values' => array('am', 'pm'),
183  'selected' => strtolower(strftime('%p', $time)),
184  'print_result' => false),
185  $smarty);
186  $html_result .= "</select>\n";
187  }
188 
189  return $html_result;
190 }
191 
192 /* vim: set expandtab: */
193 
194 ?>