• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/importer.php
  • Класс: BitrixListsImporter
  • Вызов: Importer::createIBlock
static function createIBlock($iblockType, $iblock, $pictureType, $picture, $siteId = null)
{
	if (is_null($siteId))
		$siteId = CSite::GetDefSite();

	$db = CIBlock::GetList(
		array(),
		array("IBLOCK_TYPE_ID" => $iblockType, "CODE" => $iblock["CODE"], "CHECK_PERMISSIONS" => "N", "SITE_ID" => $siteId)
	);
	if ($res = $db->Fetch())
		return $res["ID"];

	$fields = array(
		"NAME" => $iblock["NAME"],
		"DESCRIPTION" => $iblock["DESCRIPTION"],
		"IBLOCK_TYPE_ID" => $iblockType,
		"SORT" => $iblock["SORT"],
		"CODE" => $iblock["CODE"],
		"WORKFLOW" => "N",
		"ELEMENTS_NAME" => $iblock["ELEMENTS_NAME"],
		"ELEMENT_NAME" => $iblock["ELEMENT_NAME"],
		"ELEMENT_ADD" => $iblock["ELEMENT_ADD"],
		"ELEMENT_EDIT" => $iblock["ELEMENT_EDIT"],
		"ELEMENT_DELETE" => $iblock["ELEMENT_DELETE"],
		"SECTIONS_NAME" => $iblock["SECTIONS_NAME"],
		"SECTION_NAME" => $iblock["SECTION_NAME"],
		"SECTION_ADD" => $iblock["SECTION_ADD"],
		"SECTION_EDIT" => $iblock["SECTION_EDIT"],
		"SECTION_DELETE" => $iblock["SECTION_DELETE"],
		"BIZPROC" => "Y",
		"SITE_ID" => array($siteId),
		"RIGHTS_MODE" => "E",
	);

	if ($iblock["SOCNET_GROUP_ID"])
		$fields["SOCNET_GROUP_ID"] = $iblock["SOCNET_GROUP_ID"];

	static $exts = array(
		"image/jpeg" => "jpg",
		"image/png" => "png",
		"image/gif" => "gif",
	);
	if (!empty($picture) && isset($exts[$pictureType]))
	{
		$fn = CTempFile::GetFileName();
		MainIODirectory::createDirectory($fn);

		$fn .= md5(mt_rand()).".".$exts[$pictureType];

		$f = fopen($fn, "wb");
		fwrite($f, $picture);
		fclose($f);

		$fields["PICTURE"] = CFile::MakeFileArray($fn/*, $pictureType*/);
	}

	$ob = new CIBlock;
	$res = $ob->Add($fields);
	if ($res)
	{
		self::createIBlockRights($res);

		$list = new CList($res);

		if (isset($iblock["~NAME_FIELD"]))
			$list->UpdateField("NAME", $iblock["~NAME_FIELD"]);

		$list->Save();

		CLists::setLiveFeed(1, $res);

		return $res;
	}

	return 0;
}