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