• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_disk.php
  • Класс: CIMDisk
  • Вызов: CIMDisk::GetPublicPath
static function GetPublicPath($type, BitrixDiskFile $fileModel, $checkContentVersion = true)
{
	$result = '';

	if (!in_array($type, Array(self::PATH_TYPE_DOWNLOAD, self::PATH_TYPE_SHOW, self::PATH_TYPE_PREVIEW)))
	{
		return $result;
	}

	if ($checkContentVersion && $fileModel->getGlobalContentVersion() <= 1)
	{
		return $result;
	}

	$urlManager = BitrixMainEngineUrlManager::getInstance();

	$isImage = BitrixDiskTypeFile::isImage($fileModel);
	$isVideo = BitrixDiskTypeFile::isVideo($fileModel->getName());

	if ($type == self::PATH_TYPE_SHOW)
	{
		if ($isImage)
		{
			$result = $urlManager->create('disk.api.file.showImage', [
				'humanRE' => 1,
				'fileId' => $fileModel->getId(),
				'fileName' => $fileModel->getName()
			])->getUri();
		}
		else
		{
			$result = $urlManager->create('disk.api.file.download', [
				'humanRE' => 1,
				'fileId' => $fileModel->getId(),
				'fileName' => $fileModel->getName()
			])->getUri();
		}
	}
	else if ($type == self::PATH_TYPE_PREVIEW)
	{
		if (!($isImage || $isVideo))
		{
			return $result;
		}

		if ($fileModel->getView()->getPreviewData())
		{
			$linkType = 'disk.api.file.showPreview';
			$fileName = 'preview.jpg';
		}
		else if ($isImage)
		{
			$linkType = 'disk.api.file.showImage';
			$fileName = $fileModel->getName();
		}
		else
		{
			return $result;
		}

		$result = $urlManager->create($linkType, [
			'humanRE' => 1,
			'width' => 640,
			'height' => 640,
			'signature' => BitrixDiskSecurityParameterSigner::getImageSignature($fileModel->getId(), 640, 640),
			'fileId' => $fileModel->getId(),
			'fileName' => $fileName
		])->getUri();
	}
	else if ($type == self::PATH_TYPE_DOWNLOAD)
	{
		$result = $urlManager->create('disk.api.file.download', [
			'humanRE' => 1,
			'fileId' => $fileModel->getId(),
			'fileName' => $fileModel->getName()
		])->getUri();
	}

	return $result;
}