• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/bitrix24disk/legacy/diskstorage.php
  • Класс: BitrixDiskBitrix24DiskLegacyDiskStorage
  • Вызов: DiskStorage::getPublicLink
public function getPublicLink(array $objectData)
{
	if(!Configuration::isEnabledExternalLink())
	{
		$this->errorCollection[] = new Error(
			'External link is disabled',
			181556
		);

		return false;
	}

	/** @var File|Folder $object */
	$object = BaseObject::loadById($objectData['extra']['id']);
	if(!$object)
	{
		$this->errorCollection->add(array(new Error("Could not " . __METHOD__ . " by id {$objectData['extra']['id']}", 111606)));
		return '';
	}
	if(!$object->canRead($this->storage->getSecurityContext($this->userId)))
	{
		throw new AccessDeniedException;
	}

	$extLinks = $object->getExternalLinks(array(
		'filter' => array(
			'OBJECT_ID' => $object->getId(),
			'CREATED_BY' => $this->getUser()->getId(),
			'TYPE' => ExternalLinkTable::TYPE_MANUAL,
			'IS_EXPIRED' => false,
		),
		'limit' => 1,
	));
	$extModel = array_pop($extLinks);
	if(!$extModel)
	{
		$extModel = $object->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($object->getErrors());

		return '';
	}

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