File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/modules/main/lib/userfield/types/datetype.php
Back
<?php namespace Bitrix\Main\UserField\Types; use Bitrix\Main\Localization\Loc; use CUserTypeManager; use Bitrix\Main; use Bitrix\Main\Type; use CLang; use CDatabase; use Bitrix\Main\Text\HtmlFilter; use Bitrix\Main\Context; Loc::loadMessages(__FILE__); /** * Class DateType * @package Bitrix\Main\UserField\Types */ class DateType extends BaseType { public const USER_TYPE_ID = 'date', RENDER_COMPONENT = 'bitrix:main.field.date'; public const TYPE_NONE = 'NONE', TYPE_FIXED = 'FIXED', TYPE_NOW = 'NOW'; public const FORMAT_TYPE_FULL = 'FULL', FORMAT_TYPE_SHORT = 'SHORT'; /** * @return array */ public static function getDescription(): array { return [ 'DESCRIPTION' => Loc::getMessage('USER_TYPE_D_DESCRIPTION'), 'BASE_TYPE' => CUserTypeManager::BASE_TYPE_DATETIME, ]; } /** * @return string */ public static function getDbColumnType(): string { return 'date'; } /** * @param array $userField * @return array */ public static function prepareSettings(array $userField): array { $def = $userField['SETTINGS']['DEFAULT_VALUE']; $value = ''; if(!is_array($def)) { $def = ['TYPE' => static::TYPE_NONE, 'VALUE' => $value]; } elseif($def['TYPE'] === static::TYPE_FIXED) { $def['VALUE'] = CDatabase::FormatDate( $def['VALUE'], CLang::GetDateFormat(static::FORMAT_TYPE_SHORT), 'YYYY-MM-DD' ); } elseif($def['TYPE'] === static::TYPE_NOW) { $def['VALUE'] = $value; } else { $def = ['TYPE' => static::TYPE_NONE, 'VALUE' => $value]; } return [ 'DEFAULT_VALUE' => $def, ]; } /** * @param array|null $userField * @param array $additionalParameters * @return array */ public static function getFilterData(?array $userField, array $additionalParameters): array { return [ 'id' => $additionalParameters['ID'], 'name' => $additionalParameters['NAME'], 'type' => 'date' ]; } /** * @param array $userField * @param string|array $value * @return array */ public static function checkFields(array $userField, $value): array { $msg = []; if(is_string($value) && $value !== '' && !Type\Date::isCorrect($value)) { $msg[] = [ 'id' => $userField['FIELD_NAME'], 'text' => Loc::getMessage('USER_TYPE_D_ERROR', [ '#FIELD_NAME#' => HtmlFilter::encode( $userField['EDIT_FORM_LABEL'] !== '' ? $userField['EDIT_FORM_LABEL'] : $userField['FIELD_NAME'] ), ] ), ]; } return $msg; } /** * @param array $userField * @param array $fetched * @return string * @throws Main\ObjectException */ public static function onAfterFetch(array $userField, array $fetched): string { $value = $fetched['VALUE']; if($userField['MULTIPLE'] === 'Y' && !($value instanceof Type\Date)) { try { //try new independent date format $value = new Type\Date( $value, \Bitrix\Main\UserFieldTable::MULTIPLE_DATE_FORMAT ); } catch(Main\ObjectException $e) { // try site format (sometimes it can be full site format) try { $value = new Type\Date($value); } catch(Main\ObjectException $e) { $value = new Type\Date($value, Type\DateTime::getFormat()); } } } return (string)$value; } /** * @param array $userField * @param $value * @return Type\Date * @throws Main\ObjectException */ public static function onBeforeSave(?array $userField, $value) { if($value != '' && !($value instanceof Type\Date)) { // try both site's format - short and full try { $value = new Type\Date($value); } catch(Main\ObjectException $e) { $value = new Type\Date($value, Type\DateTime::getFormat()); } } return $value; } /** * @param array|null $userField * @param string $fieldName * @return string */ public static function formatField(?array $userField, string $fieldName): string { global $DB; return $DB->DateToCharFunction($fieldName, static::FORMAT_TYPE_SHORT); } /** * @param array $userFiled */ public static function getDefaultValue(array $userField, array $additionalParameters = []) { $userField['ENTITY_VALUE_ID'] = 0; $value = static::getFieldValue($userField, $additionalParameters); return ($userField['MULTIPLE'] === 'Y' ? [$value] : $value); } /** * @param array $userField * @param array $additionalParameters */ public static function getFieldValue(array $userField, array $additionalParameters = []) { $bVarsFromForm = ($additionalParameters['bVarsFromForm'] ?? false); if(!$bVarsFromForm) { if( isset($userField['ENTITY_VALUE_ID']) && $userField['ENTITY_VALUE_ID'] <= 0 ) { if($userField['SETTINGS']['DEFAULT_VALUE']['TYPE'] === self::TYPE_NOW) { $value = \ConvertTimeStamp(time(), self::FORMAT_TYPE_SHORT); } else { $value = \CDatabase::formatDate( $userField['SETTINGS']['DEFAULT_VALUE']['VALUE'], 'YYYY-MM-DD', \CLang::getDateFormat(self::FORMAT_TYPE_SHORT) ); } } else { $value = $userField['VALUE']; } } elseif(isset($additionalParameters['VALUE'])) { $value = $additionalParameters['VALUE']; } else { $value = Context::getCurrent()->getRequest()->get($userField['FIELD_NAME']); } return $value; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings