• Модуль: translate
  • Путь к файлу: ~/bitrix/modules/translate/lib/controller/asset/grabber.php
  • Класс: BitrixTranslateControllerAssetGrabber
  • Вызов: Grabber::uploadAction
public function uploadAction(): array
{
	$result = [];
	$success = false;
	if (
		isset($_FILES, $_FILES['tarFile'], $_FILES['tarFile']['tmp_name']) &&
		($_FILES['tarFile']['error'] == UPLOAD_ERR_OK) &&
		file_exists($_FILES['tarFile']['tmp_name'])
	)
	{
		if (
			(filesize($_FILES['tarFile']['tmp_name']) > 0) &&
			(
				mb_substr($_FILES['tarFile']['name'], -7) === '.tar.gz' ||
				mb_substr($_FILES['tarFile']['name'], -4) === '.tar'
			)
		)
		{
			if (mb_substr($_FILES['tarFile']['name'], -7) === '.tar.gz')
			{
				$suffix = '.tar.gz';
			}
			else
			{
				$suffix = '.tar';
			}

			if ($this->moveUploadedFile($_FILES['tarFile'], $suffix))
			{
				$this->saveProgressParameters();
				$success = ($this->hasErrors() === false);
			}
		}
		else
		{
			$this->addError(new MainError(Loc::getMessage('TR_ERROR_TARFILE_EXTENTION')));
		}
	}
	else
	{
		if ($_FILES['tarFile']['error'] == UPLOAD_ERR_INI_SIZE)
		{
			$this->addError(
				new MainError(Loc::getMessage('TR_ERROR_UPLOAD_SIZE', [
					'#SIZE#' => CFile::formatSize(self::getMaxUploadSize())
				]))
			);
		}
		else
		{
			$this->addError(new MainError(Loc::getMessage('TR_ERROR_TARFILE')));
		}
	}

	if ($success)
	{
		$result['SUMMARY'] = Loc::getMessage('TR_IMPORT_UPLOAD_OK');
	}

	$result['STATUS'] = TranslateControllerSTATUS_COMPLETED;

	return $result;
}