• Модуль: 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;
}