• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/extlinks.php
  • Класс: CWebDavExtLinks
  • Вызов: CWebDavExtLinks::LoadFile
static function LoadFile($arLink)
{
	$hash = $arLink;
	if(is_array($arLink))
	{
		$hash = $arLink["HASH"];
	}
	if($hash == '')
	{
		return true;
	}
	if(self::DEMO_HASH == $hash)
	{
		LocalRedirect(self::GetDemoLoadFileUrl());
	}

	$arF = $arLink;
	if(!is_array($arLink))
	{
		$resF = self::GetList(array("HASH" => $hash, "ACTUAL" => true,), array("URL","RESOURCE_TYPE","FOLDER","IBLOCK_TYPE","IBLOCK_ID","BASE_URL","USER_ID","ROOT_SECTION_ID", "DOWNLOAD_COUNT", "VERSION_ID", "FILE_ID", "ELEMENT_ID"));
		$arF = $resF->Fetch();
	}
	if(is_array($arF))
	{
		if(intval($arF["ROOT_SECTION_ID"]) <= 0)
		{
			unset($arF["ROOT_SECTION_ID"]);
		}
		$arF['check_permissions'] = false;
		if($arF["RESOURCE_TYPE"] == "IBLOCK")
		{
			$ob = new CWebDavIblock($arF['IBLOCK_ID'], $arF['BASE_URL'], array_intersect_key($arF, array(
				"URL" => true,
				"RESOURCE_TYPE" => true,
				"FOLDER" => true,
				"IBLOCK_TYPE" => true,
				"IBLOCK_ID" => true,
				"BASE_URL" => true,
				"USER_ID" => true,
				"ROOT_SECTION_ID" => true,
				"DOWNLOAD_COUNT" => true,
			)));
			$ob->withoutAuthorization = true;
		}
		else
		{
			$ob = new CWebDavFile($arF, $arF["BASE_URL"]);
		}

		self::incDownloadCount($arF['HASH'], $arF['LINK_TYPE']);

		//for get history document (don't have url
		if($arF['LINK_TYPE'] == self::LINK_TYPE_AUTO || !empty($arF['ELEMENT_ID']))
		{
			$arF['VERSION_ID'] = intval($arF['VERSION_ID']);
			$arF['FILE_ID'] = intval($arF['FILE_ID']);
			$entityType = self::getEntityType(CIBlock::GetArrayByID($arF['IBLOCK_ID'], 'CODE'));
			$ob->wfParams['DOCUMENT_TYPE'] = self::getEntityIdDocumentData($entityType, array('ELEMENT_ID' => $arF['ELEMENT_ID']));

			if($arF['FILE_ID'] && !$arF['VERSION_ID'])
			{
				$document = $ob->findHistoryDocumentByFileId(
					$arF['ELEMENT_ID'],
					$arF['FILE_ID'],
					$ob->wfParams['DOCUMENT_TYPE']
				);
				if(!empty($document['ID']))
				{
					$arF['VERSION_ID'] = $document['ID'];
				}
			}


			$ob->SendHistoryFile($arF['ELEMENT_ID'], (int)$arF['VERSION_ID']);
			die;
		}

		$ob->SetPath($arF["URL"]);
		$options = array();
		$options['path'] = $arF["URL"];
		$options['check_permissions'] = false;
		if (true === ($status = $ob->GET($options)))
		{
			$x = $ob->SendFile($options, true);
			if (is_null($x))
			{
				echo "error";
			}
			die;
		}
	}
	else
	{
		echo "error";
		die;
	}
	global $APPLICATION;
	LocalRedirect(CHTTP::urlAddParams($APPLICATION->GetCurPage(), array('notfoud' => true)));
}