[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/plugins/ -> function.html_select_time.php (source)

   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 <[email protected]>
  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  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1