• Модуль: translate
  • Путь к файлу: ~/bitrix/modules/translate/lib/controller/import/importcsv.php
  • Класс: BitrixTranslateControllerImportImportCsv
  • Вызов: ImportCsv::verifyCsvFile
private function verifyCsvFile(): bool
{
	$testDelimiters = [
		TranslateIOCsvFile::DELIMITER_TZP,
		TranslateIOCsvFile::DELIMITER_TAB,
		TranslateIOCsvFile::DELIMITER_ZPT,
	];
	foreach ($testDelimiters as $delimiter)
	{
		$this->csvFile->setFieldDelimiter($delimiter);

		$this->csvFile->moveFirst();
		$rowHead = $this->csvFile->fetch();
		if (
			!is_array($rowHead)
			|| empty($rowHead)
			|| empty($rowHead[0])
			|| (count($rowHead) < 3)
		)
		{
			continue;
		}

		break;
	}

	if (
		!is_array($rowHead)
		|| empty($rowHead)
		|| empty($rowHead[0])
		|| (count($rowHead) < 3)
	)
	{
		$this->addError(new MainError(Loc::getMessage('TR_IMPORT_ERR_EMPTY_FIRST_ROW')));

		return false;
	}

	$this->languageList = self::$enabledLanguages;
	$this->columnList = array_flip($rowHead);
	foreach ($this->languageList as $keyLang => $langID)
	{
		if (!isset($this->columnList[$langID]))
		{
			unset($this->languageList[$keyLang]);
		}
	}
	if (!isset($this->columnList['file']))
	{
		$this->addError(new MainError(Loc::getMessage('TR_IMPORT_ERR_DESTINATION_FIELD_ABSENT')));
	}
	if (!isset($this->columnList['key']))
	{
		$this->addError(new MainError(Loc::getMessage('TR_IMPORT_ERR_PHRASE_CODE_FIELD_ABSENT')));
	}
	if (empty($this->languageList))
	{
		$this->addError(new MainError(Loc::getMessage('TR_IMPORT_ERR_LANGUAGE_LIST_ABSENT')));
	}

	return count($this->getErrors()) === 0;
}