- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/integration/disk.php
- Класс: BitrixTasksIntegrationDisk
- Вызов: Disk::addFile
static function addFile($file, int $userId = 0): Result
{
$result = new Result();
if (!static::includeModule())
{
$result->addError('MODULE_NOT_INSTALLED', 'Disk not installed');
return $result;
}
if (!$userId)
{
$userId = User::getId();
}
if (!($storage = Driver::getInstance()->getStorageByUserId($userId)))
{
$result->addError('CANT_OBTAIN_STORAGE', 'Could not obtain storage');
return $result;
}
if (!($folder = $storage->getFolderForUploadedFiles()))
{
$result->addError('CANT_OBTAIN_FOLDER', 'Could not obtain folder');
return $result;
}
if (!$folder->canAdd($storage->getSecurityContext($userId)))
{
$result->addError('ACCESS_DENIED', 'Access denied');
return $result;
}
if (is_array($file))
{
$fileId = (int)$file['ID'];
$fileArray = $file;
}
else
{
$fileId = (int)$file;
$fileArray = CFile::getFileArray($fileId);
}
$addedFile = $folder->addFile(
[
'NAME' => UiText::correctFilename($fileArray['FILE_NAME']),
'FILE_ID' => $fileId,
'CONTENT_PROVIDER' => null,
'SIZE' => $fileArray['FILE_SIZE'],
'CREATED_BY' => $userId,
'UPDATE_TIME' => null,
],
[],
true
);
if (!$addedFile && $result->getErrors())
{
$result->getErrors()->add(
'ACCESS_DENIED',
'Access denied',
Error::TYPE_FATAL,
['FOLDER_ERRORS' => $folder->getErrors()]
);
return $result;
}
$result->setData([
'FILE' => $addedFile,
'ATTACHMENT_ID' => FileUserType::NEW_FILE_PREFIX . $addedFile->getId(),
]);
return $result;
}