- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Service/Operation/Import.php
- Класс: Bitrix\Crm\Service\Operation\Import
- Вызов: Import::checkSystemFieldsValues
public function checkSystemFieldsValues(array $systemFieldsValues): Result
{
$result = new Result();
$canSetSystemFields = Container::getInstance()->getUserPermissions($this->getContext()->getUserId())->isAdmin();
if ($canSetSystemFields)
{
$createdTime = $systemFieldsValues[Item::FIELD_NAME_CREATED_TIME];
$updatedTime = $systemFieldsValues[Item::FIELD_NAME_UPDATED_TIME];
$movedTime = $systemFieldsValues[Item::FIELD_NAME_MOVED_TIME];
if ($createdTime)
{
$maxPossibleCreatedTime = $this->getLastAddedItemCreatedTime();
if ($maxPossibleCreatedTime && $maxPossibleCreatedTime->getTimestamp() > $createdTime->getTimestamp())
{
$result->addError($this->getFieldCreatedTimeIsNotMonotoneError(Item::FIELD_NAME_CREATED_TIME));
}
if ($createdTime->getTimestamp() > (new DateTime())->getTimestamp())
{
$result->addError($this->getFieldCreatedTimeIsInFutureError(Item::FIELD_NAME_CREATED_TIME));
}
}
if ($updatedTime)
{
$minPossibleUpdatedTime = $createdTime ?? (new DateTime());
if ($minPossibleUpdatedTime->getTimestamp() > $updatedTime->getTimestamp())
{
$result->addError($this->getFieldCompareValueError(
Item::FIELD_NAME_UPDATED_TIME,
Item::FIELD_NAME_CREATED_TIME
));
}
if ($updatedTime->getTimestamp() > (new DateTime())->getTimestamp())
{
$result->addError($this->getFieldCreatedTimeIsInFutureError(Item::FIELD_NAME_UPDATED_TIME));
}
}
if ($movedTime)
{
$createdTimeValue = ($createdTime ?? (new DateTime()))->getTimestamp();
$updatedTimeValue = $updatedTime ? $updatedTime->getTimestamp() : $createdTimeValue;
if ($movedTime->getTimestamp() < $createdTimeValue)
{
$result->addError($this->getFieldCompareValueError(
Item::FIELD_NAME_CREATED_TIME,
Item::FIELD_NAME_MOVED_TIME,
));
}
if ($movedTime->getTimestamp() > $updatedTimeValue)
{
$result->addError($this->getFieldCompareValueError(
Item::FIELD_NAME_MOVED_TIME,
Item::FIELD_NAME_UPDATED_TIME
));
}
}
foreach ([
Item::FIELD_NAME_CREATED_BY,
Item::FIELD_NAME_UPDATED_BY,
Item::FIELD_NAME_MOVED_BY,
] as $fieldName)
{
$fieldValue = $systemFieldsValues[$fieldName];
if ($fieldValue && $fieldValue < 0)
{
$result->addError(
$this->fieldsCollection->getField($fieldName)->getValueNotValidError()
);
}
}
}
else
{
foreach ($systemFieldsValues as $fieldName => $fieldValue)
{
if (!is_null($fieldValue))
{
$result->addError($this->getOnlyAdminCanSetFieldError($fieldName));
}
}
}
return $result;
}