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