- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/item.php
- Класс: Bitrix\Crm\Controller\Item
- Вызов: Item::processFileField
public function processFileField(Field $field, \Bitrix\Crm\Item $item, $fileData): void
{
$fieldName = $field->getName();
if ($field->isMultiple())
{
$fileData = (array)$fileData;
$result = [];
$currentFiles = array_flip($item->get($fieldName) ?? []);
foreach ($fileData as $file)
{
if (isset($file['ID']))
{
$fileId = (int)$file['ID'];
if ($fileId > 0)
{
if (isset($currentFiles[$fileId]))
{
Container::getInstance()->getFileUploader()->registerFileId($field, $fileId);
$result[] = $fileId;
}
continue;
}
}
$fileId = $this->uploadFile($field, $file);
if ($fileId > 0)
{
$result[] = $fileId;
}
}
$item->set($fieldName, $result);
}
else
{
if (isset($fileData['ID']))
{
if ((int)$fileData['ID'] === $item->get($fieldName))
{
Container::getInstance()->getFileUploader()->registerFileId($field, $fileData['ID']);
return;
}
$fileId = 0;
}
else
{
$fileId = $this->uploadFile($field, $fileData);
}
$item->set($fieldName, $fileId);
}
}