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