• Модуль: mobile
  • Путь к файлу: ~/bitrix/modules/mobile/classes/general/mobile_helper.php
  • Класс: CMobileHelper
  • Вызов: CMobileHelper::getUFForPostForm
static function getUFForPostForm($arParams)
{
	$arFileData = array();

	$arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields($arParams["ENTITY_TYPE"], $arParams["ENTITY_ID"], LANGUAGE_ID);
	$ufCode = $arParams["UF_CODE"];
	$previewImageSize = (isset($arParams['PREVIEW_IMAGE_SIZE']) && (int)$arParams['PREVIEW_IMAGE_SIZE'] > 0 ? (int)$arParams['PREVIEW_IMAGE_SIZE'] : 144);

	if (
		!empty($arUF[$ufCode])
		&& !empty($arUF[$ufCode]["VALUE"])
	)
	{
		if ($arParams["IS_DISK_OR_WEBDAV_INSTALLED"])
		{
			if (
				BitrixMainConfigOption::get('disk', 'successfully_converted', false)
				&& CModule::IncludeModule('disk')
			)
			{
				$userFieldManager = BitrixDiskDriver::getInstance()->getUserFieldManager();
				$userFieldManager->loadBatchAttachedObject($arUF[$ufCode]["VALUE"]);

				foreach($arUF[$ufCode]["VALUE"] as $attachedId)
				{
					$attachedObject = $userFieldManager->getAttachedObjectById($attachedId);
					if($attachedObject)
					{
						$file = $attachedObject->getObject();
						if (!$file)
						{
							continue;
						}

						$fileName = $file->getName();

						$fileUrl = BitrixDiskUrlManager::getUrlUfController('download', array('attachedId' => $attachedId));
						$fileUrl = str_replace("/bitrix/tools/disk/uf.php", SITE_DIR."mobile/ajax.php", $fileUrl);
						$fileUrl = $fileUrl.(mb_strpos($fileUrl, "?") === false ? "?" : "&")."mobile_action=disk_uf_view&filename=".$fileName;

						if (
							BitrixDiskTypeFile::isImage($file)
							&& ($realFile = $file->getFile())
						)
						{
							$previewImageUrl = BitrixDiskUrlManager::getUrlUfController(
								'show',
								array(
									'attachedId' => $attachedId,
									'width' => $previewImageSize,
									'height' => $previewImageSize,
									'exact' => 'Y',
									'signature' => BitrixDiskSecurityParameterSigner::getImageSignature($attachedId, $previewImageSize, $previewImageSize)
								)
							);
						}
						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,
							'objectId' => BitrixDiskUfFileUserType::NEW_FILE_PREFIX.$file->GetId(),
							'extension' => $file->getExtension(),
							'name' => $fileName,
							'url' => $fileUrl,
							'iconUrl' => $iconUrl
						);

						if ($previewImageUrl)
						{
							$fileFata['previewImageUrl'] = CHTTP::URN2URI($previewImageUrl);
						}

						$arFileData[] = $fileFata;
					}
				}
			}
			else // webdav
			{
				$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" => $previewImageSize,
										"height" => $previewImageSize
									),
									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 // get just files
		{
			$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" => $previewImageSize,
							"height" => $previewImageSize
						),
						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;
}