示例#1
0
						).'<br />';
					}
				}
				if ($boolFlag)
				{
					$boolExists = isset($arCatalogList[$intIBlockID]);
					$arCurValues = ($boolExists ? $arCatalogList[$intIBlockID] : array());

					if ($boolExists && ('Y' == $arIBlockInfo['CATALOG'] || 'Y' == $arIBlockInfo['SUBSCRIPTION'] || 0 < $arIBlockInfo['PRODUCT_IBLOCK_ID']))
					{
						$boolAttr = $obCatalog->Update(
							$intIBlockID,
							array(
								'IBLOCK_ID' => $arIBlockInfo['ID'],
								'YANDEX_EXPORT' => $arIBlockInfo['YANDEX_EXPORT'],
								'SUBSCRIPTION' => $arIBlockInfo['SUBSCRIPTION'],
								'VAT_ID' => $arIBlockInfo['VAT_ID'],
								'PRODUCT_IBLOCK_ID' => $arIBlockInfo['PRODUCT_IBLOCK_ID'],
								'SKU_PROPERTY_ID' => $arIBlockInfo['SKU_PROPERTY_ID']
							)
						);
						if (!$boolAttr)
						{
							$ex = $APPLICATION->GetException();
							$strError = $ex->GetString();
							$strWarning .= Loc::getMessage(
								'CAT_IBLOCK_OFFERS_ERR_CAT_UPDATE',
								array(
									'#PRODUCT#' => $arIBlockInfo['INFO'],
									'#ERROR#' => $strError
								)
示例#2
0
    //IBlock fields
    $iblock = new CIBlock();
    $arFields = array("ACTIVE" => "Y", "FIELDS" => array('IBLOCK_SECTION' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'ACTIVE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'Y'), 'ACTIVE_FROM' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'ACTIVE_TO' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SORT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'NAME' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => ''), 'PREVIEW_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('FROM_DETAIL' => 'N', 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95, 'DELETE_WITH_DETAIL' => 'N', 'UPDATE_WITH_DETAIL' => 'N')), 'PREVIEW_TEXT_TYPE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text'), 'PREVIEW_TEXT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'DETAIL_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95)), 'DETAIL_TEXT_TYPE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text'), 'DETAIL_TEXT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'XML_ID' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'CODE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y')), 'TAGS' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_NAME' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('FROM_DETAIL' => 'N', 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95, 'DELETE_WITH_DETAIL' => 'N', 'UPDATE_WITH_DETAIL' => 'N')), 'SECTION_DESCRIPTION_TYPE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => 'text'), 'SECTION_DESCRIPTION' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_DETAIL_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95)), 'SECTION_XML_ID' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_CODE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y'))), "CODE" => "clothes_offers", "XML_ID" => $iblockCodeOffers);
    $iblock->Update($IBLOCK_OFFERS_ID, $arFields);
}
if ($IBLOCK_CATALOG_ID) {
    $iblockCode = "clothes_" . WIZARD_SITE_ID;
    //IBlock fields
    $iblock = new CIBlock();
    $arFields = array("ACTIVE" => "Y", "FIELDS" => array('IBLOCK_SECTION' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => ''), 'ACTIVE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'Y'), 'ACTIVE_FROM' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'ACTIVE_TO' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SORT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'NAME' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => ''), 'PREVIEW_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('FROM_DETAIL' => 'N', 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95, 'DELETE_WITH_DETAIL' => 'N', 'UPDATE_WITH_DETAIL' => 'N')), 'PREVIEW_TEXT_TYPE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text'), 'PREVIEW_TEXT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'DETAIL_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95)), 'DETAIL_TEXT_TYPE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text'), 'DETAIL_TEXT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'XML_ID' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'CODE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y')), 'TAGS' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_NAME' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => ''), 'SECTION_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('FROM_DETAIL' => 'N', 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95, 'DELETE_WITH_DETAIL' => 'N', 'UPDATE_WITH_DETAIL' => 'N')), 'SECTION_DESCRIPTION_TYPE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text'), 'SECTION_DESCRIPTION' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_DETAIL_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95)), 'SECTION_XML_ID' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_CODE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y'))), "CODE" => "clothes", "XML_ID" => $iblockCode);
    $iblock->Update($IBLOCK_CATALOG_ID, $arFields);
    if ($IBLOCK_OFFERS_ID) {
        $ID_SKU = CCatalog::LinkSKUIBlock($IBLOCK_CATALOG_ID, $IBLOCK_OFFERS_ID);
        $rsCatalogs = CCatalog::GetList(array(), array('IBLOCK_ID' => $IBLOCK_OFFERS_ID), false, false, array('IBLOCK_ID'));
        if ($arCatalog = $rsCatalogs->Fetch()) {
            CCatalog::Update($IBLOCK_OFFERS_ID, array('PRODUCT_IBLOCK_ID' => $IBLOCK_CATALOG_ID, 'SKU_PROPERTY_ID' => $ID_SKU));
        } else {
            CCatalog::Add(array('IBLOCK_ID' => $IBLOCK_OFFERS_ID, 'PRODUCT_IBLOCK_ID' => $IBLOCK_CATALOG_ID, 'SKU_PROPERTY_ID' => $ID_SKU));
        }
        //create facet index
        $index = \Bitrix\Iblock\PropertyIndex\Manager::createIndexer($IBLOCK_CATALOG_ID);
        $index->startIndex();
        $index->continueIndex(0);
        $index->endIndex();
        $index = \Bitrix\Iblock\PropertyIndex\Manager::createIndexer($IBLOCK_OFFERS_ID);
        $index->startIndex();
        $index->continueIndex(0);
        $index->endIndex();
        \Bitrix\Iblock\PropertyIndex\Manager::checkAdminNotification();
    }
    //user fields for sections
示例#3
0
文件: cml2.php 项目: nycmic/bittest
 function ImportMetaData($xml_root_id, $IBLOCK_TYPE, $IBLOCK_LID, $bUpdateIBlock = true)
 {
     global $APPLICATION;
     $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("ID" => $xml_root_id), array("ID", "NAME", "ATTRIBUTES"));
     $ar = $rs->Fetch();
     if ($ar) {
         foreach (array(LANGUAGE_ID, "en", "ru") as $lang) {
             $mess = IncludeModuleLangFile(__FILE__, $lang, true);
             if ($ar["NAME"] === $mess["IBLOCK_XML2_COMMERCE_INFO"]) {
                 $this->mess = $mess;
                 $this->next_step["lang"] = $lang;
             }
         }
         $xml_root_id = $ar["ID"];
     }
     if ($ar && strlen($ar["ATTRIBUTES"]) > 0) {
         $info = unserialize($ar["ATTRIBUTES"]);
         if (is_array($info) && array_key_exists($this->mess["IBLOCK_XML2_SUM_FORMAT"], $info)) {
             if (preg_match("#" . $this->mess["IBLOCK_XML2_SUM_FORMAT_DELIM"] . "=(.);{0,1}#", $info[$this->mess["IBLOCK_XML2_SUM_FORMAT"]], $match)) {
                 $this->next_step["sdp"] = $match[1];
             }
         }
     }
     $meta_data_xml_id = false;
     $XML_ELEMENTS_PARENT = false;
     $XML_SECTIONS_PARENT = false;
     $XML_PROPERTIES_PARENT = false;
     $XML_SECTIONS_PROPERTIES_PARENT = false;
     $XML_PRICES_PARENT = false;
     $XML_STORES_PARENT = false;
     $XML_BASE_UNITS_PARENT = false;
     $XML_SECTION_PROPERTIES = false;
     $arIBlock = array();
     $this->next_step["bOffer"] = false;
     $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_CATALOG"]), array("ID", "ATTRIBUTES"));
     $ar = $rs->Fetch();
     if (!$ar) {
         $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_OFFER_LIST"]), array("ID", "ATTRIBUTES"));
         $ar = $rs->Fetch();
         $this->next_step["bOffer"] = true;
     }
     if (!$ar) {
         $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_OFFERS_CHANGE"]), array("ID", "ATTRIBUTES"));
         $ar = $rs->Fetch();
         $this->next_step["bOffer"] = true;
         $this->next_step["bUpdateOnly"] = true;
         $bUpdateIBlock = false;
     }
     if ($this->next_step["bOffer"] && !$this->bCatalog) {
         return GetMessage('IBLOCK_XML2_MODULE_CATALOG_IS_ABSENT');
     }
     if ($ar) {
         if (strlen($ar["ATTRIBUTES"]) > 0) {
             $attrs = unserialize($ar["ATTRIBUTES"]);
             if (is_array($attrs)) {
                 if (array_key_exists($this->mess["IBLOCK_XML2_UPDATE_ONLY"], $attrs)) {
                     $this->next_step["bUpdateOnly"] = $attrs[$this->mess["IBLOCK_XML2_UPDATE_ONLY"]] == "true" || intval($attrs[$this->mess["IBLOCK_XML2_UPDATE_ONLY"]]) ? true : false;
                 }
             }
         }
         $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $ar["ID"]));
         while ($ar = $rs->Fetch()) {
             if (isset($ar["VALUE_CLOB"])) {
                 $ar["VALUE"] = $ar["VALUE_CLOB"];
             }
             if ($ar["NAME"] == $this->mess["IBLOCK_XML2_ID"]) {
                 $arIBlock["XML_ID"] = ($this->use_iblock_type_id ? $IBLOCK_TYPE . "-" : "") . $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_CATALOG_ID"]) {
                 $arIBlock["CATALOG_XML_ID"] = ($this->use_iblock_type_id ? $IBLOCK_TYPE . "-" : "") . $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_NAME"]) {
                 $arIBlock["NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_DESCRIPTION"]) {
                 $arIBlock["DESCRIPTION"] = $ar["VALUE"];
                 $arIBlock["DESCRIPTION_TYPE"] = "html";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_POSITIONS"] || $ar["NAME"] == $this->mess["IBLOCK_XML2_OFFERS"]) {
                 $XML_ELEMENTS_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_PRICE_TYPES"]) {
                 $XML_PRICES_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_STORES"]) {
                 $XML_STORES_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BASE_UNITS"]) {
                 $XML_BASE_UNITS_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_METADATA_ID"]) {
                 $meta_data_xml_id = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_UPDATE_ONLY"]) {
                 $this->next_step["bUpdateOnly"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? true : false;
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_CODE"]) {
                 $arIBlock["CODE"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SORT"]) {
                 $arIBlock["SORT"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_LIST_URL"]) {
                 $arIBlock["LIST_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_DETAIL_URL"]) {
                 $arIBlock["DETAIL_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SECTION_URL"]) {
                 $arIBlock["SECTION_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_CANONICAL_URL"]) {
                 $arIBlock["CANONICAL_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_INDEX_ELEMENTS"]) {
                 $arIBlock["INDEX_ELEMENT"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? "Y" : "N";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_INDEX_SECTIONS"]) {
                 $arIBlock["INDEX_SECTION"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? "Y" : "N";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SECTIONS_NAME"]) {
                 $arIBlock["SECTIONS_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SECTION_NAME"]) {
                 $arIBlock["SECTION_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_ELEMENTS_NAME"]) {
                 $arIBlock["ELEMENTS_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_ELEMENT_NAME"]) {
                 $arIBlock["ELEMENT_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_PICTURE"]) {
                 if (strlen($ar["VALUE"]) > 0) {
                     $arIBlock["PICTURE"] = $this->MakeFileArray($ar["VALUE"]);
                 } else {
                     $arIBlock["PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($ar["ID"]));
                 }
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_WORKFLOW"]) {
                 $arIBlock["WORKFLOW"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? "Y" : "N";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_INHERITED_TEMPLATES"]) {
                 $arIBlock["IPROPERTY_TEMPLATES"] = array();
                 $arTemplates = $this->_xml_file->GetAllChildrenArray($ar["ID"]);
                 foreach ($arTemplates as $TEMPLATE) {
                     $id = $TEMPLATE[$this->mess["IBLOCK_XML2_ID"]];
                     $template = $TEMPLATE[$this->mess["IBLOCK_XML2_VALUE"]];
                     if (strlen($id) > 0 && strlen($template) > 0) {
                         $arIBlock["IPROPERTY_TEMPLATES"][$id] = $template;
                     }
                 }
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_LABELS"]) {
                 $arLabels = $this->_xml_file->GetAllChildrenArray($ar["ID"]);
                 foreach ($arLabels as $arLabel) {
                     $id = $arLabel[$this->mess["IBLOCK_XML2_ID"]];
                     $label = $arLabel[$this->mess["IBLOCK_XML2_VALUE"]];
                     if (strlen($id) > 0 && strlen($label) > 0) {
                         $arIBlock[$id] = $label;
                     }
                 }
             }
         }
         if ($this->next_step["bOffer"] && !$this->use_offers) {
             if (strlen($arIBlock["CATALOG_XML_ID"]) > 0) {
                 $arIBlock["XML_ID"] = $arIBlock["CATALOG_XML_ID"];
                 $this->next_step["bUpdateOnly"] = true;
             }
         }
         $obIBlock = new CIBlock();
         $rsIBlocks = $obIBlock->GetList(array(), array("XML_ID" => $arIBlock["XML_ID"]));
         $ar = $rsIBlocks->Fetch();
         //Also check for non bitrix xml file
         if (!$ar && !array_key_exists("CODE", $arIBlock)) {
             if ($this->next_step["bOffer"] && $this->use_offers) {
                 $rsIBlocks = $obIBlock->GetList(array(), array("XML_ID" => "FUTURE-1C-OFFERS"));
             } else {
                 $rsIBlocks = $obIBlock->GetList(array(), array("XML_ID" => "FUTURE-1C-CATALOG"));
             }
             $ar = $rsIBlocks->Fetch();
         }
         if ($ar) {
             if ($bUpdateIBlock && (!$this->next_step["bOffer"] || $this->use_offers)) {
                 if ($obIBlock->Update($ar["ID"], $arIBlock)) {
                     $arIBlock["ID"] = $ar["ID"];
                 } else {
                     return $obIBlock->LAST_ERROR;
                 }
             } else {
                 $arIBlock["ID"] = $ar["ID"];
             }
         } else {
             $arIBlock["IBLOCK_TYPE_ID"] = $this->CheckIBlockType($IBLOCK_TYPE);
             if (!$arIBlock["IBLOCK_TYPE_ID"]) {
                 return GetMessage("IBLOCK_XML2_TYPE_ADD_ERROR");
             }
             $arIBlock["GROUP_ID"] = array(2 => "R");
             $arIBlock["LID"] = $this->CheckSites($IBLOCK_LID);
             $arIBlock["ACTIVE"] = "Y";
             $arIBlock["WORKFLOW"] = "N";
             if ($this->translit_on_add && !array_key_exists("CODE", $arIBlock)) {
                 $arIBlock["FIELDS"] = array("CODE" => array("DEFAULT_VALUE" => array("TRANSLITERATION" => "Y", "TRANS_LEN" => $this->translit_on_add["max_len"], "TRANS_CASE" => $this->translit_on_add["change_case"], "TRANS_SPACE" => $this->translit_on_add["replace_space"], "TRANS_OTHER" => $this->translit_on_add["replace_other"], "TRANS_EAT" => $this->translit_on_add["delete_repeat_replace"] ? "Y" : "N")), "SECTION_CODE" => array("DEFAULT_VALUE" => array("TRANSLITERATION" => "Y", "TRANS_LEN" => $this->translit_on_add["max_len"], "TRANS_CASE" => $this->translit_on_add["change_case"], "TRANS_SPACE" => $this->translit_on_add["replace_space"], "TRANS_OTHER" => $this->translit_on_add["replace_other"], "TRANS_EAT" => $this->translit_on_add["delete_repeat_replace"] ? "Y" : "N")));
             }
             $arIBlock["ID"] = $obIBlock->Add($arIBlock);
             if (!$arIBlock["ID"]) {
                 return $obIBlock->LAST_ERROR;
             }
         }
         //Make this catalog
         if ($this->bCatalog && $this->next_step["bOffer"]) {
             $obCatalog = new CCatalog();
             $intParentID = $this->GetIBlockByXML_ID($arIBlock["CATALOG_XML_ID"]);
             if (0 < intval($intParentID) && $this->use_offers) {
                 $mxSKUProp = $obCatalog->LinkSKUIBlock($intParentID, $arIBlock["ID"]);
                 if (!$mxSKUProp) {
                     if ($ex = $APPLICATION->GetException()) {
                         $result = $ex->GetString();
                         return $result;
                     }
                 } else {
                     $rs = CCatalog::GetList(array(), array("IBLOCK_ID" => $arIBlock["ID"]));
                     if ($arOffer = $rs->Fetch()) {
                         $boolFlag = $obCatalog->Update($arIBlock["ID"], array('PRODUCT_IBLOCK_ID' => $intParentID, 'SKU_PROPERTY_ID' => $mxSKUProp));
                     } else {
                         $boolFlag = $obCatalog->Add(array("IBLOCK_ID" => $arIBlock["ID"], "YANDEX_EXPORT" => "N", "SUBSCRIPTION" => "N", 'PRODUCT_IBLOCK_ID' => $intParentID, 'SKU_PROPERTY_ID' => $mxSKUProp));
                     }
                     if (!$boolFlag) {
                         if ($ex = $APPLICATION->GetException()) {
                             $result = $ex->GetString();
                             return $result;
                         }
                     }
                 }
             } else {
                 $rs = CCatalog::GetList(array(), array("IBLOCK_ID" => $arIBlock["ID"]));
                 if (!$rs->Fetch()) {
                     $boolFlag = $obCatalog->Add(array("IBLOCK_ID" => $arIBlock["ID"], "YANDEX_EXPORT" => "N", "SUBSCRIPTION" => "N"));
                     if (!$boolFlag) {
                         if ($ex = $APPLICATION->GetException()) {
                             $result = $ex->GetString();
                             return $result;
                         }
                     }
                 }
             }
         }
         //For non bitrix xml file
         //Check for mandatory properties and add them as necessary
         if (!array_key_exists("CODE", $arIBlock)) {
             $arProperties = array("CML2_BAR_CODE" => GetMessage("IBLOCK_XML2_BAR_CODE"), "CML2_ARTICLE" => GetMessage("IBLOCK_XML2_ARTICLE"), "CML2_ATTRIBUTES" => array("NAME" => GetMessage("IBLOCK_XML2_ATTRIBUTES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1), "CML2_TRAITS" => array("NAME" => GetMessage("IBLOCK_XML2_TRAITS"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1), "CML2_BASE_UNIT" => GetMessage("IBLOCK_XML2_BASE_UNIT_NAME"), "CML2_TAXES" => array("NAME" => GetMessage("IBLOCK_XML2_TAXES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1), "CML2_PICTURES" => array("NAME" => GetMessage("IBLOCK_XML2_PICTURES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1, "PROPERTY_TYPE" => "F", "CODE" => "MORE_PHOTO"), "CML2_FILES" => array("NAME" => GetMessage("IBLOCK_XML2_FILES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1, "PROPERTY_TYPE" => "F", "CODE" => "FILES"), "CML2_MANUFACTURER" => array("NAME" => GetMessage("IBLOCK_XML2_PROP_MANUFACTURER"), "MULTIPLE" => "N", "WITH_DESCRIPTION" => "N", "MULTIPLE_CNT" => 1, "PROPERTY_TYPE" => "L"));
             foreach ($arProperties as $k => $v) {
                 $result = $this->CheckProperty($arIBlock["ID"], $k, $v);
                 if ($result !== true) {
                     return $result;
                 }
             }
             //For offers make special property: link to catalog
             if (isset($arIBlock["CATALOG_XML_ID"]) && $this->use_offers) {
                 $this->CheckProperty($arIBlock["ID"], "CML2_LINK", array("NAME" => GetMessage("IBLOCK_XML2_CATALOG_ELEMENT"), "PROPERTY_TYPE" => "E", "USER_TYPE" => "SKU", "LINK_IBLOCK_ID" => $this->GetIBlockByXML_ID($arIBlock["CATALOG_XML_ID"]), "FILTRABLE" => "Y"));
             }
         }
         $this->next_step["IBLOCK_ID"] = $arIBlock["ID"];
         $this->next_step["XML_ELEMENTS_PARENT"] = $XML_ELEMENTS_PARENT;
     }
     if ($meta_data_xml_id) {
         $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_METADATA"]), array("ID"));
         while ($arMetadata = $rs->Fetch()) {
             //Find referenced metadata
             $bMetaFound = false;
             $meta_roots = array();
             $rsMetaRoots = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $arMetadata["ID"]));
             while ($arMeta = $rsMetaRoots->Fetch()) {
                 if (isset($arMeta["VALUE_CLOB"])) {
                     $arMeta["VALUE"] = $arMeta["VALUE_CLOB"];
                 }
                 if ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_ID"] && $arMeta["VALUE"] == $meta_data_xml_id) {
                     $bMetaFound = true;
                 }
                 $meta_roots[] = $arMeta;
             }
             //Get xml parents of the properties and sections
             if ($bMetaFound) {
                 foreach ($meta_roots as $arMeta) {
                     if ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_GROUPS"]) {
                         $XML_SECTIONS_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_PROPERTIES"]) {
                         $XML_PROPERTIES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_GROUPS_PROPERTIES"]) {
                         $XML_SECTIONS_PROPERTIES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_SECTION_PROPERTIES"]) {
                         $XML_SECTION_PROPERTIES = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_PRICE_TYPES"]) {
                         $XML_PRICES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_STORES"]) {
                         $XML_STORES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_BASE_UNITS"]) {
                         $XML_BASE_UNITS_PARENT = $arMeta["ID"];
                     }
                 }
                 break;
             }
         }
     }
     $iblockFields = CIBlock::GetFields($arIBlock["ID"]);
     $iblockFields["XML_IMPORT_START_TIME"] = array("NAME" => "XML_IMPORT_START_TIME", "IS_REQUIRED" => "N", "DEFAULT_VALUE" => date("Y-m-d H:i:s"));
     CIBlock::SetFields($arIBlock["ID"], $iblockFields);
     if ($XML_PROPERTIES_PARENT) {
         $result = $this->ImportProperties($XML_PROPERTIES_PARENT, $arIBlock["ID"]);
         if ($result !== true) {
             return $result;
         }
     }
     if ($XML_SECTION_PROPERTIES) {
         $result = $this->ImportSectionProperties($XML_SECTION_PROPERTIES, $arIBlock["ID"]);
         if ($result !== true) {
             return $result;
         }
     }
     if ($XML_SECTIONS_PROPERTIES_PARENT) {
         $result = $this->ImportSectionsProperties($XML_SECTIONS_PROPERTIES_PARENT, $arIBlock["ID"]);
         if ($result !== true) {
             return $result;
         }
     }
     if ($XML_PRICES_PARENT) {
         if ($this->bCatalog) {
             $result = $this->ImportPrices($XML_PRICES_PARENT, $arIBlock["ID"], $IBLOCK_LID);
             if ($result !== true) {
                 return $result;
             }
         }
     }
     if ($XML_STORES_PARENT) {
         if ($this->bCatalog && CBXFeatures::IsFeatureEnabled('CatMultiStore')) {
             $result = $this->ImportStores($XML_STORES_PARENT);
             if ($result !== true) {
                 return $result;
             }
         }
     }
     if ($XML_BASE_UNITS_PARENT) {
         if ($this->bCatalog) {
             $result = $this->ImportBaseUnits($XML_BASE_UNITS_PARENT);
             if ($result !== true) {
                 return $result;
             }
         }
     }
     $this->next_step["section_sort"] = 100;
     $this->next_step["XML_SECTIONS_PARENT"] = $XML_SECTIONS_PARENT;
     $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_PRODUCTS_SETS"]), array("ID", "ATTRIBUTES"));
     $ar = $rs->Fetch();
     if ($ar) {
         $this->next_step["SETS"] = $ar["ID"];
     }
     return true;
 }
示例#4
0
     $strWarning .= GetMessage('IB_E_OF_ERR_USED_SKU') . '<br>';
 }
 if (!$bVarsFromForm) {
     $IS_CATALOG = 'Y' == $IS_CATALOG ? 'Y' : 'N';
     $SUBSCRIPTION = 'Y' == $SUBSCRIPTION ? 'Y' : 'N';
     if (!CBXFeatures::IsFeatureEnabled('SaleRecurring')) {
         $SUBSCRIPTION = 'N';
     }
     $YANDEX_EXPORT = 'Y' == $YANDEX_EXPORT ? 'Y' : 'N';
     $VAT_ID = 0 < intval($VAT_ID) ? intval($VAT_ID) : 0;
     //$SKU_RIGHTS = ('Y' == $SKU_RIGHTS ? 'Y' : 'N');
     $SKU_RIGHTS = 'N';
     if (is_array($arCatalog) && $arCatalog['CATALOG_TYPE'] == 'O') {
         $IS_CATALOG = 'Y';
         $arOffersFields = array('IBLOCK_ID' => $ID, 'SUBSCRIPTION' => $SUBSCRIPTION, 'YANDEX_EXPORT' => $YANDEX_EXPORT, 'VAT_ID' => $VAT_ID);
         $boolFlag = $obCatalog->Update($ID, $arOffersFields);
         if (false == $boolFlag) {
             $bVarsFromForm = true;
             if ($ex = $APPLICATION->GetException()) {
                 $strWarning .= $ex->GetString() . "<br>";
             }
         } else {
             $boolNeedAgent = $YANDEX_EXPORT != $arCatalog['YANDEX_EXPORT'];
         }
     } else {
         $arOffersFields = array('IBLOCK_ID' => $ID, 'SUBSCRIPTION' => $SUBSCRIPTION, 'YANDEX_EXPORT' => $YANDEX_EXPORT, 'VAT_ID' => $VAT_ID);
         if (false == $arCatalog || 'P' == $arCatalog['CATALOG_TYPE']) {
             if ($IS_CATALOG == 'Y') {
                 $boolFlag = $obCatalog->Add($arOffersFields);
             }
             if ($boolFlag && $arOffersFields['YANDEX_EXPORT'] == 'Y') {
示例#5
0
文件: cml2.php 项目: nProfessor/Mytb
	function ImportMetaData($xml_root_id, $IBLOCK_TYPE, $IBLOCK_LID, $bUpdateIBlock = true)
	{
		global $APPLICATION;

		$rs = $this->_xml_file->GetList(
			array(),
			array("ID" => $xml_root_id, "NAME" => GetMessage("IBLOCK_XML2_COMMERCE_INFO")),
			array("ID", "ATTRIBUTES")
		);
		$ar = $rs->Fetch();
		if($ar && (strlen($ar["ATTRIBUTES"]) > 0))
		{
			$info = unserialize($ar["ATTRIBUTES"]);
			if(is_array($info) && array_key_exists(GetMessage("IBLOCK_XML2_SUM_FORMAT"), $info))
			{
				if(preg_match("#".GetMessage("IBLOCK_XML2_SUM_FORMAT_DELIM")."=(.);{0,1}#", $info[GetMessage("IBLOCK_XML2_SUM_FORMAT")], $match))
				{
					$this->next_step["sdp"] = $match[1];
				}
			}
		}

		$meta_data_xml_id = false;
		$XML_ELEMENTS_PARENT = false;
		$XML_SECTIONS_PARENT = false;
		$XML_PROPERTIES_PARENT = false;
		$XML_SECTIONS_PROPERTIES_PARENT = false;
		$XML_PRICES_PARENT = false;
		$XML_STORES_PARENT = false;
		$XML_SECTION_PROPERTIES = false;
		$arIBlock = array();

		$this->next_step["bOffer"] = false;
		$rs = $this->_xml_file->GetList(
			array(),
			array("PARENT_ID" => $xml_root_id, "NAME" => GetMessage("IBLOCK_XML2_CATALOG")),
			array("ID", "ATTRIBUTES")
		);
		$ar = $rs->Fetch();
		if(!$ar)
		{
			$rs = $this->_xml_file->GetList(
				array(),
				array("PARENT_ID" => $xml_root_id, "NAME" => GetMessage("IBLOCK_XML2_OFFER_LIST")),
				array("ID", "ATTRIBUTES")
			);
			$ar = $rs->Fetch();
			$this->next_step["bOffer"] = true;
		}

		if($ar)
		{
			if(strlen($ar["ATTRIBUTES"]) > 0)
			{
				$attrs = unserialize($ar["ATTRIBUTES"]);
				if(is_array($attrs))
				{
					if(array_key_exists(GetMessage("IBLOCK_XML2_UPDATE_ONLY"), $attrs))
						$this->next_step["bUpdateOnly"] = ($attrs[GetMessage("IBLOCK_XML2_UPDATE_ONLY")]=="true") || intval($attrs["IBLOCK_XML2_UPDATE_ONLY"])? true: false;
				}
			}

			$rs = $this->_xml_file->GetList(
				array("ID" => "asc"),
				array("PARENT_ID" => $ar["ID"])
			);
			while($ar = $rs->Fetch())
			{

				if(isset($ar["VALUE_CLOB"]))
					$ar["VALUE"] = $ar["VALUE_CLOB"];
				if($ar["NAME"] == GetMessage("IBLOCK_XML2_ID"))
					$arIBlock["XML_ID"] = ($this->use_iblock_type_id? $IBLOCK_TYPE."-": "").$ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_CATALOG_ID"))
					$arIBlock["CATALOG_XML_ID"] = ($this->use_iblock_type_id? $IBLOCK_TYPE."-": "").$ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_NAME"))
					$arIBlock["NAME"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_DESCRIPTION"))
				{
					$arIBlock["DESCRIPTION"] = $ar["VALUE"];
					$arIBlock["DESCRIPTION_TYPE"] = "html";
				}
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_POSITIONS") || $ar["NAME"] == GetMessage("IBLOCK_XML2_OFFERS"))
					$XML_ELEMENTS_PARENT = $ar["ID"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_PRICE_TYPES"))
					$XML_PRICES_PARENT = $ar["ID"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_STORES"))
					$XML_STORES_PARENT = $ar["ID"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_METADATA_ID"))
					$meta_data_xml_id = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_UPDATE_ONLY"))
					$this->next_step["bUpdateOnly"] = ($ar["VALUE"]=="true") || intval($ar["VALUE"])? true: false;
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_CODE"))
					$arIBlock["CODE"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_SORT"))
					$arIBlock["SORT"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_LIST_URL"))
					$arIBlock["LIST_PAGE_URL"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_DETAIL_URL"))
					$arIBlock["DETAIL_PAGE_URL"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_SECTION_URL"))
					$arIBlock["SECTION_PAGE_URL"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_INDEX_ELEMENTS"))
					$arIBlock["INDEX_ELEMENT"] = ($ar["VALUE"]=="true") || intval($ar["VALUE"])? "Y": "N";
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_INDEX_SECTIONS"))
					$arIBlock["INDEX_SECTION"] = ($ar["VALUE"]=="true") || intval($ar["VALUE"])? "Y": "N";
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_SECTIONS_NAME"))
					$arIBlock["SECTIONS_NAME"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_SECTION_NAME"))
					$arIBlock["SECTION_NAME"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_ELEMENTS_NAME"))
					$arIBlock["ELEMENTS_NAME"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_ELEMENT_NAME"))
					$arIBlock["ELEMENT_NAME"] = $ar["VALUE"];
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_PICTURE"))
				{
					if(strlen($ar["VALUE"]) > 0)
						$arIBlock["PICTURE"] = $this->MakeFileArray($ar["VALUE"]);
					else
						$arIBlock["PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($ar["ID"]));
				}
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_BX_WORKFLOW"))
					$arIBlock["WORKFLOW"] = ($ar["VALUE"]=="true") || intval($ar["VALUE"])? "Y": "N";
				elseif($ar["NAME"] == GetMessage("IBLOCK_XML2_LABELS"))
				{
					$arLabels = $this->_xml_file->GetAllChildrenArray($ar["ID"]);
					foreach($arLabels as $arLabel)
					{
						$id = $arLabel[GetMessage("IBLOCK_XML2_ID")];
						$label = $arLabel[GetMessage("IBLOCK_XML2_VALUE")];
						if(strlen($id) > 0 && strlen($label) > 0)
							$arIBlock[$id] = $label;
					}
				}
			}
			if($this->next_step["bOffer"] && !$this->use_offers)
			{
				if(strlen($arIBlock["CATALOG_XML_ID"]) > 0)
				{
					$arIBlock["XML_ID"] = $arIBlock["CATALOG_XML_ID"];
					$this->next_step["bUpdateOnly"] = true;
				}
			}

			$obIBlock = new CIBlock;
			$rsIBlocks = $obIBlock->GetList(array(), array("XML_ID"=>$arIBlock["XML_ID"]));
			$ar = $rsIBlocks->Fetch();

			//Also check for non bitrix xml file
			if(!$ar && !array_key_exists("CODE", $arIBlock))
			{
				if($this->next_step["bOffer"] && $this->use_offers)
					$rsIBlocks = $obIBlock->GetList(array(), array("XML_ID"=>"FUTURE-1C-OFFERS"));
				else
					$rsIBlocks = $obIBlock->GetList(array(), array("XML_ID"=>"FUTURE-1C-CATALOG"));
				$ar = $rsIBlocks->Fetch();
			}
			if($ar)
			{
				if($bUpdateIBlock && (!$this->next_step["bOffer"] || $this->use_offers))
				{
					if($obIBlock->Update($ar["ID"], $arIBlock))
						$arIBlock["ID"] = $ar["ID"];
					else
						return $obIBlock->LAST_ERROR;
				}
				else
				{
					$arIBlock["ID"] = $ar["ID"];
				}
			}
			else
			{
				$arIBlock["IBLOCK_TYPE_ID"] = $this->CheckIBlockType($IBLOCK_TYPE);
				if(!$arIBlock["IBLOCK_TYPE_ID"])
					return GetMessage("IBLOCK_XML2_TYPE_ADD_ERROR");
				$arIBlock["GROUP_ID"] = array(2=>"R");
				$arIBlock["LID"] = $this->CheckSites($IBLOCK_LID);
				$arIBlock["ACTIVE"] = "Y";
				$arIBlock["WORKFLOW"] = "N";
				$arIBlock["ID"] = $obIBlock->Add($arIBlock);
				if(!$arIBlock["ID"])
					return $obIBlock->LAST_ERROR;
			}

			//Make this catalog
			if($this->bCatalog && $this->next_step["bOffer"])
			{
				$obCatalog = new CCatalog();
				$intParentID = $this->GetIBlockByXML_ID($arIBlock["CATALOG_XML_ID"]);
				if (0 < intval($intParentID) && $this->use_offers)
				{
					$mxSKUProp = $obCatalog->LinkSKUIBlock($intParentID,$arIBlock["ID"]);
					if (!$mxSKUProp)
					{
						if ($ex = $APPLICATION->GetException())
						{
							$result = $ex->GetString();
							return $result;
						}
					}
					else
					{
						$rs = CCatalog::GetList(array(),array("IBLOCK_ID"=>$arIBlock["ID"]));
						if($arOffer = $rs->Fetch())
						{
							$boolFlag = $obCatalog->Update($arIBlock["ID"],array('PRODUCT_IBLOCK_ID' => $intParentID,'SKU_PROPERTY_ID' => $mxSKUProp));
						}
						else
						{
							$boolFlag = $obCatalog->Add(array("IBLOCK_ID"=>$arIBlock["ID"], "YANDEX_EXPORT"=>"N", "SUBSCRIPTION"=>"N",'PRODUCT_IBLOCK_ID' => $intParentID,'SKU_PROPERTY_ID' => $mxSKUProp));
						}
						if (!$boolFlag)
						{
							if ($ex = $APPLICATION->GetException())
							{
								$result = $ex->GetString();
								return $result;
							}
						}
					}
				}
				else
				{
					$rs = CCatalog::GetList(array(),array("IBLOCK_ID"=>$arIBlock["ID"]));
					if(!($rs->Fetch()))
					{
						$boolFlag = $obCatalog->Add(array("IBLOCK_ID"=>$arIBlock["ID"], "YANDEX_EXPORT"=>"N", "SUBSCRIPTION"=>"N"));
						if (!$boolFlag)
						{
							if ($ex = $APPLICATION->GetException())
							{
								$result = $ex->GetString();
								return $result;
							}
						}
					}
				}
			}

			//For non bitrix xml file
			//Check for mandatory properties and add them as necessary
			if(!array_key_exists("CODE", $arIBlock))
			{
				$arProperties = array(
					"CML2_BAR_CODE" => GetMessage("IBLOCK_XML2_BAR_CODE"),
					"CML2_ARTICLE" => GetMessage("IBLOCK_XML2_ARTICLE"),
					"CML2_ATTRIBUTES" => array(
						"NAME" => GetMessage("IBLOCK_XML2_ATTRIBUTES"),
						"MULTIPLE" => "Y",
						"WITH_DESCRIPTION" => "Y",
						"MULTIPLE_CNT" => 1,
					),
					"CML2_TRAITS" => array(
						"NAME" => GetMessage("IBLOCK_XML2_TRAITS"),
						"MULTIPLE" => "Y",
						"WITH_DESCRIPTION" => "Y",
						"MULTIPLE_CNT" => 1,
					),
					"CML2_BASE_UNIT" => GetMessage("IBLOCK_XML2_BASE_UNIT_NAME"),
					"CML2_TAXES" => array(
						"NAME" => GetMessage("IBLOCK_XML2_TAXES"),
						"MULTIPLE" => "Y",
						"WITH_DESCRIPTION" => "Y",
						"MULTIPLE_CNT" => 1,
					),
					"CML2_PICTURES" => array(
						"NAME" => GetMessage("IBLOCK_XML2_PICTURES"),
						"MULTIPLE" => "Y",
						"WITH_DESCRIPTION" => "Y",
						"MULTIPLE_CNT" => 1,
						"PROPERTY_TYPE" => "F",
						"CODE" => "MORE_PHOTO",
					),
					"CML2_FILES" => array(
						"NAME" => GetMessage("IBLOCK_XML2_FILES"),
						"MULTIPLE" => "Y",
						"WITH_DESCRIPTION" => "Y",
						"MULTIPLE_CNT" => 1,
						"PROPERTY_TYPE" => "F",
						"CODE" => "FILES",
					),
					"CML2_MANUFACTURER" => array(
						"NAME" => GetMessage("IBLOCK_XML2_PROP_MANUFACTURER"),
						"MULTIPLE" => "N",
						"WITH_DESCRIPTION" => "N",
						"MULTIPLE_CNT" => 1,
						"PROPERTY_TYPE" => "L",
					),
				);
				foreach($arProperties as $k=>$v)
				{
					$result = $this->CheckProperty($arIBlock["ID"], $k, $v);
					if($result!==true)
						return $result;
				}
				//For offers make special property: link to catalog
				if(isset($arIBlock["CATALOG_XML_ID"]) && $this->use_offers)
					$this->CheckProperty($arIBlock["ID"], "CML2_LINK", array(
						"NAME" => GetMessage("IBLOCK_XML2_CATALOG_ELEMENT"),
						"PROPERTY_TYPE" => "E",
						"USER_TYPE" => "SKU",
						"LINK_IBLOCK_ID" => $this->GetIBlockByXML_ID($arIBlock["CATALOG_XML_ID"]),
						"FILTRABLE" => "Y",
					));
			}

			$this->next_step["IBLOCK_ID"] = $arIBlock["ID"];
			$this->next_step["XML_ELEMENTS_PARENT"] = $XML_ELEMENTS_PARENT;

		}

		if($meta_data_xml_id)
		{
			$rs = $this->_xml_file->GetList(
				array(),
				array("PARENT_ID" => $xml_root_id, "NAME" => GetMessage("IBLOCK_XML2_METADATA")),
				array("ID")
			);
			while($arMetadata = $rs->Fetch())
			{
				//Find referenced metadata
				$bMetaFound = false;
				$meta_roots = array();
				$rsMetaRoots = $this->_xml_file->GetList(
					array("ID" => "asc"),
					array("PARENT_ID" => $arMetadata["ID"])
				);
				while($arMeta = $rsMetaRoots->Fetch())
				{
					if(isset($arMeta["VALUE_CLOB"]))
						$arMeta["VALUE"] = $arMeta["VALUE_CLOB"];
					if($arMeta["NAME"] == GetMessage("IBLOCK_XML2_ID") && $arMeta["VALUE"] == $meta_data_xml_id)
						$bMetaFound = true;
					$meta_roots[] = $arMeta;
				}
				//Get xml parents of the properties and sections
				if($bMetaFound)
				{
					foreach($meta_roots as $arMeta)
					{
						if($arMeta["NAME"] == GetMessage("IBLOCK_XML2_GROUPS"))
							$XML_SECTIONS_PARENT = $arMeta["ID"];
						elseif($arMeta["NAME"] == GetMessage("IBLOCK_XML2_PROPERTIES"))
							$XML_PROPERTIES_PARENT = $arMeta["ID"];
						elseif($arMeta["NAME"] == GetMessage("IBLOCK_XML2_GROUPS_PROPERTIES"))
							$XML_SECTIONS_PROPERTIES_PARENT = $arMeta["ID"];
						elseif($arMeta["NAME"] == GetMessage("IBLOCK_XML2_SECTION_PROPERTIES"))
							$XML_SECTION_PROPERTIES = $arMeta["ID"];
					}
					break;
				}
			}
		}

		if($XML_PROPERTIES_PARENT)
		{
			$result = $this->ImportProperties($XML_PROPERTIES_PARENT, $arIBlock["ID"]);
			if($result!==true)
				return $result;
		}

		if($XML_SECTION_PROPERTIES)
		{
			$result = $this->ImportSectionProperties($XML_SECTION_PROPERTIES, $arIBlock["ID"]);
			if($result!==true)
				return $result;
		}

		if($XML_SECTIONS_PROPERTIES_PARENT)
		{
			$result = $this->ImportSectionsProperties($XML_SECTIONS_PROPERTIES_PARENT, $arIBlock["ID"]);
			if($result!==true)
				return $result;
		}

		if($XML_PRICES_PARENT)
		{
			if($this->bCatalog)
			{
				$result = $this->ImportPrices($XML_PRICES_PARENT, $arIBlock["ID"], $IBLOCK_LID);
				if($result!==true)
					return $result;
			}
		}

		if($XML_STORES_PARENT)
		{
			if($this->bCatalog)
			{
				$result = $this->ImportStores($XML_STORES_PARENT);
				if($result!==true)
					return $result;
			}
		}

		$this->next_step["section_sort"] = 100;
		$this->next_step["XML_SECTIONS_PARENT"] = $XML_SECTIONS_PARENT;

		return true;
	}
示例#6
0
 public static function UnLinkSKUIBlock($ID)
 {
     global $APPLICATION;
     $arMsg = array();
     $boolResult = true;
     $ID = (int) $ID;
     if (0 >= $ID) {
         $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => Loc::getMessage('BT_MOD_CATALOG_ERR_PRODUCT_ID_INVALID'));
         $boolResult = false;
     }
     if ($boolResult) {
         $rsCatalog = CCatalog::GetList(array(), array('PRODUCT_IBLOCK_ID' => $ID), false, false, array('IBLOCK_ID'));
         if ($arCatalog = $rsCatalog->Fetch()) {
             $arCatalog['IBLOCK_ID'] = (int) $arCatalog['IBLOCK_ID'];
             $arFields = array('PRODUCT_IBLOCK_ID' => 0, 'SKU_PROPERTY_ID' => 0);
             if (!CCatalog::Update($arCatalog['IBLOCK_ID'], $arFields)) {
                 return false;
             }
         }
     }
     if (!$boolResult) {
         $obError = new CAdminException($arMsg);
         $APPLICATION->ResetException();
         $APPLICATION->ThrowException($obError);
     } else {
         CCatalogSKU::ClearCache();
     }
     return $boolResult;
 }
 if ($IBLOCK_OFFERS_ID < 1) {
     return;
 }
 //IBlock fields
 $iblock = new CIBlock();
 $arFields = array("ACTIVE" => "Y", "FIELDS" => array('IBLOCK_SECTION' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'ACTIVE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'Y'), 'ACTIVE_FROM' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'ACTIVE_TO' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SORT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'NAME' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => ''), 'PREVIEW_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('FROM_DETAIL' => 'N', 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95, 'DELETE_WITH_DETAIL' => 'N', 'UPDATE_WITH_DETAIL' => 'N')), 'PREVIEW_TEXT_TYPE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text'), 'PREVIEW_TEXT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'DETAIL_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95)), 'DETAIL_TEXT_TYPE' => array('IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text'), 'DETAIL_TEXT' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'XML_ID' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'CODE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y')), 'TAGS' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_NAME' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('FROM_DETAIL' => 'N', 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95, 'DELETE_WITH_DETAIL' => 'N', 'UPDATE_WITH_DETAIL' => 'N')), 'SECTION_DESCRIPTION_TYPE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => 'text'), 'SECTION_DESCRIPTION' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_DETAIL_PICTURE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', 'METHOD' => 'resample', 'COMPRESSION' => 95)), 'SECTION_XML_ID' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => ''), 'SECTION_CODE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y'))), "CODE" => "furniture_offers", "XML_ID" => $iblockCode);
 $iblock->Update($IBLOCK_OFFERS_ID, $arFields);
 $iblockCodeFur = "furniture_" . WIZARD_SITE_ID;
 $iblockTypeFur = "catalog";
 $rsIBlockFur = CIBlock::GetList(array(), array("XML_ID" => $iblockCodeFur, "TYPE" => $iblockTypeFur));
 if ($arIBlockFur = $rsIBlockFur->Fetch()) {
     $ID_SKU = CCatalog::LinkSKUIBlock($arIBlockFur["ID"], $IBLOCK_OFFERS_ID);
 }
 $arCatalog = CCatalog::GetByID($IBLOCK_OFFERS_ID);
 if ($arCatalog) {
     CCatalog::Update($IBLOCK_OFFERS_ID, array('PRODUCT_IBLOCK_ID' => $arIBlockFur["ID"], 'SKU_PROPERTY_ID' => $ID_SKU));
 } else {
     CCatalog::Add(array('IBLOCK_ID' => $IBLOCK_OFFERS_ID, 'PRODUCT_IBLOCK_ID' => $arIBlockFur["ID"], 'SKU_PROPERTY_ID' => $ID_SKU));
 }
 $dbOfferProps = CIblock::GetProperties($IBLOCK_OFFERS_ID, array(), array());
 while ($arOfferProps = $dbOfferProps->Fetch()) {
     $arProps[$arOfferProps["XML_ID"]] = $arOfferProps["ID"];
 }
 $property_enums = CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $IBLOCK_OFFERS_ID, "CODE" => "WIDTH"));
 $arEnumIds = array();
 while ($enum_fields = $property_enums->GetNext()) {
     $arEnumIds[] = $enum_fields["ID"];
 }
 $dbElement = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $arIBlockFur["ID"], "XML_ID" => 56), false);
 $arElement = $dbElement->Fetch();
 $arOfferElements[] = array("PRODUCT" => array("IBLOCK_ID" => $IBLOCK_OFFERS_ID, "NAME" => GetMessage("CAT_OFFER_NAME_1"), "ACTIVE" => "Y", "PROPERTY_VALUES" => array($arProps["CML2_LINK"] => $arElement["ID"], $arProps["327"] => $arEnumIds[0], $arProps["329"] => GetMessage("CAT_OFFER_COLOR_1"))), "PRICE" => GetMessage("CAT_OFFER_PRICE_11"));
示例#8
0
 function UnLinkSKUIBlock($ID)
 {
     global $APPLICATION;
     global $DB;
     $arMsg = array();
     $boolResult = true;
     $ID = intval($ID);
     if (0 >= $ID) {
         $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => GetMessage('BT_MOD_CATALOG_ERR_PRODUCT_ID_INVALID'));
         $boolResult = false;
     }
     if ($boolResult) {
         $rsCatalog = CCatalog::GetList(array(), array('PRODUCT_IBLOCK_ID' => $ID));
         if ($arCatalog = $rsCatalog->Fetch()) {
             $arFields = $arCatalog;
             $arFields['PRODUCT_IBLOCK_ID'] = 0;
             $arFields['SKU_PROPERTY_ID'] = 0;
             CCatalog::Update($arCatalog['IBLOCK_ID'], $arFields);
             if (is_set($GLOBALS["CATALOG_CATALOG_CACHE"], $arCatalog['IBLOCK_ID'])) {
                 unset($GLOBALS["CATALOG_CATALOG_CACHE"][$arCatalog['IBLOCK_ID']]);
             }
         }
     }
     if (!$boolResult) {
         $obError = new CAdminException($arMsg);
         $APPLICATION->ResetException();
         $APPLICATION->ThrowException($obError);
     }
     return $boolResult;
 }
示例#9
0
}
//Library
include_once dirname(__FILE__) . "/iblock_tools.php";
__IncludeLang(GetLangFileName(dirname(__FILE__) . "/lang/", "/" . basename(__FILE__)));
//Parameters
if (!is_array($arParams)) {
    $arParams = array();
}
if (strlen($arParams["site_id"]) <= 0) {
    $arParams["site_id"] = "s1";
}
//Import XML
if ($IBLOCK_ID = DEMO_IBlock_ImportXML("110_paid_paid-articles_" . LANGUAGE_ID . ".xml", $arParams["site_id"], false, true)) {
    $_SESSION["DEMO_IBLOCK_PAID"] = CIBlockCMLImport::GetIBlockByXML_ID("paid-subscribe");
    if ($SUBSCR_ID = DEMO_IBlock_ImportXML("120_paid_paid-subscribe_" . LANGUAGE_ID . ".xml", $arParams["site_id"], false, true)) {
        $SUBSCR_GROUP_ID = DEMO_IBlock_AddUserGroup("subscribers", GetMessage("DEMO_IBLOCK_ESTORE_PAID_GROUP_NAME"), GetMessage("DEMO_IBLOCK_ESTORE_PAID_GROUP_DESC"));
        //Create directory and copy files
        $search = array("#IBLOCK.ID(XML_ID=paid-articles)#", "#IBLOCK.ID(XML_ID=paid-subscribe)#", "#USER_GROUP.ID(STRING_ID=subscribers)#");
        $replace = array($IBLOCK_ID, $SUBSCR_ID, $SUBSCR_GROUP_ID);
        DEMO_IBlock_CopyFiles("/public/e-store/paid/", "/e-store/paid/", false, $search, $replace);
        CopyDirFiles(dirname(__FILE__) . "/public/language/" . LANGUAGE_ID . "/e-store/paid/", $_SERVER["DOCUMENT_ROOT"] . "/e-store/paid", false, true);
        //Add menu item
        DEMO_IBlock_AddMenuItem("/e-store/.left.menu.php", array(GetMessage("DEMO_IBLOCK_ESTORE_PAID_MENU"), "/e-store/paid/", array(), array(), ""));
        if ($_SESSION["DEMO_IBLOCK_PAID"] === false) {
            DEMO_IBlock_ImportXML("120_paid_paid-subscribe-offers_" . LANGUAGE_ID . ".xml", $arParams["site_id"], true, false);
            if (CModule::IncludeModule('catalog')) {
                CCatalog::Update($SUBSCR_ID, array("SUBSCRIPTION" => "Y"));
            }
        }
    }
}