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