Chunk::validate

  1. Bitrix24 API (v. 23.675.0)
  2. ui
  3. Chunk
  4. validate
  • Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/FileUploader/Chunk.php
  • Класс: BitrixUIFileUploaderChunk
  • Вызов: Chunk::validate
public function validate(Configuration $config): Result
{
	$result = new Result();

	if (in_array(mb_strtolower($this->getName()), $config->getIgnoredFileNames()))
	{
		return $result->addError(new UploaderError(UploaderError::FILE_NAME_NOT_ALLOWED));
	}

	if ($config->getMaxFileSize() !== null && $this->getFileSize() > $config->getMaxFileSize())
	{
		return $result->addError(
			new UploaderError(
				UploaderError::MAX_FILE_SIZE_EXCEEDED,
				[
					'maxFileSize' => CFile::formatSize($config->getMaxFileSize()),
					'maxFileSizeInBytes' => $config->getMaxFileSize(),
				]
			)
		);
	}

	if ($this->getFileSize() < $config->getMinFileSize())
	{
		return $result->addError(
			new UploaderError(
				UploaderError::MIN_FILE_SIZE_EXCEEDED,
				[
					'minFileSize' => CFile::formatSize($config->getMinFileSize()),
					'minFileSizeInBytes' => $config->getMinFileSize(),
				]
			)
		);
	}

	if (!$this->validateFileType($config->getAcceptedFileTypes()))
	{
		return $result->addError(new UploaderError(UploaderError::FILE_TYPE_NOT_ALLOWED));
	}

	$width = 0;
	$height = 0;
	if (CFile::isImage($this->getName(), $this->getType()))
	{
		$image = new FileImage($this->getFile()->getPhysicalPath());
		$imageInfo = $image->getInfo(false);
		if (!$imageInfo)
		{
			if ($config->getIgnoreUnknownImageTypes())
			{
				$result->setData(['width' => $width, 'height' => $height]);

				return $result;
			}
			else
			{
				return $result->addError(new UploaderError(UploaderError::IMAGE_TYPE_NOT_SUPPORTED));
			}
		}

		$width = $imageInfo->getWidth();
		$height = $imageInfo->getHeight();
		if ($imageInfo->getFormat() === FileImage::FORMAT_JPEG)
		{
			$exifData = $image->getExifData();
			if (isset($exifData['Orientation']) && $exifData['Orientation'] >= 5 && $exifData['Orientation'] <= 8)
			{
				[$width, $height] = [$height, $width];
			}
		}

		if (!$config->shouldTreatOversizeImageAsFile())
		{
			$imageData = new FileData($this->getName(), $this->getType(), $this->getSize());
			$imageData->setWidth($width);
			$imageData->setHeight($height);

			$validationResult = $config->validateImage($imageData);
			if (!$validationResult->isSuccess())
			{
				return $result->addErrors($validationResult->getErrors());
			}
		}
	}

	$result->setData(['width' => $width, 'height' => $height]);

	return $result;
}

Добавить комментарий