%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/lists.file/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/lists.file/component.php |
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); /** @global CMain $APPLICATION */ /** @global CUser $USER */ /** @global CDatabase $DB */ /** @var CBitrixComponent $this */ /** @var array $arParams */ /** @var array $arResult */ /** @var string $componentName */ /** @var string $componentPath */ /** @var string $componentTemplate */ /** @var string $parentComponentName */ /** @var string $parentComponentPath */ /** @var string $parentComponentTemplate */ $this->setFrameMode(false); if(!CModule::IncludeModule('lists')) { ShowError(GetMessage("CC_BLF_MODULE_NOT_INSTALLED")); return; } $IBLOCK_ID = is_array($arParams["~IBLOCK_ID"])? 0: intval($arParams["~IBLOCK_ID"]); $ELEMENT_ID = is_array($arParams["~ELEMENT_ID"])? 0: intval($arParams["~ELEMENT_ID"]); $SECTION_ID = is_array($arParams["~SECTION_ID"])? 0: intval($arParams["~SECTION_ID"]); $lists_perm = CListPermissions::CheckAccess( $USER, $arParams["~IBLOCK_TYPE_ID"], $IBLOCK_ID, $arParams["~SOCNET_GROUP_ID"] ); if(!CListPermissions::CheckFieldId($IBLOCK_ID, $arParams["FIELD_ID"])) { ShowError(GetMessage("CC_BLF_UNKNOWN_ERROR")); return; } elseif($lists_perm < 0) { switch($lists_perm) { case CListPermissions::WRONG_IBLOCK_TYPE: ShowError(GetMessage("CC_BLF_WRONG_IBLOCK_TYPE")); return; case CListPermissions::WRONG_IBLOCK: ShowError(GetMessage("CC_BLF_WRONG_IBLOCK")); return; case CListPermissions::LISTS_FOR_SONET_GROUP_DISABLED: ShowError(GetMessage("CC_BLF_LISTS_FOR_SONET_GROUP_DISABLED")); return; default: ShowError(GetMessage("CC_BLF_UNKNOWN_ERROR")); return; } } elseif( $ELEMENT_ID > 0 && $lists_perm <= CListPermissions::CAN_READ && !CIBlockElementRights::UserHasRightTo($IBLOCK_ID, $ELEMENT_ID, "element_read") ) { ShowError(GetMessage("CC_BLF_ACCESS_DENIED")); return; } elseif( $SECTION_ID > 0 && $lists_perm <= CListPermissions::CAN_READ && !CIBlockSectionRights::UserHasRightTo($IBLOCK_ID, $SECTION_ID, "section_read") ) { ShowError(GetMessage("CC_BLF_ACCESS_DENIED")); return; } $canFullEdit = ( $ELEMENT_ID > 0 && ( $lists_perm >= CListPermissions::IS_ADMIN || CIBlockRights::UserHasRightTo($IBLOCK_ID, $IBLOCK_ID, "iblock_edit") ) ); $arIBlock = CIBlock::GetArrayByID(intval($arParams["~IBLOCK_ID"])); $arResult["FILES"] = array(); $arResult["ELEMENT"] = false; $arResult["SECTION"] = false; if($ELEMENT_ID > 0) { $rsElement = CIBlockElement::GetList( array(), array( "IBLOCK_ID" => $arIBlock["ID"], "=ID" => $ELEMENT_ID, "CHECK_PERMISSIONS" => "N", "SHOW_NEW" => ($canFullEdit ? "Y" : "N") ), false, false, array("ID", $arParams["FIELD_ID"]) ); while($ar = $rsElement->GetNext()) { if(isset($ar[$arParams["FIELD_ID"]])) { $arResult["FILES"][] = $ar[$arParams["FIELD_ID"]]; } elseif(isset($ar[$arParams["FIELD_ID"]."_VALUE"])) { if(is_array($ar[$arParams["FIELD_ID"]."_VALUE"])) $arResult["FILES"] = array_merge($arResult["FILES"], $ar[$arParams["FIELD_ID"]."_VALUE"]); else $arResult["FILES"][] = $ar[$arParams["FIELD_ID"]."_VALUE"]; } $arResult["ELEMENT"] = $ar; } } elseif($SECTION_ID > 0) { $rsSection = CIBlockSection::GetList( array(), array( "IBLOCK_ID" => $arIBlock["ID"], "=ID" => $SECTION_ID, "GLOBAL_ACTIVE"=>"Y", "CHECK_PERMISSIONS" => "N", ), false, array("ID", $arParams["FIELD_ID"]) ); while($ar = $rsSection->GetNext()) { if(isset($ar[$arParams["FIELD_ID"]])) { $arResult["FILES"][] = $ar[$arParams["FIELD_ID"]]; } $arResult["SECTION"] = $ar; } } if(!in_array($arParams["FILE_ID"], $arResult["FILES"])) { ShowError(GetMessage("CC_BLF_WRONG_FILE")); } else { $arFile = CFile::GetFileArray($arParams["FILE_ID"]); if(is_array($arFile)) { $force_download = isset($_REQUEST["download"]) && $_REQUEST["download"] === "y"; CFile::ViewByUser($arParams["FILE_ID"], array( "content_type" => $arFile["CONTENT_TYPE"], "force_download" => $force_download, )); } } ?>