9namespace Bitrix\Main\ORM\Fields;
10use Bitrix\Main\Application;
11use Bitrix\Main\DB\SqlExpression;
12use Bitrix\Main\Localization\Loc;
13use Bitrix\Main\ORM\Data\Result;
14use Bitrix\Main\ORM\Entity;
15use Bitrix\Main\ORM\EntityError;
16use Bitrix\Main\ORM\Fields\Validators\IValidator;
17use Bitrix\Main\SystemException;
84 'float' =>
'Bitrix\Main\ORM\Fields\FloatField',
85 'decimal' =>
'Bitrix\Main\ORM\Fields\DecimalField',
86 'string' =>
'Bitrix\Main\ORM\Fields\StringField',
87 'text' =>
'Bitrix\Main\ORM\Fields\TextField',
88 'datetime' =>
'Bitrix\Main\ORM\Fields\DatetimeField',
89 'date' =>
'Bitrix\Main\ORM\Fields\DateField',
90 'integer' =>
'Bitrix\Main\ORM\Fields\IntegerField',
91 'enum' =>
'Bitrix\Main\ORM\Fields\EnumField',
92 'boolean' =>
'Bitrix\Main\ORM\Fields\BooleanField'
109 $this->dataType =
null;
110 $this->initialParameters = $parameters;
112 if (isset($parameters[
'title']))
114 $this->
title = $parameters[
'title'];
118 if (isset($parameters[
'validation']))
120 $this->validation = $parameters[
'validation'];
124 if (isset($parameters[
'fetch_data_modification']))
126 $this->fetchDataModification = $parameters[
'fetch_data_modification'];
130 if (isset($parameters[
'save_data_modification']))
132 $this->saveDataModification = $parameters[
'save_data_modification'];
135 if (!empty($parameters[
'serialized']))
140 if (isset($parameters[
'connection']))
142 $this->connection = $parameters[
'connection'];
153 if ($this->entity !==
null)
155 throw new SystemException(sprintf(
'Field "%s" already has entity', $this->name));
163 $this->entity =
null;
190 $vResult = $validator->validate($value, $primary, $row, $this);
194 $vResult = call_user_func_array($validator,
array($value, $primary, $row, $this));
197 if ($vResult !==
true)
224 foreach ($modifiers as $modifier)
226 $value = call_user_func_array($modifier,
array($value,
$data));
238 if ($this->validators ===
null)
240 $this->validators =
array();
242 if ($this->validation !==
null)
249 'Validation for %s field of %s entity should return array of validators',
250 $this->name, $this->entity->getDataClass()
260 foreach ($this->additionalValidators as $validator)
278 if ($this->validators ===
null)
280 $this->additionalValidators[] = $validator;
297 if (!($validator instanceof
Validators\Validator) && !is_callable($validator))
300 'Validators of "%s" field of "%s" entity should be a Validator\Base or callback',
301 $this->name, $this->entity->getDataClass()
305 $this->validators[] = $validator;
314 if ($this->fetchDataModifiers ===
null)
316 $this->fetchDataModifiers =
array();
318 if ($this->fetchDataModification !==
null)
320 $modifiers = call_user_func($this->fetchDataModification);
322 if (!is_array($modifiers))
325 'Fetch Data Modification for %s field of %s entity should return array of modifiers (callbacks)',
326 $this->name, $this->entity->getDataClass()
330 foreach ($modifiers as $modifier)
336 foreach ($this->additionalFetchDataModifiers as $modifier)
354 if ($this->fetchDataModifiers ===
null)
356 $this->additionalFetchDataModifiers[] = $modifier;
373 if (!is_callable($modifier))
376 'Modifier of "%s" field of "%s" entity should be a callback',
377 $this->name, $this->entity->getDataClass()
381 $this->fetchDataModifiers[] = $modifier;
390 if ($this->saveDataModifiers ===
null)
392 $this->saveDataModifiers =
array();
394 if ($this->saveDataModification !==
null)
396 $modifiers = call_user_func($this->saveDataModification);
398 if (!is_array($modifiers))
401 'Save Data Modification for %s field of %s entity should return array of modifiers (callbacks)',
402 $this->name, $this->entity->getDataClass()
406 foreach ($modifiers as $modifier)
412 foreach ($this->additionalSaveDataModifiers as $modifier)
430 if ($this->saveDataModifiers ===
null)
432 $this->additionalSaveDataModifiers[] = $modifier;
449 if (!is_callable($modifier))
452 'Save modifier of "%s" field of "%s" entity should be a callback',
453 $this->name, $this->entity->getDataClass()
457 $this->saveDataModifiers[] = $modifier;
519 if($this->
title !==
null)
534 $this->initialParameters[
$name] = $value;
541 return $this->initialParameters[
$name];
546 return array_key_exists(
$name, $this->initialParameters);
571 if (empty($this->dataType))
573 return static::getOldDataTypeByField($this);
587 $map = array_flip(static::$oldDataTypes);
589 return $map[$class] ??
'string';
600 return static::getOldDataTypeByClass(get_class($field));
611 return isset(static::$oldDataTypes[$dateType]) ?
'\\'.static::$oldDataTypes[$dateType] :
false;
642 return $this->entity->getConnection();
644 elseif ($this->connection)
static getConnection($name="")
static getOldDataTypeByClass($class)
setEntity(Entity $entity)
setParameter($name, $value)
setConnection($connection)
$additionalSaveDataModifiers
static getClassByOldDataType($dateType)
$additionalFetchDataModifiers
setParentField(Field $parentField)
appendSaveDataModifier($modifier)
__construct($name, $parameters=array())
appendFetchDataModifier($modifier)
validateValue($value, $primary, $row, Result $result)
modifyValueBeforeSave($value, $data)
appendValidator($validator)
static getOldDataTypeByField(Field $field)
addFetchDataModifier($modifier)
addSaveDataModifier($modifier)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
<? endif;?> window document title