• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/disk.php
  • Класс: BitrixTasksIntegrationDisk
  • Вызов: Disk::uploadFile
static function uploadFile(array $file, $userId = 0)
{
	$result = new Result();

	if(!static::includeModule())
	{
		$result->addError('MODULE_NOT_INSTALLED', 'Disk not installed');
		return $result;
	}

	if(!$userId)
	{
		$userId = User::getId();
	}

	$storage = Driver::getInstance()->getStorageByUserId($userId);
	if(!$storage)
	{
		$result->addError('CANT_OBTAIN_STORAGE', 'Could not obtain storage');
		return $result;
	}

	$folder = $storage->getFolderForUploadedFiles();
	if(!$folder)
	{
		$result->addError('CANT_OBTAIN_FOLDER', 'Could not obtain folder');
		return $result;
	}
	$securityContext = $storage->getSecurityContext($userId);
	if(!$folder->canAdd($securityContext))
	{
		$result->addError('ACCESS_DENIED', 'Access denied');
		return $result;
	}
	$file = $folder->uploadFile($file, array(
		'NAME' => $file["name"],
		'CREATED_BY' => $userId
	), array(), true);
	if(!$file)
	{
		$result->getErrors()->add('ACCESS_DENIED', 'Access denied', Error::TYPE_FATAL, array('FOLDER_ERRORS' => $folder->getErrors()));
		return $result;
	}

	$result->setData(array(
		'FILE' => $file,
		'ATTACHMENT_ID' => FileUserType::NEW_FILE_PREFIX.$file->getId()
	));

	return $result;
}