• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/diskstorage.php
  • Класс: CDiskStorage
  • Вызов: CDiskStorage::getPublicLink
public function getPublicLink(array $file)
{
	/** @var File $file */
	$file = File::loadById($file['extra']['id']);
	if(!$file)
	{
		$this->errorCollection->add(array(new Error("Could not " . __METHOD__ . " by id {$file['extra']['id']}", 111606)));
		return '';
	}
	if(!$file->canRead($this->storage->getCurrentUserSecurityContext()))
	{
		throw new CWebDavAccessDeniedException;
	}

	$extLinks = $file->getExternalLinks(array(
		'filter' => array(
			'OBJECT_ID' => $file->getId(),
			'CREATED_BY' => $this->getUser()->getId(),
			'TYPE' => BitrixDiskInternalsExternalLinkTable::TYPE_MANUAL,
			'IS_EXPIRED' => false,
		),
		'limit' => 1,
	));
	$extModel = array_pop($extLinks);
	if(!$extModel)
	{
		$extModel = $file->addExternalLink(array(
			'CREATED_BY' => $this->getUser()->getId(),
			'TYPE' => ExternalLinkTable::TYPE_MANUAL,
		));
	}
	if(!$extModel)
	{
		$this->errorCollection->add(array(new Error("Could not " . __METHOD__ . ", addExternalLink", 121606)));
		$this->errorCollection->add($file->getErrors());

		return '';
	}

	return BitrixDiskDriver::getInstance()->getUrlManager()->getShortUrlExternalLink(array(
		'hash' => $extModel->getHash(),
		'action' => 'default',
	), true);
}