Вход Регистрация
Файл: app/lib/smarty/plugins/function.html_select_time.php
Строк: 350
<?php
/**
 * Smarty plugin
 *
 * @package    Smarty
 * @subpackage PluginsFunction
 */

/**
 * @ignore
 */
require_once(SMARTY_PLUGINS_DIR 'shared.escape_special_chars.php');
/**
 * @ignore
 */
require_once(SMARTY_PLUGINS_DIR 'shared.make_timestamp.php');

/**
 * Smarty {html_select_time} function plugin
 * Type:     function<br>
 * Name:     html_select_time<br>
 * Purpose:  Prints the dropdowns for time selection
 *
 * @link     http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
 *           (Smarty online manual)
 * @author   Roberto Berto <roberto@berto.net>
 * @author   Monte Ohrt <monte AT ohrt DOT com>
 *
 * @param array $params parameters
 *
 * @return string
 * @uses     smarty_make_timestamp()
 */
function smarty_function_html_select_time($params)
{
    
$prefix "Time_";
    
$field_array null;
    
$field_separator "n";
    
$option_separator "n";
    
$time null;

    
$display_hours true;
    
$display_minutes true;
    
$display_seconds true;
    
$display_meridian true;

    
$hour_format '%02d';
    
$hour_value_format '%02d';
    
$minute_format '%02d';
    
$minute_value_format '%02d';
    
$second_format '%02d';
    
$second_value_format '%02d';

    
$hour_size null;
    
$minute_size null;
    
$second_size null;
    
$meridian_size null;

    
$all_empty null;
    
$hour_empty null;
    
$minute_empty null;
    
$second_empty null;
    
$meridian_empty null;

    
$all_id null;
    
$hour_id null;
    
$minute_id null;
    
$second_id null;
    
$meridian_id null;

    
$use_24_hours true;
    
$minute_interval 1;
    
$second_interval 1;

    
$extra_attrs '';
    
$all_extra null;
    
$hour_extra null;
    
$minute_extra null;
    
$second_extra null;
    
$meridian_extra null;

    foreach (
$params as $_key => $_value) {
        switch (
$_key) {
            case 
'time':
                if (!
is_array($_value) && $_value !== null) {
                    
$time smarty_make_timestamp($_value);
                }
                break;

            case 
'prefix':
            case 
'field_array':

            case 
'field_separator':
            case 
'option_separator':

            case 
'all_extra':
            case 
'hour_extra':
            case 
'minute_extra':
            case 
'second_extra':
            case 
'meridian_extra':

            case 
'all_empty':
            case 
'hour_empty':
            case 
'minute_empty':
            case 
'second_empty':
            case 
'meridian_empty':

            case 
'all_id':
            case 
'hour_id':
            case 
'minute_id':
            case 
'second_id':
            case 
'meridian_id':

            case 
'hour_format':
            case 
'hour_value_format':
            case 
'minute_format':
            case 
'minute_value_format':
            case 
'second_format':
            case 
'second_value_format':
                $
$_key = (string) $_value;
                break;

            case 
'display_hours':
            case 
'display_minutes':
            case 
'display_seconds':
            case 
'display_meridian':
            case 
'use_24_hours':
                $
$_key = (bool) $_value;
                break;

            case 
'minute_interval':
            case 
'second_interval':

            case 
'hour_size':
            case 
'minute_size':
            case 
'second_size':
            case 
'meridian_size':
                $
$_key = (int) $_value;
                break;

            default:
                if (!
is_array($_value)) {
                    
$extra_attrs .= ' ' $_key '="' smarty_function_escape_special_chars($_value) . '"';
                } else {
                    
trigger_error("html_select_date: extra attribute '$_key' cannot be an array"E_USER_NOTICE);
                }
                break;
        }
    }

    if (isset(
$params['time']) && is_array($params['time'])) {
        if (isset(
$params['time'][$prefix 'Hour'])) {
            
// $_REQUEST[$field_array] given
            
foreach (array('H' => 'Hour''i' => 'Minute''s' => 'Second') as $_elementKey => $_elementName) {
                
$_variableName '_' strtolower($_elementName);
                $
$_variableName = isset($params['time'][$prefix $_elementName])
                    ? 
$params['time'][$prefix $_elementName]
                    : 
date($_elementKey);
            }
            
$_meridian = isset($params['time'][$prefix 'Meridian'])
                ? (
' ' $params['time'][$prefix 'Meridian'])
                : 
'';
            
$time strtotime($_hour ':' $_minute ':' $_second $_meridian);
            list(
$_hour$_minute$_second) = $time explode('-'date('H-i-s'$time));
        } elseif (isset(
$params['time'][$field_array][$prefix 'Hour'])) {
            
// $_REQUEST given
            
foreach (array('H' => 'Hour''i' => 'Minute''s' => 'Second') as $_elementKey => $_elementName) {
                
$_variableName '_' strtolower($_elementName);
                $
$_variableName = isset($params['time'][$field_array][$prefix $_elementName])
                    ? 
$params['time'][$field_array][$prefix $_elementName]
                    : 
date($_elementKey);
            }
            
$_meridian = isset($params['time'][$field_array][$prefix 'Meridian'])
                ? (
' ' $params['time'][$field_array][$prefix 'Meridian'])
                : 
'';
            
$time strtotime($_hour ':' $_minute ':' $_second $_meridian);
            list(
$_hour$_minute$_second) = $time explode('-'date('H-i-s'$time));
        } else {
            
// no date found, use NOW
            
list($_year$_month$_day) = $time explode('-'date('Y-m-d'));
        }
    } elseif (
$time === null) {
        if (
array_key_exists('time'$params)) {
            
$_hour $_minute $_second $time null;
        } else {
            list(
$_hour$_minute$_second) = $time explode('-'date('H-i-s'));
        }
    } else {
        list(
$_hour$_minute$_second) = $time explode('-'date('H-i-s'$time));
    }

    
// generate hour <select>
    
if ($display_hours) {
        
$_html_hours '';
        
$_extra '';
        
$_name $field_array ? ($field_array '[' $prefix 'Hour]') : ($prefix 'Hour');
        if (
$all_extra) {
            
$_extra .= ' ' $all_extra;
        }
        if (
$hour_extra) {
            
$_extra .= ' ' $hour_extra;
        }

        
$_html_hours '<select name="' $_name '"';
        if (
$hour_id !== null || $all_id !== null) {
            
$_html_hours .= ' id="' smarty_function_escape_special_chars(
                    
$hour_id !== null ? ($hour_id $hour_id $_name) : ($all_id ? ($all_id $_name) : $_name)
                ) . 
'"';
        }
        if (
$hour_size) {
            
$_html_hours .= ' size="' $hour_size '"';
        }
        
$_html_hours .= $_extra $extra_attrs '>' $option_separator;

        if (isset(
$hour_empty) || isset($all_empty)) {
            
$_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty $all_empty) . '</option>' $option_separator;
        }

        
$start $use_24_hours 1;
        
$end $use_24_hours 23 12;
        for (
$i $start$i <= $end$i ++) {
            
$_val sprintf('%02d'$i);
            
$_text $hour_format == '%02d' $_val sprintf($hour_format$i);
            
$_value $hour_value_format == '%02d' $_val sprintf($hour_value_format$i);

            if (!
$use_24_hours) {
                
$_hour12 $_hour == 0
                    
12
                    
: ($_hour <= 12 $_hour $_hour 12);
            }

            
$selected $_hour !== null ? ($use_24_hours $_hour == $_val $_hour12 == $_val) : null;
            
$_html_hours .= '<option value="' $_value '"'
                
. ($selected ' selected="selected"' '')
                . 
'>' $_text '</option>' $option_separator;
        }

        
$_html_hours .= '</select>';
    }

    
// generate minute <select>
    
if ($display_minutes) {
        
$_html_minutes '';
        
$_extra '';
        
$_name $field_array ? ($field_array '[' $prefix 'Minute]') : ($prefix 'Minute');
        if (
$all_extra) {
            
$_extra .= ' ' $all_extra;
        }
        if (
$minute_extra) {
            
$_extra .= ' ' $minute_extra;
        }

        
$_html_minutes '<select name="' $_name '"';
        if (
$minute_id !== null || $all_id !== null) {
            
$_html_minutes .= ' id="' smarty_function_escape_special_chars(
                    
$minute_id !== null ? ($minute_id $minute_id $_name) : ($all_id ? ($all_id $_name) : $_name)
                ) . 
'"';
        }
        if (
$minute_size) {
            
$_html_minutes .= ' size="' $minute_size '"';
        }
        
$_html_minutes .= $_extra $extra_attrs '>' $option_separator;

        if (isset(
$minute_empty) || isset($all_empty)) {
            
$_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty $all_empty) . '</option>' $option_separator;
        }

        
$selected $_minute !== null ? ($_minute $_minute $minute_interval) : null;
        for (
$i 0$i <= 59$i += $minute_interval) {
            
$_val sprintf('%02d'$i);
            
$_text $minute_format == '%02d' $_val sprintf($minute_format$i);
            
$_value $minute_value_format == '%02d' $_val sprintf($minute_value_format$i);
            
$_html_minutes .= '<option value="' $_value '"'
                
. ($selected === $i ' selected="selected"' '')
                . 
'>' $_text '</option>' $option_separator;
        }

        
$_html_minutes .= '</select>';
    }

    
// generate second <select>
    
if ($display_seconds) {
        
$_html_seconds '';
        
$_extra '';
        
$_name $field_array ? ($field_array '[' $prefix 'Second]') : ($prefix 'Second');
        if (
$all_extra) {
            
$_extra .= ' ' $all_extra;
        }
        if (
$second_extra) {
            
$_extra .= ' ' $second_extra;
        }

        
$_html_seconds '<select name="' $_name '"';
        if (
$second_id !== null || $all_id !== null) {
            
$_html_seconds .= ' id="' smarty_function_escape_special_chars(
                    
$second_id !== null ? ($second_id $second_id $_name) : ($all_id ? ($all_id $_name) : $_name)
                ) . 
'"';
        }
        if (
$second_size) {
            
$_html_seconds .= ' size="' $second_size '"';
        }
        
$_html_seconds .= $_extra $extra_attrs '>' $option_separator;

        if (isset(
$second_empty) || isset($all_empty)) {
            
$_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty $all_empty) . '</option>' $option_separator;
        }

        
$selected $_second !== null ? ($_second $_second $second_interval) : null;
        for (
$i 0$i <= 59$i += $second_interval) {
            
$_val sprintf('%02d'$i);
            
$_text $second_format == '%02d' $_val sprintf($second_format$i);
            
$_value $second_value_format == '%02d' $_val sprintf($second_value_format$i);
            
$_html_seconds .= '<option value="' $_value '"'
                
. ($selected === $i ' selected="selected"' '')
                . 
'>' $_text '</option>' $option_separator;
        }

        
$_html_seconds .= '</select>';
    }

    
// generate meridian <select>
    
if ($display_meridian && !$use_24_hours) {
        
$_html_meridian '';
        
$_extra '';
        
$_name $field_array ? ($field_array '[' $prefix 'Meridian]') : ($prefix 'Meridian');
        if (
$all_extra) {
            
$_extra .= ' ' $all_extra;
        }
        if (
$meridian_extra) {
            
$_extra .= ' ' $meridian_extra;
        }

        
$_html_meridian '<select name="' $_name '"';
        if (
$meridian_id !== null || $all_id !== null) {
            
$_html_meridian .= ' id="' smarty_function_escape_special_chars(
                    
$meridian_id !== null ? ($meridian_id $meridian_id $_name) : ($all_id ? ($all_id $_name) : $_name)
                ) . 
'"';
        }
        if (
$meridian_size) {
            
$_html_meridian .= ' size="' $meridian_size '"';
        }
        
$_html_meridian .= $_extra $extra_attrs '>' $option_separator;

        if (isset(
$meridian_empty) || isset($all_empty)) {
            
$_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty $all_empty) . '</option>' $option_separator;
        }

        
$_html_meridian .= '<option value="am"' . ($_hour && $_hour 12 ' selected="selected"' '') . '>AM</option>' $option_separator
            
'<option value="pm"' . ($_hour 12 '' ' selected="selected"') . '>PM</option>' $option_separator
            
'</select>';
    }

    
$_html '';
    foreach (array(
'_html_hours''_html_minutes''_html_seconds''_html_meridian') as $k) {
        if (isset($
$k)) {
            if (
$_html) {
                
$_html .= $field_separator;
            }
            
$_html .= $$k;
        }
    }

    return 
$_html;
}
Онлайн: 1
Реклама