22 'DESCRIPTION' => Loc::getMessage(
'IBLOCK_PROP_DATETIME_DESC'),
24 'GetPublicViewHTML' => [__CLASS__,
'GetPublicViewHTML'],
25 'GetPublicEditHTML' => [__CLASS__,
'GetPublicEditHTML'],
26 'GetPublicEditHTMLMulty' => [__CLASS__,
'GetPublicEditHTMLMulty'],
27 'GetAdminListViewHTML' => [__CLASS__,
'GetAdminListViewHTML'],
28 'GetPropertyFieldHtml' => [__CLASS__,
'GetPropertyFieldHtml'],
29 'CheckFields' => [__CLASS__,
'CheckFields'],
30 'ConvertToDB' => [__CLASS__,
'ConvertToDB'],
31 'ConvertFromDB' => [__CLASS__,
'ConvertFromDB'],
32 'GetSettingsHTML' => [__CLASS__,
'GetSettingsHTML'],
33 'GetAdminFilterHTML' => [__CLASS__,
'GetAdminFilterHTML'],
34 'GetPublicFilterHTML' => [__CLASS__,
'GetPublicFilterHTML'],
35 'AddFilterFields' => [__CLASS__,
'AddFilterFields'],
36 'GetUIFilterProperty' => [__CLASS__,
'GetUIFilterProperty'],
37 'GetUIEntityEditorProperty' => [__CLASS__,
'GetUIEntityEditorProperty'],
46 $from_name = $strHTMLControlName[
'VALUE'] .
'_from';
47 if (isset($strHTMLControlName[
'FILTER_ID']))
49 $filterOption =
new Filter\Options($strHTMLControlName[
'FILTER_ID']);
50 $filterData = $filterOption->getFilter();
51 $from = !empty($filterData[$from_name]) ? $filterData[$from_name] :
'';
58 isset($strHTMLControlName[
'GRID_ID'])
59 && isset($_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$from_name])
62 $from = $_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$from_name];
67 $filterKey =
'>=PROPERTY_' . $arProperty[
'ID'];
70 $from = static::ConvertToDB(
84 $to_name = $strHTMLControlName[
'VALUE'] .
'_to';
85 if (isset($strHTMLControlName[
'FILTER_ID']))
87 $filterOption =
new Filter\Options($strHTMLControlName[
'FILTER_ID']);
88 $filterData = $filterOption->getFilter();
89 $to = !empty($filterData[$to_name]) ? $filterData[$to_name] :
'';
93 $dateParse = date_parse_from_format($dateFormat, $to);
94 if (!mb_strlen($dateParse[
'hour']) && !mb_strlen($dateParse[
'minute']) && !mb_strlen($dateParse[
'second']))
97 $to .=
' ' . date($timeFormat, mktime(23, 59, 59, 0, 0, 0));
106 isset($strHTMLControlName[
'GRID_ID'])
107 && isset($_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$to_name])
110 $to = $_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$to_name];
115 $filterKey =
'<=PROPERTY_'.$arProperty[
'ID'];
118 $to = static::ConvertToDB(
134 $from_name = $strHTMLControlName[
"VALUE"] .
'_from';
135 $to_name = $strHTMLControlName[
"VALUE"] .
'_to';
149 public static function GetPublicFilterHTML($arProperty, $strHTMLControlName)
154 $from_name = $strHTMLControlName[
'VALUE'] .
'_from';
155 $to_name = $strHTMLControlName[
'VALUE'] .
'_to';
162 isset($strHTMLControlName[
'GRID_ID'])
163 && isset($_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$from_name])
166 $from = $_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$from_name];
178 isset($strHTMLControlName[
'GRID_ID'])
179 && isset($_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$to_name])
182 $to = $_SESSION[
'main.interface.grid'][$strHTMLControlName[
'GRID_ID']][
'filter'][$to_name];
192 'bitrix:main.calendar',
195 'FORM_NAME' => $strHTMLControlName[
'FORM_NAME'] ??
'',
197 'INPUT_NAME' => $from_name,
198 'INPUT_VALUE' => $from,
199 'INPUT_NAME_FINISH' => $to_name,
200 'INPUT_VALUE_FINISH' => $to,
201 'INPUT_ADDITIONAL_ATTR' =>
'size="10"',
204 array(
'HIDE_ICONS' =>
'Y')
207 $s = ob_get_contents();
215 if ($value[
"VALUE"] <>
'')
219 $value = static::ConvertFromDB($arProperty, $value, $strHTMLControlName[
"DATETIME_FORMAT"] ??
'');
222 if (isset($strHTMLControlName[
"MODE"]))
224 if ($strHTMLControlName[
"MODE"] ==
"CSV_EXPORT")
225 return $value[
"VALUE"];
226 elseif ($strHTMLControlName[
"MODE"] ==
"SIMPLE_TEXT")
227 return $value[
"VALUE"];
228 elseif ($strHTMLControlName[
"MODE"] ==
"ELEMENT_TEMPLATE")
229 return $value[
"VALUE"];
237 public static function GetPublicEditHTML($arProperty, $value, $strHTMLControlName)
244 'bitrix:iblock.property.field.public.edit',
247 'NAME' => $strHTMLControlName[
'VALUE'],
248 'VALUE' => static::prepareMultiValue($value),
249 'PROPERTY' => $arProperty,
263 public static function GetPublicEditHTMLMulty($arProperty, $value, $strHTMLControlName): string
270 'bitrix:iblock.property.field.public.edit',
273 'NAME' => $strHTMLControlName[
'VALUE'],
274 'VALUE' => static::prepareMultiValue($value),
275 'PROPERTY' => $arProperty,
291 if($value[
"VALUE"] <>
'')
294 $value = static::ConvertFromDB($arProperty, $value);
295 return str_replace(
" ",
" ", htmlspecialcharsex($value[
"VALUE"]));
309 return static::getPropertyFormField($arProperty, $value, $strHTMLControlName,
true);
319 if (!is_array($property))
323 $property[
'WITH_DESCRIPTION'] = ($property[
'WITH_DESCRIPTION'] ??
'N') ===
'Y' ?
'Y' :
'N';
325 if (!is_array($value))
329 $value[
'VALUE'] ??=
'';
330 $value[
'DESCRIPTION'] ??=
'';
331 if (!is_string($value[
'DESCRIPTION']))
333 $value[
'DESCRIPTION'] =
'';
336 if (!is_array($controlDescription))
338 $controlDescription = [];
340 $controlDescription[
'VALUE'] ??=
'';
341 $controlDescription[
'DESCRIPTION'] ??=
'';
342 if (!is_string($controlDescription[
'DESCRIPTION']))
344 $controlDescription[
'DESCRIPTION'] =
'';
346 $controlDescription[
'DESCRIPTION'] = trim($controlDescription[
'DESCRIPTION']);
350 $property[
'WITH_DESCRIPTION'] ===
'Y'
351 && $controlDescription[
'DESCRIPTION'] !==
''
354 $result .=
' <input type="text" size="20" name="' . $controlDescription[
'DESCRIPTION'].
'"'
370 $dateTimeValue = (string)($value[
"VALUE"] ??
'');
371 if ($dateTimeValue !==
'')
375 && !static::checkInternalFormatValue($dateTimeValue)
379 'IBLOCK_PROP_DATETIME_ERROR_NEW',
381 '#FIELD_NAME#' => $arProperty[
'NAME'],
397 $dateTimeValue = (string)($value[
'VALUE'] ??
'');
398 if ($dateTimeValue !==
'')
400 if (!static::checkInternalFormatValue($dateTimeValue))
406 $value[
'VALUE'] =
$time->format(static::FORMAT_FULL);
414 $value[
'VALUE'] = $dateTimeValue;
423 $dateTimeValue = (string)($value[
'VALUE'] ??
'');
424 if ($dateTimeValue !==
'')
431 if ($format ===
'SHORT')
433 elseif ($format ===
'FULL')
436 $phpFormat =
$time->convertFormatToPhp($format);
438 $phpFormat =
$time->getFormat();
440 $value[
"VALUE"] =
$time->format($phpFormat);
441 $value[
"VALUE"] = str_replace(
" 00:00:00",
"", $value[
"VALUE"]);
451 public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
453 $arPropertyFields = [
488 $culture = Context::getCurrent()->getCulture();
491 'type' => (
$settings[
'MULTIPLE'] ===
'Y') ?
'multidatetime' :
'datetime',
493 'enableTime' =>
true,
494 'dateViewFormat' =>
$culture->getLongDateFormat() .
' ' .
$culture->getShortTimeFormat(),
506 $correctValue = date_parse_from_format(self::FORMAT_FULL, $value);
507 if ($correctValue[
'warning_count'] === 0 && $correctValue[
'error_count'] === 0)
512 $correctValue = date_parse_from_format(self::FORMAT_SHORT, $value);
514 return ($correctValue[
'warning_count'] === 0 && $correctValue[
'error_count'] === 0);
523 if (!is_array($value))
527 if (isset($value[
'VALUE']))
529 $rawValue = is_array($value[
'VALUE']) ? $value[
'VALUE'] : [$value[
'VALUE']];
534 foreach ($value as $row)
542 $rawValue[] = $row[
'VALUE'];
546 return array_filter($rawValue);
static convertFormatToPhp($format)
static createFromUserTime($timeString)
static CalendarDate($sFieldName, $sValue="", $size="10", $bTime=false)
static CalendarPeriod($sFromName, $sToName, $sFromVal="", $sToVal="", $bSelectShow=false, $size=10, $bTime=false)
static GetUIFilterProperty($property, $control, &$fields)
static GetPublicViewHTML($arProperty, $value, $strHTMLControlName)
static CheckFields($arProperty, $value)
static GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
static AddFilterFields($arProperty, $strHTMLControlName, &$arFilter, &$filtered)
static getPropertyFormField( $property, $value, $controlDescription, bool $useTime)
static GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
static GetUserTypeDescription()
static GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
static GetUIEntityEditorProperty($settings, $value)
static prepareMultiValue(mixed $value)
static checkInternalFormatValue(string $value)
static GetAdminFilterHTML($arProperty, $strHTMLControlName)
static ConvertToDB($arProperty, $value)
static ConvertFromDB($arProperty, $value, $format='')
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
CheckDateTime($datetime, $format=false)
$GLOBALS['____1690880296']
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)