3namespace Bitrix\Main\UserField\Types;
6use Bitrix\Main\Context;
7use Bitrix\Main\Localization\Loc;
8use Bitrix\Main\Text\HtmlFilter;
13Loc::loadMessages(__FILE__);
31 'DESCRIPTION' => Loc::GetMessage(
'USER_TYPE_DT_DESCRIPTION'),
32 'BASE_TYPE' => CUserTypeManager::BASE_TYPE_DATETIME,
52 $def = $userField[
'SETTINGS'][
'DEFAULT_VALUE'] ??
'';
57 $def = [
'TYPE' => static::TYPE_NONE,
'VALUE' => $value];
61 $datetimeObject = \DateTime::createFromFormat(
'Y-m-d H:i:s',
$def[
'VALUE']);
62 if (!$datetimeObject || $datetimeObject->format(
'Y-m-d H:i:s') !==
$def[
'VALUE'])
64 $def[
'VALUE'] = \CDatabase::FormatDate(
66 CLang::GetDateFormat(static::FORMAT_TYPE_FULL),
73 $def[
'VALUE'] = $value;
77 $def = [
'TYPE' => static::TYPE_NONE,
'VALUE' => $value];
81 'DEFAULT_VALUE' =>
$def,
82 'USE_SECOND' => (($userField[
'SETTINGS'][
'USE_SECOND'] ??
'Y') ===
'N' ?
'N' :
'Y'),
83 'USE_TIMEZONE' => (($userField[
'SETTINGS'][
'USE_TIMEZONE'] ??
'N') ===
'Y' ?
'Y' :
'N'),
95 'id' => $additionalParameters[
'ID'],
96 'name' => $additionalParameters[
'NAME'],
110 $value = (string)$value;
119 'id' => $userField[
'FIELD_NAME'],
120 'text' => Loc::GetMessage(
'USER_TYPE_DT_ERROR',
122 '#FIELD_NAME#' => HtmlFilter::encode(
123 $userField[
'EDIT_FORM_LABEL'] <>
''
124 ? $userField[
'EDIT_FORM_LABEL'] : $userField[
'FIELD_NAME']
142 $value = $fetched[
'VALUE'];
144 if($userField[
'MULTIPLE'] ===
'Y' && !($value instanceof
Type\
DateTime))
147 if(mb_strlen($value) <= 1)
174 $isFieldWithoutTimeZone = static::isFieldWithoutTimeZone($userField);
176 if ($isFieldWithoutTimeZone)
178 \CTimeZone::Disable();
181 $value = (string)$value;
183 if ($isFieldWithoutTimeZone)
185 \CTimeZone::Enable();
202 $isFieldWithoutTimeZone = static::isFieldWithoutTimeZone($userField);
204 if ($isFieldWithoutTimeZone)
206 \CTimeZone::Disable();
211 if ($isFieldWithoutTimeZone)
213 \CTimeZone::Enable();
227 $format = CLang::GetDateFormat(static::FORMAT_TYPE_FULL);
229 if($userField[
'SETTINGS'][
'USE_SECOND'] ===
'N' &&
MakeTimeStamp($value) % 60 <= 0)
231 $format = str_replace(
':SS',
'', $format);
246 $isFieldWithoutTimeZone = static::isFieldWithoutTimeZone($userField);
248 if ($isFieldWithoutTimeZone)
250 \CTimeZone::Disable();
253 $date =
$DB->dateToCharFunction($fieldName, static::FORMAT_TYPE_FULL);
255 if ($isFieldWithoutTimeZone)
257 \CTimeZone::Enable();
260 return $fieldName .
', ' . $date;
270 isset($userField[
'SETTINGS'][
'USE_TIMEZONE'])
272 $userField[
'SETTINGS'][
'USE_TIMEZONE']===
'N'
274 \CTimeZone::Enabled()
285 $isFieldWithoutTimeZone = static::isFieldWithoutTimeZone($userField);
287 if ($isFieldWithoutTimeZone)
289 \CTimeZone::Disable();
293 $value =
$DB->CharToDateFunction($dateTime);
295 if ($isFieldWithoutTimeZone)
297 \CTimeZone::Enable();
300 return (
string) $value;
305 $bVarsFromForm = ($additionalParameters[
'bVarsFromForm'] ??
false);
309 isset($userField[
'ENTITY_VALUE_ID'])
311 $userField[
'ENTITY_VALUE_ID'] <= 0
314 if($userField[
'SETTINGS'][
'DEFAULT_VALUE'][
'TYPE'] === self::TYPE_NOW)
316 $value = \ConvertTimeStamp(
317 time() + \CTimeZone::getOffset(),
318 self::FORMAT_TYPE_FULL
323 $value = str_replace(
326 \CDatabase::formatDate(
327 $userField[
'SETTINGS'][
'DEFAULT_VALUE'][
'VALUE'],
328 'YYYY-MM-DD HH:MI:SS',
329 \CLang::getDateFormat(self::FORMAT_TYPE_FULL)
336 $value = $userField[
'VALUE'] ??
null;
339 elseif(isset($additionalParameters[
'VALUE']))
341 $value = $additionalParameters[
'VALUE'];
345 $value = Context::getCurrent()->getRequest()->get($userField[
'FIELD_NAME']);
static getConnection($name="")
static createFromUserTime($timeString)
static charToDate(array $userField, Type\DateTime $dateTime)
static getFormat(string $value, array $userField)
static getFilterData(?array $userField, array $additionalParameters)
static onBeforeSave(?array $userField, $value)
static onAfterFetch(array $userField, array $fetched)
static isFieldWithoutTimeZone(?array $userField)
static getFieldValue(array $userField, array $additionalParameters=[])
static checkFields(array $userField, $value)
static formatField(?array $userField, string $fieldName)
static prepareSettings(array $userField)
const MULTIPLE_DATETIME_FORMAT
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
MakeTimeStamp($datetime, $format=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
foreach($arTemplatesList as $templ) if(mb_strpos($templ["NAME"] $def