function ImportIBlockFromXML($xmlFile, $iblockCode, $iblockType, $siteID, $permissions = array()) { if (!CModule::IncludeModule("iblock")) { return false; } $rsIBlock = CIBlock::GetList(array(), array("CODE" => $iblockCode, "TYPE" => $iblockType, "SITE_ID" => $siteID)); if ($arIBlock = $rsIBlock->Fetch()) { return false; } if (!is_array($siteID)) { $siteID = array($siteID); } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/iblock/classes/" . strtolower($GLOBALS["DB"]->type) . "/cml2.php"; $iblockID = ImportXMLFile($xmlFile, $iblockType, $siteID, $section_action = "N", $element_action = "N", $use_crc = false, $preview = false, $sync = false, $return_last_error = false, $return_iblock_id = true); //Import was not able to return iblock_id by error if (!is_integer($iblockID) || $iblockID <= 0) { //try to find iblock $rsIBlock = CIBlock::GetList(array(), array("CODE" => $iblockCode, "TYPE" => $iblockType, "SITE_ID" => $siteID)); if ($arIBlock = $rsIBlock->Fetch()) { $iblockID = $arIBlock["ID"]; } else { $iblockID = false; } } //Set iblock permissions if ($iblockID > 0) { if (empty($permissions)) { $permissions = array(1 => "X", 2 => "R"); } CIBlock::SetPermission($iblockID, $permissions); } return $iblockID; }
function DEMO_IBlock_ImportXML($file, $site_id, $xml_force = false, $workflow = false) { if (strlen($file) <= 0) { return false; } $xml_dir = $_SERVER['DOCUMENT_ROOT'] . "/bitrix/wizards/bitrix/demo/modules/iblock/xml/" . LANGUAGE_ID; if (file_exists($xml_dir) && is_dir($xml_dir)) { if (is_file($xml_dir . "/" . $file)) { if (preg_match("/^(\\d\\d\\d)_([a-z]+)_(.+)_([a-z]{2})\\.xml\$/", $file, $match)) { $documentRoot = rtrim(str_replace(array("\\\\", "//"), array("\\", "/"), $_SERVER["DOCUMENT_ROOT"]), "\\/"); $arFile = array("DIR" => substr($xml_dir, strlen($documentRoot)), "NAME" => $file, "TYPE" => $match[2], "XML_ID" => $match[3], "LANG" => $match[4]); if ($arFile["TYPE"] == "FUTURE") { $arFile["TYPE"] = "xmlcatalog"; } //Check if iblock exists $obIBlock = new CIBlock(); $rsIBlock = $obIBlock->GetList(array(), array("XML_ID" => $arFile["XML_ID"])); $arIBlock = $rsIBlock->Fetch(); if (!$arIBlock || $xml_force === true) { //Create iblock type DEMO_IBlock_CreateType(array($arFile["TYPE"])); ImportXMLFile($arFile["DIR"] . "/" . $arFile["NAME"], $arFile["TYPE"], array($site_id), "N", "N"); $rsIBlock = $obIBlock->GetList(array(), array("XML_ID" => $arFile["XML_ID"])); $arIBlock = $rsIBlock->Fetch(); if (is_array($arIBlock)) { $obIBlock = new CIBlock(); if ($workflow === "bizproc") { if (IsModuleInstalled('bizproc')) { $obIBlock->Update($arIBlock["ID"], array("WORKFLOW" => "N", "BIZPROC" => "Y")); } else { $obIBlock->Update($arIBlock["ID"], array("WORKFLOW" => "Y", "BIZPROC" => "N")); } } elseif ($workflow) { $obIBlock->Update($arIBlock["ID"], array("WORKFLOW" => "Y")); } } } if ($arIBlock["ID"]) { $obIBlock = new CIBlock(); $obIBlock->SetPermission($arIBlock["ID"], array(1 => "X", 2 => "R")); } return $arIBlock["ID"]; } } } return false; }
function ImportIBlockFromXML($xmlFile, $iblockCode, $iblockType, $siteID, $permissions = Array(), $checkExists = true) { if (!CModule::IncludeModule("iblock")) return false; if($checkExists) { $rsIBlock = CIBlock::GetList(array(), array("CODE" => $iblockCode, "TYPE" => $iblockType)); if ($arIBlock = $rsIBlock->Fetch()) return false; } if (!is_array($siteID)) $siteID = Array($siteID); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/classes/".strtolower($GLOBALS["DB"]->type)."/cml2.php"); ImportXMLFile($xmlFile, $iblockType, $siteID, $section_action = "N", $element_action = "N"); $iblockID = false; $rsIBlock = CIBlock::GetList(array(), array("CODE" => $iblockCode, "TYPE" => $iblockType)); if ($arIBlock = $rsIBlock->Fetch()) { $iblockID = $arIBlock["ID"]; if (empty($permissions)) $permissions = Array(1 => "X", 2 => "R"); CIBlock::SetPermission($iblockID, $permissions); } return $iblockID; }
if (!$success) { return; } } // 2. Import iblock $iBlockId = 0; $db_res = CIBlock::GetList(array(), array("CODE" => "photo", "XML_ID" => "photo-gallery")); if ($db_res && ($res = $db_res->Fetch())) { $iBlockId = intVal($res["ID"]); } else { $source_base = dirname(__FILE__); $documentRoot = rtrim(str_replace(array("\\\\", "//", "\\"), array("\\", "/", "/"), $_SERVER["DOCUMENT_ROOT"]), "\\/"); $source_base = substr($source_base, strLen($documentRoot)); $source_base = str_replace(array("\\", "//"), "/", "/" . $source_base . "/"); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/iblock/classes/" . $DBType . "/cml2.php"; $res = ImportXMLFile($source_base . "xml/" . LANGUAGE_ID . "/photogallery.xml", "gallery", $SITE_ID); $db_res = CIBlock::GetList(array(), array("CODE" => "photo", "XML_ID" => "photo-gallery")); if ($db_res && ($res = $db_res->Fetch())) { $iBlockId = intVal($res["ID"]); } } if ($iBlockId <= 0) { return false; } CIBlock::SetPermission($iBlockId, array("1" => "W", "2" => "R")); // 3. Add Forum $arParams = array("USE_COMMENTS" => "N", "COMMENTS_TYPE" => "none", "FORUM_ID" => "", "BLOG_URL" => "", "PATH_TO_SMILE" => ""); if (CModule::IncludeModule("forum")) { // 3.1 Add group $iGroupId = 0; $db_res = CForumGroup::GetListEx(array(), array("LID" => LANGUAGE_ID));