Вход Регистрация
Файл: system/fields/date.php
Строк: 115
<?php

class fieldDate extends cmsFormField {

    public 
$title       LANG_PARSER_DATE;
    public 
$sql         'timestamp NULL DEFAULT NULL';
    public 
$filter_type 'date';
    public 
$filter_hint LANG_PARSER_DATE_FILTER_HINT;
    public 
$var_type    'string';

    public function 
getOptions(){
        return array(
            new 
fieldCheckbox('show_time', array(
                
'title' => LANG_PARSER_DATE_SHOW_TIME,
                
'default' => false,
                
'extended_option' => true
            
)),
            new 
fieldCheckbox('filter_range', array(
                
'title' => LANG_PARSER_NUMBER_FILTER_RANGE,
                
'default' => true
            
)),
        );
    }

    public function 
getRules() {

        if(
$this->context == 'filter' && $this->getOption('filter_range')){
            
$this->rules[] = array('date_range');
        } else {
            
$this->rules[] = array('date');
        }

        return 
$this->rules;

    }

    public function 
parse($value){
        return 
$value html_date($value$this->getOption('show_time')) : null;
    }

    public function 
getStringValue($value){

        if(!
$value){ return ''; }

        if(
is_array($value)){

            
$result_string '';

            if (!empty(
$value['from'])){
                
$result_string .= LANG_FROM.' '.$this->getStringValue($value['from']).' ';
            }

            if (!empty(
$value['to'])){
                
$result_string .= LANG_TO.' '.$this->getStringValue($value['to']);
            }

            return 
$result_string;

        }

        return 
date(cmsConfig::get('date_format'), strtotime($value));

    }

    public function 
getFilterInput($value) {

        if (
$this->getOption('filter_range')){

            
$from = !empty($value['from']) ? date('d.m.Y'strtotime($value['from'])) : false;
            
$to = !empty($value['to']) ? date('d.m.Y'strtotime($value['to'])) : false;

            if(!
$this->show_filter_input_title){
                
$this->title false;
            }

            return 
cmsTemplate::getInstance()->renderFormField($this->class.'_range', array(
                
'field' => $this,
                
'from'  => $from,
                
'to'    => $to
            
));


        } else {

            return 
parent::getFilterInput($value);

        }

    }

    public function 
applyFilter($model$value) {

        if (!
is_array($value) || !empty($value['date'])){

            if(!empty(
$value['date'])){
                
$value sprintf('%s %02d:%02d'$value['date'], $value['hours'], $value['mins']);
            }

            
$date_start date('Y-m-d'strtotime($value));
            
$date_final date('Y-m-d'strtotime($value)+60*60*24);

            return 
$model->filterBetween($this->name$date_start$date_final);

        } elseif(!empty(
$value['from']) || !empty($value['to'])) {

            if (!empty(
$value['from'])){
                
$model->filterGtEqual($this->namedate('Y-m-d'strtotime($value['from'])));
            }
            if (!empty(
$value['to'])){
                
$model->filterLtEqual($this->namedate('Y-m-d'strtotime($value['to'])+60*60*24));
            }

            return 
$model;

        }

        return 
parent::applyFilter($model$value);

    }

    public function 
getDefaultVarType($is_filter false) {

        if(
$this->context == 'filter'){
            
$is_filter true;
        }

        if ((
$is_filter && $this->getOption('filter_range')) || $this->getOption('show_time')){
            
$this->var_type 'array';
        }

        return 
parent::getDefaultVarType($is_filter);

    }

    public function 
store($value$is_submitted$old_value=null){

        if(!
$value){ return null; }

        if (!
is_array($value) || !empty($value['date'])){

            if(
is_array($value)){
                if(!empty(
$value['date'])){
                    
$value sprintf('%s %02d:%02d'$value['date'], $value['hours'], $value['mins']);
                    return 
date('Y-m-d H:i:s'strtotime($value));
                }
            } else {
                return 
date('Y-m-d'strtotime($value));
            }

        } elseif(!empty(
$value['from']) || !empty($value['to'])) {

            if (!empty(
$value['from'])){
                
$value['from'] = $this->store($value['from'], $is_submitted$old_value);
            }
            if (!empty(
$value['to'])){
                
$value['to'] = $this->store($value['to'], $is_submitted$old_value);
            }

            return 
$value;

        }

        return 
null;

    }

    public function 
storeFilter($value){
        return 
$this->store($valuefalse);
    }

    public function 
getInput($value){

        if(
$value){
            if(
is_array($value)){
                if(!empty(
$value['date'])){
                    
$value sprintf('%s %02d:%02d'$value['date'], $value['hours'], $value['mins']);
                } else {
                    
$value null;
                }
            }
        }

        
$this->data['show_time'] = $this->getOption('show_time');

        
$this->data['date'] = $value date('d.m.Y'strtotime($value)) : '';

        if(
$this->data['show_time']){
            if(!
$value){
                
$this->data['hours'] = 0;
                
$this->data['mins'] = 0;
            } else {
                list(
$this->data['hours'], $this->data['mins']) = explode(':'date('H:i'strtotime($value)));
            }
            
$this->data['fname_date']   = $this->element_name.'[date]';
            
$this->data['fname_hours']  = $this->element_name.'[hours]';
            
$this->data['fname_mins']   = $this->element_name.'[mins]';
        } else {
            
$this->data['fname_date']   = $this->element_name;
        }

        return 
parent::getInput($value);

    }

}
Онлайн: 0
Реклама