• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/importer.php
  • Класс: BitrixListsImporter
  • Вызов: Importer::import
static function import($iblockType, $datum, $siteId = null)
{
	if (empty($datum))
		throw new MainArgumentNullException("datum");

	if (mb_substr($datum, 0, 10) === "compressed")
		$datum = gzuncompress(MainTextBinaryString::getSubstring($datum, 10));

	$len = intval(MainTextBinaryString::getSubstring($datum, 0, 10));
	$iblockSerialized = MainTextBinaryString::getSubstring($datum, 10, $len);
	$datum = MainTextBinaryString::getSubstring($datum, $len + 10);

	$marker = MainTextBinaryString::getSubstring($datum, 0, 1);
	$picture = null;
	$pictureType = null;
	if ($marker == "P")
	{
		$len = intval(MainTextBinaryString::getSubstring($datum, 1, 10));
		$pictureType = MainTextBinaryString::getSubstring($datum, 11, $len);
		$datum = MainTextBinaryString::getSubstring($datum, $len + 11);

		$len = intval(MainTextBinaryString::getSubstring($datum, 0, 10));
		$picture = MainTextBinaryString::getSubstring($datum, 10, $len);
		$datum = MainTextBinaryString::getSubstring($datum, $len + 10);

		$marker = MainTextBinaryString::getSubstring($datum, 0, 1);
	}

	$iblock = CheckSerializedData($iblockSerialized) ? unserialize($iblockSerialized) : array();
	$iblock = MainTextEncoding::convertEncodingArray($iblock, "UTF-8", LANG_CHARSET);
	$iblockId = static::createIBlock($iblockType, $iblock, $pictureType, $picture, $siteId);

	if ($iblockId > 0)
	{
		$documentType = self::getDocumentType($iblockType, $iblockId);

		while (!empty($datum))
		{
			if ($marker == "B")
			{
				$len = intval(MainTextBinaryString::getSubstring($datum, 1, 10));
				$bpDescr = MainTextBinaryString::getSubstring($datum, 11, $len);
				$datum = MainTextBinaryString::getSubstring($datum, $len + 11);

				$bpDescr = CheckSerializedData($bpDescr) ? unserialize($bpDescr) : array();
				$bpDescr = MainTextEncoding::convertEncodingArray($bpDescr, "UTF-8", LANG_CHARSET);

				$len = intval(MainTextBinaryString::getSubstring($datum, 0, 10));
				$bp = MainTextBinaryString::getSubstring($datum, 10, $len);
				$datum = MainTextBinaryString::getSubstring($datum, $len + 10);

				static::importTemplate($documentType, $bpDescr, $bp);
			}
			else
			{

			}

			if (empty($datum))
				break;

			$marker = MainTextBinaryString::getSubstring($datum, 0, 1);
		}
	}
}