2014-02-11 08:44:52 +02:00
|
|
|
|
<?php
|
2014-10-08 08:20:29 +03:00
|
|
|
|
/*
|
2014-02-11 08:44:52 +02:00
|
|
|
|
* LiveStreet CMS
|
|
|
|
|
* Copyright © 2013 OOO "ЛС-СОФТ"
|
|
|
|
|
*
|
|
|
|
|
* ------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreetcms.com
|
|
|
|
|
* Contact e-mail: office@livestreetcms.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
* ------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* @link http://www.livestreetcms.com
|
|
|
|
|
* @copyright 2013 OOO "ЛС-СОФТ"
|
|
|
|
|
* @author Maxim Mzhelskiy <rus.engine@gmail.com>
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
2014-10-08 08:20:29 +03:00
|
|
|
|
/**
|
|
|
|
|
* Объект управления типом date
|
|
|
|
|
*
|
|
|
|
|
* @package application.modules.property
|
|
|
|
|
* @since 2.0
|
|
|
|
|
*/
|
2014-10-08 11:49:34 +03:00
|
|
|
|
class ModuleProperty_EntityValueTypeDate extends ModuleProperty_EntityValueType
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
protected $sFormatDateInput = 'dd.MM.yyyy';
|
2014-10-26 16:36:41 +02:00
|
|
|
|
protected $sFormatDateTimeInput = 'dd.MM.yyyy HH:mm';
|
2014-10-08 11:49:34 +03:00
|
|
|
|
|
|
|
|
|
public function getValueForDisplay()
|
|
|
|
|
{
|
|
|
|
|
$oValue = $this->getValueObject();
|
|
|
|
|
$oProperty = $oValue->getProperty();
|
|
|
|
|
|
2017-01-22 16:27:49 +02:00
|
|
|
|
return $oValue->getValueDate() ? $this->Viewer_GetDateFormat(strtotime($oValue->getValueDate()), $oProperty->getParam('format_out')) : '';
|
2014-10-08 11:49:34 +03:00
|
|
|
|
}
|
|
|
|
|
|
2015-02-13 13:17:16 +02:00
|
|
|
|
public function isEmpty()
|
|
|
|
|
{
|
|
|
|
|
return $this->getValueObject()->getValueDate() ? false : true;
|
|
|
|
|
}
|
|
|
|
|
|
2014-10-08 11:49:34 +03:00
|
|
|
|
public function getValueForForm()
|
|
|
|
|
{
|
|
|
|
|
$oValue = $this->getValueObject();
|
|
|
|
|
$sDate = $oValue->getValueDate();
|
2014-10-26 16:36:41 +02:00
|
|
|
|
$iTime = strtotime($sDate);
|
2014-10-08 11:49:34 +03:00
|
|
|
|
// TODO: нужен конвертор формата дат вида Y в yyyy для учета $this->sFormatDateInput
|
2017-01-22 16:27:49 +02:00
|
|
|
|
return $sDate ? date('d.m.Y', $iTime) : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getValueTimeForForm()
|
|
|
|
|
{
|
|
|
|
|
$oValue = $this->getValueObject();
|
|
|
|
|
$sDate = $oValue->getValueDate();
|
|
|
|
|
return $sDate ? date('H:i', strtotime($sDate)) : '';
|
2014-10-08 11:49:34 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function validate()
|
|
|
|
|
{
|
|
|
|
|
/**
|
2017-01-22 16:27:49 +02:00
|
|
|
|
* Данные поступают ввиде массива array( 'date'=>'..', 'time' => '..' )
|
2014-10-08 11:49:34 +03:00
|
|
|
|
*/
|
|
|
|
|
$aValue = $this->getValueForValidate();
|
2014-10-26 16:36:41 +02:00
|
|
|
|
$oValueObject = $this->getValueObject();
|
|
|
|
|
$oProperty = $oValueObject->getProperty();
|
2014-10-08 11:49:34 +03:00
|
|
|
|
$this->setValueForValidateDate(isset($aValue['date']) ? $aValue['date'] : '');
|
|
|
|
|
/**
|
2014-10-26 16:36:41 +02:00
|
|
|
|
* Формируем формат для валидации даты
|
|
|
|
|
* В инпуте дата идет в формате d.m.Y и плюс H:i если используется время
|
2014-10-08 11:49:34 +03:00
|
|
|
|
*/
|
2017-01-22 16:27:49 +02:00
|
|
|
|
if ($oProperty->getParam('use_time')) {
|
|
|
|
|
$sFormatValidate = $this->sFormatDateTimeInput;
|
|
|
|
|
if (isset($aValue['time'])) {
|
|
|
|
|
$this->setValueForValidateDate($this->getValueForValidateDate() . ' ' . $aValue['time']);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$sFormatValidate = $this->sFormatDateInput;
|
|
|
|
|
}
|
2014-10-26 16:36:41 +02:00
|
|
|
|
|
|
|
|
|
$mRes = $this->validateStandart('date', array('format' => $sFormatValidate), 'value_for_validate_date');
|
2014-10-08 11:49:34 +03:00
|
|
|
|
if ($mRes === true) {
|
|
|
|
|
/**
|
|
|
|
|
* Формируем полную дату
|
|
|
|
|
*/
|
|
|
|
|
if ($this->getValueForValidateDate()) {
|
2014-10-26 16:36:41 +02:00
|
|
|
|
$sTimeFull = strtotime($this->getValueForValidateDate());
|
2014-10-08 11:49:34 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверка на ограничение даты
|
|
|
|
|
*/
|
|
|
|
|
if ($oProperty->getValidateRuleOne('disallowFuture')) {
|
|
|
|
|
if ($sTimeFull > time()) {
|
2017-01-23 14:46:35 +02:00
|
|
|
|
return "{$oProperty->getTitle()}: " . $this->Lang_Get('property.notices.validate_value_date_future');
|
2014-10-08 11:49:34 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Проверка на ограничения только если это новая запись, либо старая с изменениями
|
|
|
|
|
*/
|
|
|
|
|
if ($oValueObject->_isNew() or strtotime($oValueObject->getValueDate()) != $sTimeFull) {
|
|
|
|
|
if ($oProperty->getValidateRuleOne('disallowPast')) {
|
|
|
|
|
if ($sTimeFull < time()) {
|
2017-01-23 14:46:35 +02:00
|
|
|
|
return "{$oProperty->getTitle()}: " . $this->Lang_Get('property.notices.validate_value_date_past');
|
2014-10-08 11:49:34 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$sTimeFull = null;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Переопределяем результирующее значение
|
|
|
|
|
*/
|
|
|
|
|
$this->setValueForValidate($sTimeFull ? date('Y-m-d H:i:00', $sTimeFull) : null);
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return $mRes;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function setValue($mValue)
|
|
|
|
|
{
|
|
|
|
|
$this->resetAllValue();
|
|
|
|
|
$oValue = $this->getValueObject();
|
|
|
|
|
$oValue->setValueDate($mValue ? $mValue : null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function prepareValidateRulesRaw($aRulesRaw)
|
|
|
|
|
{
|
|
|
|
|
$aRules = array();
|
|
|
|
|
$aRules['allowEmpty'] = isset($aRulesRaw['allowEmpty']) ? false : true;
|
|
|
|
|
$aRules['disallowFuture'] = isset($aRulesRaw['disallowFuture']) ? true : false;
|
|
|
|
|
$aRules['disallowPast'] = isset($aRulesRaw['disallowPast']) ? true : false;
|
|
|
|
|
|
|
|
|
|
return $aRules;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function prepareParamsRaw($aParamsRaw)
|
|
|
|
|
{
|
|
|
|
|
$aParams = array();
|
|
|
|
|
$aParams['use_time'] = isset($aParamsRaw['use_time']) ? true : false;
|
|
|
|
|
|
|
|
|
|
if (isset($aParamsRaw['format_out'])) {
|
|
|
|
|
$aParams['format_out'] = $aParamsRaw['format_out'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $aParams;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getParamsDefault()
|
|
|
|
|
{
|
|
|
|
|
return array(
|
2014-10-26 16:36:41 +02:00
|
|
|
|
'format_out' => 'Y-m-d H:i',
|
2014-10-08 11:49:34 +03:00
|
|
|
|
'use_time' => true,
|
|
|
|
|
);
|
|
|
|
|
}
|
2014-02-11 08:44:52 +02:00
|
|
|
|
}
|