- Модуль: rpa
- Путь к файлу: ~/bitrix/modules/rpa/lib/controller/item.php
- Класс: BitrixRpaControllerItem
- Вызов: Item::processFileField
protected function processFileField(UserField $userField, BitrixRpaModelItem $item, array $fields): void
{
$userFieldName = $userField->getName();
if($userField->isMultiple())
{
$fileData = $fields[$userFieldName];
if(!is_array($fileData))
{
return;
}
$result = [];
$currentFiles = array_flip($item->get($userFieldName) ?? []);
foreach($fileData as $file)
{
$fileId = (int) $file['id'];
if($fileId > 0)
{
if(isset($currentFiles[$fileId]))
{
$result[] = $fileId;
$this->registerFile($userField, $fileId);
}
continue;
}
$fileId = $this->uploadFile($file);
if($fileId > 0)
{
$result[] = $fileId;
$this->uploadedFiles[] = $fileId;
$this->registerFile($userField, $fileId);
}
}
$item->set($userFieldName, $result);
}
else
{
$fileData = $fields[$userFieldName];
$currentFile = $item->get($userFieldName);
if(isset($fileData['id']))
{
if((int) $fileData['id'] === $currentFile)
{
return;
}
}
$fileId = $this->uploadFile($fileData);
if($fileId > 0)
{
$this->uploadedFiles[] = $fileId;
$this->registerFile($userField, $fileId);
}
$item->set($userFieldName, $fileId);
}
}