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