/** * @param array $values * @return array */ public function filter(array $values) { if ($values['get']['action'] == 'showFile') { if ($values['get']['preview'] == 'Y') { $values['get']['width'] = 204; $values['get']['height'] = 119; $values['get']['signature'] = \Bitrix\Disk\Security\ParameterSigner::getImageSignature($values['get']['fileId'], $values['get']['width'], $values['get']['height']); } else { unset($values['get']['width'], $values['get']['height']); } unset($values['get']['exact']); } else { $values['get']['action'] = 'downloadFile'; } return array('get' => $values['get']); }
public static function getUFForPostForm($arParams) { $arFileData = array(); $arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields($arParams["ENTITY_TYPE"], $arParams["ENTITY_ID"], LANGUAGE_ID); $ufCode = $arParams["UF_CODE"]; if (!empty($arUF[$ufCode]) && !empty($arUF[$ufCode]["VALUE"])) { if ($arParams["IS_DISK_OR_WEBDAV_INSTALLED"]) { if (\Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::IncludeModule('disk')) { $userFieldManager = \Bitrix\Disk\Driver::getInstance()->getUserFieldManager(); $urlManager = \Bitrix\Disk\Driver::getInstance()->getUrlManager(); $userFieldManager->loadBatchAttachedObject($arUF[$ufCode]["VALUE"]); foreach ($arUF[$ufCode]["VALUE"] as $attachedId) { $attachedObject = $userFieldManager->getAttachedObjectById($attachedId); if ($attachedObject) { $file = $attachedObject->getObject(); $fileName = $file->getName(); $fileUrl = $urlManager->getUrlUfController('download', array('attachedId' => $attachedId)); $fileUrl = str_replace("/bitrix/tools/disk/uf.php", SITE_DIR . "mobile/ajax.php", $fileUrl); $fileUrl = $fileUrl . (strpos($fileUrl, "?") === false ? "?" : "&") . "mobile_action=disk_uf_view&filename=" . $fileName; if (\Bitrix\Disk\TypeFile::isImage($file) && ($realFile = $file->getFile())) { $previewImageUrl = $urlManager->getUrlUfController('show', array('attachedId' => $attachedId, 'width' => 144, 'height' => 144, 'exact' => 'Y', 'signature' => \Bitrix\Disk\Security\ParameterSigner::getImageSignature($attachedId, 144, 144))); } else { $previewImageUrl = false; } $icon = CMobileHelper::mobileDiskGetIconByFilename($fileName); $iconUrl = CComponentEngine::makePathFromTemplate('/bitrix/components/bitrix/mobile.disk.file.detail/images/' . $icon); $fileFata = array('type' => $file->getExtension(), 'ufCode' => $ufCode, 'id' => $attachedId, 'extension' => $file->getExtension(), 'name' => $fileName, 'url' => $fileUrl, 'iconUrl' => $iconUrl); if ($previewImageUrl) { $fileFata['previewImageUrl'] = CHTTP::URN2URI($previewImageUrl); } $arFileData[] = $fileFata; } } } else { $data = CWebDavIblock::getRootSectionDataForUser($GLOBALS["USER"]->GetID()); if (is_array($data)) { $ibe = new CIBlockElement(); $dbWDFile = $ibe->GetList(array(), array('ID' => $arUF[$ufCode]["VALUE"], 'IBLOCK_ID' => $data["IBLOCK_ID"]), false, false, array('ID', 'IBLOCK_ID', 'PROPERTY_FILE')); while ($arWDFile = $dbWDFile->Fetch()) { if ($arFile = CFile::GetFileArray($arWDFile["PROPERTY_FILE_VALUE"])) { if (CFile::IsImage($arFile["FILE_NAME"], $arFile["CONTENT_TYPE"])) { $imageResized = CFile::ResizeImageGet($arFile["ID"], array("width" => 144, "height" => 144), BX_RESIZE_IMAGE_EXACT, false, true); $previewImageUrl = $imageResized["src"]; } else { $previewImageUrl = false; } $fileExtension = GetFileExtension($arFile["FILE_NAME"]); $fileData = array('type' => $fileExtension, 'ufCode' => $ufCode, 'id' => $arWDFile["ID"], 'extension' => $fileExtension, 'name' => $arFile["FILE_NAME"], 'url' => $arFile["SRC"]); if ($previewImageUrl) { $fileData['previewImageUrl'] = CHTTP::URN2URI($previewImageUrl); } $arFileData[] = $fileData; } } } } } else { $dbRes = CFile::GetList(array(), array("@ID" => implode(",", $arUF[$ufCode]["VALUE"]))); while ($arFile = $dbRes->GetNext()) { if (CFile::IsImage($arFile["FILE_NAME"], $arFile["CONTENT_TYPE"])) { $imageResized = CFile::ResizeImageGet($arFile["ID"], array("width" => 144, "height" => 144), BX_RESIZE_IMAGE_EXACT, false, true); $previewImageUrl = $imageResized["src"]; } else { $previewImageUrl = false; } $fileExtension = GetFileExtension($arFile["FILE_NAME"]); $fileData = array('type' => $fileExtension, 'ufCode' => $ufCode, 'id' => $arFile["ID"], 'extension' => $fileExtension, 'name' => $arFile["FILE_NAME"], 'downloadUrl' => $arFile["SRC"]); if ($previewImageUrl) { $fileData['previewImageUrl'] = CHTTP::URN2URI($previewImageUrl); } $arFileData[] = $fileData; } } } return $arFileData; }
$file["BASIC"] = array("src" => $file["ORIGINAL"]["src"] . "&" . http_build_query(array_merge($arParams["SCREEN_SIZE"], array('signature' => ParameterSigner::getImageSignature($file['ID'], $arParams["SCREEN_SIZE"]["width"], $arParams["SCREEN_SIZE"]["height"])))), "width" => $arDestinationSize["width"], "height" => $arDestinationSize["height"]); } } $arResult["FILES"][$id] = $images[$id] = $file; } else { $files[$id] = $file; } } if ($this->__page == "show") { $arResult['IMAGES'] = $images; $arResult['FILES'] = $files; } } elseif (strpos($this->__page, "error") === false) { $arParams["THUMB_SIZE"] = 100; $http_query = array("cache_image" => "Y", "width" => $arParams["THUMB_SIZE"], "height" => $arParams["THUMB_SIZE"]); foreach ($arResult['FILES'] as $id => $arElement) { if (array_key_exists("IMAGE", $arElement)) { $http_query['signature'] = ParameterSigner::getImageSignature($arElement['ID'], $arParams["THUMB_SIZE"], $arParams["THUMB_SIZE"]); CFile::ScaleImage($arElement["IMAGE"]["WIDTH"], $arElement["IMAGE"]["HEIGHT"], array("width" => $arParams["THUMB_SIZE"], "height" => $arParams["THUMB_SIZE"]), BX_RESIZE_IMAGE_PROPORTIONAL, $bNeedCreatePicture, $arSourceSize, $arDestinationSize); if ($bNeedCreatePicture) { $arElement["original"] = array("src" => $arElement["URL_GET"], "width" => $arElement["IMAGE"]["WIDTH"], "height" => $arElement["IMAGE"]["HEIGHT"]); $arElement["IMAGE"]["WIDTH"] = $arDestinationSize["width"]; $arElement["IMAGE"]["HEIGHT"] = $arDestinationSize["height"]; if (array_key_exists("PREVIEW_URL", $arElement)) { $arElement["PREVIEW_URL"] .= (strpos($arElement["PREVIEW_URL"], "?") === false ? "?" : "&") . http_build_query($http_query); } $arResult['FILES'][$id] = $arElement; } } } }
define("STOP_STATISTICS", true); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); if(!\Bitrix\Main\Loader::includeModule('disk')) { die; } if($_GET['action'] == 'showFile') { if ($_GET['preview'] == 'Y') { $_GET['width'] = 204; $_GET['height'] = 119; $_GET['signature'] = \Bitrix\Disk\Security\ParameterSigner::getImageSignature($_GET['fileId'], $_GET['width'], $_GET['height']); } else { unset($_GET['width']); unset($_GET['height']); } unset($_GET['exact']); } else { $_GET['action'] = 'downloadFile'; } if($_SERVER['REQUEST_METHOD'] == 'POST') {
} } if ($bExactly && $circumscribed) { CFile::ScaleImage($arSize["width"], $arSize["height"], $circumscribed, BX_RESIZE_IMAGE_PROPORTIONAL, $bNeedCreatePicture, $arSourceSize, $arSize); } $file["INLINE"]["width"] = $bExactly ? $arSize["width"] : $arDestinationSize["width"]; $file["INLINE"]["height"] = $bExactly ? $arSize["height"] : $arDestinationSize["height"]; // gallery $max_real_dimension = max(array(intval($file["IMAGE"]["WIDTH"]), intval($file["IMAGE"]["HEIGHT"]))); if ($max_real_dimension > $max_dimension) { $arParams["SCREEN_SIZE"] = array("width" => $max_dimension, "height" => $max_dimension); } else { $arParams["SCREEN_SIZE"] = array("width" => $max_real_dimension, "height" => $max_real_dimension); } CFile::ScaleImage($file["IMAGE"]["WIDTH"], $file["IMAGE"]["HEIGHT"], $arParams["SCREEN_SIZE"], BX_RESIZE_IMAGE_PROPORTIONAL, $bNeedCreatePicture, $arSourceSize, $arDestinationSize); if ($bNeedCreatePicture) { $arParams["SCREEN_SIZE"]["signature"] = \Bitrix\Disk\Security\ParameterSigner::getImageSignature($file["ID"], $arParams["SCREEN_SIZE"]["width"], $arParams["SCREEN_SIZE"]["height"]); $file["BASIC"]["src"] .= "&" . http_build_query($arParams["SCREEN_SIZE"]); $file["BASIC"]["width"] = $arDestinationSize["width"]; $file["BASIC"]["height"] = $arDestinationSize["height"]; } $arResult["FILES"][$id] = $images[$id] = $file; } else { $arResult["FILES"][$id] = $files[$id] = $file; } } if ($this->__page == "show") { $arResult['IMAGES'] = $images; $arResult['FILES'] = $files; } }
/** * Gets url to show file. * @param File $file Target file. * @param array $params Parameters to add in query. * @param bool $absolute Generate absolute url with host url. * @return string */ public function getUrlForShowFile(File $file, array $params = array(), $absolute = false) { if (isset($params['width']) && isset($params['height'])) { $params['signature'] = ParameterSigner::getImageSignature($file->getId(), $params['width'], $params['height']); } return $this->getUrlDownloadController('showFile', array_merge($params, array('fileId' => $file->getId(), 'filename' => $file->getName())), $absolute); }