yf_form2_datetime class

Fileplugins/form2/classes/form2/yf_form2_datetime.class.php
Use_class('form2_datetime', 'classes/form2/')

Public properties

PropertyDefaultDescription
None declared in this class.

Public methods 1

public function datetime_select($name = '', $desc = '', $extra = [], $replace = [], $form = null)

Datetimepicker, src: http://tarruda.github.io/bootstrap-datetimepicker/ params : no_date // no date picker no_time // no time picker min_date // min available date.

    public function datetime_select($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($desc)) {
            $extra += $desc;
            $desc = '';
        }
        if ( ! is_array($extra)) {
            $extra = [];
        }
        $extra['name'] = ($extra['name'] ?? null) ?: ($name ?: 'date');
        $extra['desc'] = $form->_prepare_desc($extra, $desc);
        $extra['limit_date_format'] = $extra['limit_date_format'] ? $extra['limit_date_format'] : 'm/d/Y H:i';

        $format_js = $format_php = $placeholder = [];
        $extra['no_time'] = $extra['with_time'] ? ! $extra['with_time'] : $extra['no_time'];
        $extra['no_time'] = isset($extra['no_time']) ? $extra['no_time'] : 1;
        if ($extra['no_date'] != 1) {
            $format_js[] = ! empty($extra['date_format_js']) ? $extra['date_format_js'] : 'DD.MM.YYYY';
            $format_php[] = ! empty($extra['date_format_php']) ? $extra['date_format_php'] : 'd.m.Y';
            $placeholder[] = ! empty($extra['date_placeholder']) ? $extra['date_placeholder'] : 'DD.MM.YYYY';
        }
        if ($extra['no_time'] != 1) {
            $format_js[] = ! empty($extra['time_format_js']) ? $extra['time_format_js'] : 'HH:mm';
            $format_php[] = ! empty($extra['time_format_php']) ? $extra['time_format_php'] : 'H:i';
            $placeholder[] = ! empty($extra['time_placeholder']) ? $extra['time_placeholder'] : 'HH:MM';
        }
        $_format_js = implode(' ', $format_js);
        $_format_php = implode(' ', $format_php);
        $_placeholder = implode(' ', $placeholder);
        $extra['placeholder'] = ($extra['placeholder'] ?? null) ?: $_placeholder;

        // Compatibility with filter
        if ( ! strlen((string) ($extra['value'] ?? ''))) {
            if (isset($extra['selected'])) {
                $value = $extra['selected'];
            } elseif (isset($form->_params['selected'])) {
                $value = $form->_params['selected'][$extra['name']];
            } elseif (isset($form->_replace[$extra['name']])) {
                $value = $form->_replace[$extra['name']];
            }
            $extra['value'] = empty($value) || $value == '0000-00-00 00:00:00' ? null : strtotime($value);
        }
        $extra['value'] = empty($extra['value']) ? '' : date($_format_php, $extra['value']);

        $debug_picker = isset($extra['debug_picker']) ? $extra['debug_picker'] : ( ! MAIN_TYPE_ADMIN && (bool) (defined('DEBUG_MODE') ? constant('DEBUG_MODE') : null));

        asset('bootstrap-datetimepicker');
        jquery('
			$("#' . $extra['name'] . '").datetimepicker({
				locale: "' . conf('language') . '"
				, icons: {
					time: "icon icon-time fa fa-clock-o",
					date: "icon icon-calendar fa fa-calendar",
					up:   "icon icon-arrow-up fa fa-arrow-up",
					down: "icon icon-arrow-down fa fa-arrow-down"
				}
				'
                . ($extra['min_date'] ? ', minDate: \'' . date($extra['limit_date_format'], $extra['min_date']) . '\'' : '')
                . ($extra['max_date'] ? ', maxDate: \'' . date($extra['limit_date_format'], $extra['max_date']) . '\'' : '')
                . ($extra['default_date'] ? ', defaultDate: \'' . date($extra['limit_date_format'], $extra['default_date']) . '\'' : '')
                . ($extra['side_by_side'] && $extra['no_time'] != 1 ? ', sideBySide: true' : '')
                . ($extra['stepping'] ? ', stepping: ' . $extra['stepping'] : '')
                . ($extra['widgetPositioning'] ? ', widgetPositioning: ' . $extra['widgetPositioning'] : '')
                . ($debug_picker ? ', debug: true' : '')
                . '
			});
		');
        $extra['data-date-format'] = $_format_js;

        $extra['type'] = 'text';
        $extra['class_add'] = 'input-medium datetimepicker';
        $extra['prepend'] = isset($extra['prepend']) ? $extra['prepend'] : '<i class="' . $form->CLASS_ICON_CALENDAR . '"></i>';
        return $form->input($extra['name'], $extra['desc'], $extra, $replace);
    }