• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/ui/viewer/transformation/callbackhandler.php
  • Класс: BitrixMainUIViewerTransformationCallbackHandler
  • Вызов: CallbackHandler::call
static function call($status, $command, $params, $result = array())
	{
		if (isset($params['fileId']) && $params['fileId'] > 0)
		{
			TransformerFileTransformer::clearInfoCache($params['fileId']);
		}
		if ($status == TransformerCommand::STATUS_ERROR && isset($params['id']))
		{
			return true;
		}

		if (!isset($params['id']) || !isset($params['fileId']) || !isset($result['files']))
		{
			return 'wrong parameters';
		}

		if ($status != TransformerCommand::STATUS_UPLOAD)
		{
			return 'wrong command status';
		}

		$previewLogId = $previewId = $previewImageId = 0;
		$previewLog = FilePreviewTable::getList([
			'select' => ['ID'],
			'filter' => ['FILE_ID' => $params['fileId']],
			'limit' => 1,
		])->fetch();

		if (isset($previewLog['ID']))
		{
			$previewLogId = $previewLog['ID'];
		}

		foreach ($result['files'] as $ext => $filePath)
		{
			if ($ext === 'jpg')
			{
				$previewImageId = self::saveFile($filePath, 'image/jpeg');
				if ($previewImageId)
				{
					if ($previewLogId)
					{
						FilePreviewTable::update($previewLogId, [
							'PREVIEW_IMAGE_ID' => $previewImageId,
						]);
					}
					else
					{
						$resultAdd = FilePreviewTable::add([
							'FILE_ID' => $params['fileId'],
							'PREVIEW_IMAGE_ID' => $previewImageId,
						]);

						if ($resultAdd->getId())
						{
							$previewLogId = $resultAdd->getId();
						}
					}
				}
			}
			else
			{
				$previewId = self::saveFile($filePath, MimeType::getByFileExtension($ext));
				if ($previewLogId)
				{
					FilePreviewTable::update($previewLogId, [
						'PREVIEW_ID' => $previewId,
					]);
				}
				else
				{
					FilePreviewTable::add([
						'FILE_ID' => $params['fileId'],
						'PREVIEW_ID' => $previewId,
					]);
				}

				self::sendNotifyAboutTransformation($params['fileId']);
			}
		}

		(new Event('main', 'onFileTransformationComplete', [
			'fileId' => $params['fileId'],
		]))->send();

		return true;
	}