- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/downloadcontroller.php
- Класс: BitrixDiskDownloadController
- Вызов: DownloadController::processActionCopyToMe
protected function processActionCopyToMe()
{
$userStorage = Driver::getInstance()->getStorageByUserId($this->getUser()->getId());
if(!$userStorage)
{
$this->errorCollection->addOne(new Error('Could not find storage for current user'));
$this->sendJsonErrorResponse();
}
$folder = $userStorage->getFolderForSavedFiles();
if(!$folder)
{
$this->errorCollection->addOne(new Error('Could not find folder for created files'));
$this->sendJsonErrorResponse();
}
//so, now we don't copy links in the method copyTo. But here we have to copy content.
//And after we set name to new object as it was on link.
$newFile = $this->file->getRealObject()->copyTo($folder, $this->getUser()->getId(), true);
if ($this->file->getRealObject()->getName() != $this->file->getName())
{
$newFile->renameInternal($this->file->getName(), true);
}
if(!$newFile)
{
$this->errorCollection->addOne(new Error('Could not copy file to storage for current user'));
$this->sendJsonErrorResponse();
}
$urlManager = Driver::getInstance()->getUrlManager();
$viewUrl = $urlManager->encodeUrn(
$urlManager->getUrlFocusController('showObjectInGrid', array(
'objectId' => $newFile->getId(),
))
);
$runViewerUrl = $urlManager->encodeUrn(
$urlManager->getUrlFocusController('showObjectInGrid', array(
'objectId' => $newFile->getId(),
'cmd' => 'show',
))
);
$this->sendJsonSuccessResponse(array(
'newId' => $newFile->getId(),
'viewUrl' => $viewUrl,
'runViewUrl' => $runViewerUrl,
));
}