/** * @param int $id * @param array $arFields * * @return bool * * @throws MigrationException */ protected function updateIBlock($id, array $arFields) { if ($this->iBlockGateway->Update($id, $arFields)) { $this->iblockId = $id; return true; } throw new MigrationException($this->iBlockGateway->LAST_ERROR); }
public function applySnapshot($data, $dbVersion = null) { $iblockData = $this->handleNullValues($data['iblock']); $typeData = $this->handleNullValues($data['type']); $res = new ApplyResult(); $type = new \CIBlockType(); if (!\CIBlockType::GetByID($typeData['ID'])->Fetch()) { $res->setSuccess($type->Add($typeData)); } else { $res->setSuccess($type->Update($typeData['ID'], $typeData)); } if (!$res->isSuccess()) { return $res->setMessage($type->LAST_ERROR); } $extId = $iblockData['ID']; if ($dbVersion) { $id = $this->getCurrentVersionId($extId, $dbVersion); } else { $id = $extId; } if (!$dbVersion && !IblockTable::getById($id)->fetch()) { $addRes = IblockTable::add(array('ID' => $id, 'IBLOCK_TYPE_ID' => $typeData['ID'], 'NAME' => 'add')); if (!$addRes->isSuccess()) { throw new \Exception('add iblock error ' . implode(', ', $addRes->getErrorMessages())); } } $iblock = new \CIBlock(); if ($id && ($currentData = IblockTable::getById($id)->fetch())) { $iblockData['PICTURE'] = $currentData['PICTURE']; $res->setSuccess((bool) $iblock->Update($id, $iblockData)); } else { unset($iblockData['PICTURE']); $res->setSuccess((bool) ($id = $iblock->Add($iblockData))); $this->registerCurrentVersionId($id, $this->getReferenceValue($extId, $dbVersion)); } $res->setId($id); return $res->setMessage($iblock->LAST_ERROR); }
$ib->Update($arIBlock["ID"], array("XML_ID" => "clothes_colors_".WIZARD_SITE_ID)); } }*/ if ($IBLOCK_OFFERS_ID) { $iblockCodeOffers = "clothes_offers_" . WIZARD_SITE_ID; //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();
list($arFields["PROPERTY_TYPE"], $arFields["USER_TYPE"]) = explode(':', $_POST["PROPERTY_PROPERTY_TYPE"], 2); } else { $arFields["PROPERTY_TYPE"] = $_POST["PROPERTY_PROPERTY_TYPE"]; $arFields["USER_TYPE"] = ""; } } if (!empty($arListValues)) { $arFields["VALUES"] = $arListValues; } if (COption::GetOptionString("iblock", "show_xml_id", "N") == "Y") { $arFields["XML_ID"] = $_POST["PROPERTY_XML_ID"]; } if (CIBlock::GetArrayByID($arFields["IBLOCK_ID"], "SECTION_PROPERTY") != "Y") { if ($arFields["SECTION_PROPERTY"] === "N" || $arFields["SMART_FILTER"] === "Y") { $ib = new CIBlock(); $ib->Update($arFields["IBLOCK_ID"], array("SECTION_PROPERTY" => "Y")); } } $ibp = new CIBlockProperty(); if ($str_PROPERTY_ID > 0) { $res = $ibp->Update($str_PROPERTY_ID, $arFields, true); } else { $str_PROPERTY_ID = $ibp->Add($arFields); $res = $str_PROPERTY_ID > 0; if (!$res) { $str_PROPERTY_ID = 'n0'; } } if (!$res) { $strWarning .= $ibp->LAST_ERROR; $bVarsFromForm = true;
foreach ($_REQUEST["FIELDS"] as $strLogField => $arOneLogField) { if (!preg_match("/^LOG_/", $strLogField)) { continue; } $arLogFields[$strLogField] = $arOneLogField; } } if (!empty($arLogFields)) { $arOffersOldFields = CIBlock::GetFields($OF_IBLOCK_ID); $arOffersFields["FIELDS"] = $arOffersOldFields; foreach ($arLogFields as $keyLogField => $valueLogField) { $arOffersFields["FIELDS"][$keyLogField] = $valueLogField; } } $obIBlock = new CIBlock(); $mxOffersID = $obIBlock->Update($OF_IBLOCK_ID, $arOffersFields); if (false == $mxOffersID) { $strWarning .= $obIBlock->LAST_ERROR . "<br>"; $bVarsFromForm = true; } else { $res_log = array(); $res_log['NAME'] = CIBlock::GetArrayByID($OF_IBLOCK_ID, 'NAME'); if (COption::GetOptionString("iblock", "event_log_iblock", "N") === "Y") { CEventLog::Log("IBLOCK", "IBLOCK_EDIT", "iblock", $OF_IBLOCK_ID, serialize($res_log)); } } } else { $strWarning .= str_replace(array('#ID#'), array($OF_IBLOCK_ID), GetMessage('IB_E_RIGHTS_IBLOCK_ACCESS_DENIED')) . '<br>'; $bVarsFromForm = true; } }
$arResult["Step"] = 2; } } } } if ($arResult["Step"] > 2) { $ib = new CIBlock(); $v1 = "v2:" . serialize(array("DESCRIPTION" => $arResult["Data"]["Description"], "FILTERABLE_FIELDS" => $arResult["Data"]["FilterableFields"], "VISIBLE_FIELDS" => $arResult["Data"]["VisibleFields"], "COMPONENT_TEMPLATES" => $arResult["Data"]["ComponentTemplates"])); $arFields = array("IBLOCK_TYPE_ID" => $arParams["IBLOCK_TYPE"], "LID" => SITE_ID, "NAME" => $arResult["Data"]["Name"], "ACTIVE" => 'Y', "SORT" => $arResult["Data"]["Sort"], "PICTURE" => intval($arResult["Data"]["Image"]) > 0 ? CFile::MakeFileArray($arResult["Data"]["Image"]) : false, "DESCRIPTION" => $v1, "DESCRIPTION_TYPE" => 'text', "WORKFLOW" => 'N', "BIZPROC" => 'Y', "VERSION" => 1, "ELEMENT_ADD" => $arResult["Data"]["ElementAdd"]); foreach ($arResult["Data"]["UserGroups"] as $v) { $arFields["GROUP_ID"][$v] = "R"; } if ($arParams["BLOCK_ID"] <= 0) { $opRes = $iblockId = $ib->Add($arFields); } else { $opRes = $ib->Update($arParams["BLOCK_ID"], $arFields); $iblockId = $arParams["BLOCK_ID"]; } if ($opRes) { global $CACHE_MANAGER; $CACHE_MANAGER->Clean("component_bizproc_wizards_templates"); if (intval($arResult["Data"]["Image"]) > 0) { CFile::Delete($arResult["Data"]["Image"]); } if ($arParams["BLOCK_ID"] <= 0 && strlen($arResult["Data"]["Template"]) > 0) { $arVariables = false; if (method_exists($bpTemplateObject, "GetVariables")) { $arVariables = $bpTemplateObject->GetVariables(); $ks = array_keys($arVariables); foreach ($ks as $k) { $arVariables[$k]["Default"] = $arResult["Data"]["TemplateVariables"][$k];
$tabNumber = $arAllOptions[$i][5]; $name = $arAllOptions[$i][0]; if (isset($arAllOptions[$i][4]) && $arAllOptions[$i][4] === "hidden") { $val = $arAllOptions[$i][2]; } else { $val = $_REQUEST[$tabNumber . '_' . $name]; } if ($arAllOptions[$i][3][0] == "checkbox" && $val != "Y") { $val = "N"; } if ($arAllOptions[$i][3][0] == "mlist") { $val = implode(",", $val); } if ($name === '1C_CRM_CAT_XML_ID') { $ib = new CIBlock(); $ib->Update($iblockId, array('XML_ID' => $val)); unset($ib); } else { if ($name === 'selected_catalog_group_id') { COption::SetOptionInt("crm", $name, intval($val), $arAllOptions[$i][1]); } else { COption::SetOptionString("catalog", $name, $val, $arAllOptions[$i][1]); } } } LocalRedirect(CComponentEngine::MakePathFromTemplate($arResult['PATH_TO_EXCH1C_INDEX'], array())); } $tabNames = array(1 => "tab_catalog_import", 2 => "tab_catalog_export"); foreach ($arAllOptions as $Option) { $tabNumber = $Option[5]; if (isset($Option[4]) && $Option[4] === 'hidden') {
public static function OnBeforePrologHandler() { global $USER_FIELD_MANAGER; if (isset($_REQUEST['action_button']) && !isset($_REQUEST['action'])) { $_REQUEST['action'] = $_REQUEST['action_button']; } if (!isset($_REQUEST['action'])) { return; } $BID = isset($_REQUEST['ID']) ? (int) $_REQUEST['ID'] : 0; if ($_REQUEST['action'] == 'asd_prop_export' && $BID > 0 && check_bitrix_sessid() && CModule::IncludeModule('iblock') && CASDIblockRights::IsIBlockEdit($BID)) { $strPath = $_SERVER['DOCUMENT_ROOT'] . '/bitrix/tmp/asd.iblock/'; $strName = 'asd_props_export_' . $BID . '_' . md5(LICENSE_KEY) . '.xml'; CheckDirPath($strPath); if ($hdlOutput = fopen($strPath . $strName, 'wb')) { fwrite($hdlOutput, '<?xml version="1.0" encoding="' . SITE_CHARSET . '"?>' . "\n"); fwrite($hdlOutput, '<asd_iblock_props>' . "\n"); fwrite($hdlOutput, CASDiblockTools::ExportPropsToXML($BID, $_REQUEST['p'])); if ($_REQUEST['forms'] == 'Y') { fwrite($hdlOutput, CASDiblockTools::ExportSettingsToXML($BID, array('forms'))); } fwrite($hdlOutput, '</asd_iblock_props>' . "\n"); fclose($hdlOutput); } ?> <script type="text/javascript"> top.BX.closeWait(); top.BX.WindowManager.Get().AllowClose(); top.BX.WindowManager.Get().Close(); window.location.href = '/bitrix/tools/asd.iblock/props_export.php?ID=<?php echo $BID; ?> '; </script><?php die; } if ($_REQUEST['action'] == 'asd_prop_import' && $BID > 0 && !$_FILES['xml_file']['error'] && check_bitrix_sessid() && CModule::IncludeModule('iblock') && CASDIblockRights::IsIBlockEdit($BID)) { CASDiblockTools::ImportPropsFromXML($BID, $_FILES['xml_file']['tmp_name'], $arOldNewID); CASDiblockTools::ImportFormsFromXML($BID, $_FILES['xml_file']['tmp_name'], $arOldNewID); LocalRedirect('/bitrix/admin/iblock_edit.php?type=' . $_REQUEST['type'] . '&tabControl_active_tab=edit2&lang=' . LANGUAGE_ID . '&ID=' . $BID . '&admin=Y'); } $IBLOCK_ID = 0; if (isset($_REQUEST['IBLOCK_ID'])) { $IBLOCK_ID = (int) $_REQUEST['IBLOCK_ID']; if ($IBLOCK_ID < 0) { $IBLOCK_ID = 0; } } if ($_REQUEST['action'] == 'asd_reverse' && $IBLOCK_ID > 0 && check_bitrix_sessid() && CModule::IncludeModule('iblock') && CASDIblockRights::IsIBlockEdit($IBLOCK_ID)) { $LIST_MODE = CIBlock::GetArrayByID($IBLOCK_ID, 'LIST_MODE'); if (!strlen($LIST_MODE)) { $LIST_MODE = COption::GetOptionString('iblock', 'combined_list_mode', 'N') == 'Y' ? 'C' : 'S'; } $LIST_MODE = $LIST_MODE == 'C' ? 'S' : 'C'; $ib = new CIBlock(); $ib->Update($IBLOCK_ID, array('LIST_MODE' => $LIST_MODE)); LocalRedirect('/bitrix/admin/' . ($LIST_MODE == 'S' ? 'iblock_element_admin' : 'iblock_list_admin') . '.php?IBLOCK_ID=' . $IBLOCK_ID . '&type=' . htmlspecialcharsbx($_REQUEST['type']) . '&find_section_section=' . intval($_REQUEST['find_section_section']) . '&lang=' . LANGUAGE_ID); } $strCurPage = $GLOBALS['APPLICATION']->GetCurPage(); $bElemPage = $strCurPage == '/bitrix/admin/iblock_element_admin.php' || $strCurPage == '/bitrix/admin/cat_product_admin.php'; $bSectPage = $strCurPage == '/bitrix/admin/iblock_section_admin.php' || $strCurPage == '/bitrix/admin/cat_section_admin.php'; $bMixPage = $strCurPage == '/bitrix/admin/iblock_list_admin.php'; $bRightPage = $bElemPage || $bSectPage || $bMixPage; $successRedirect = false; if ($bRightPage && $_REQUEST['action'] == 'asd_copy_in_list' && strlen($_REQUEST['ID']) > 0) { $bDoAction = true; $_REQUEST['action'] = 'asd_copy'; $_REQUEST['asd_ib_dest'] = $IBLOCK_ID; $_REQUEST['ID'] = array($_REQUEST['ID']); } else { $bDoAction = false; } if ($bRightPage && check_bitrix_sessid() && !empty($_REQUEST['ID']) && ($_SERVER['REQUEST_METHOD'] == 'POST' || $bDoAction) && CModule::IncludeModule('iblock') && ($_REQUEST['action'] == 'asd_copy' || $_REQUEST['action'] == 'asd_move') && isset($_REQUEST['asd_ib_dest']) && (int) $_REQUEST['asd_ib_dest'] > 0 && CASDIblockRights::IsIBlockDisplay($_REQUEST['asd_ib_dest'])) { $intSrcIBlockID = $IBLOCK_ID; $intDestIBlockID = (int) $_REQUEST['asd_ib_dest']; $intSetSectID = 0; if (isset($_REQUEST['asd_sect_dest'])) { $intSetSectID = (int) $_REQUEST['asd_sect_dest']; if ($intSetSectID < 0) { $intSetSectID = 0; } } $boolCreateElement = false; $boolCreateSection = false; if ($bElemPage || $bMixPage) { $boolCreateElement = CASDIblockRights::IsSectionElementCreate($intDestIBlockID, $intSetSectID); } if ($bSectPage || $bMixPage) { $boolCreateSection = CASDIblockRights::IsSectionSectionCreate($intDestIBlockID, $intSetSectID); } if ($boolCreateElement || $boolCreateSection) { $arPropListCache = array(); $arOldPropListCache = array(); $arNamePropListCache = array(); $arOldNamePropListCache = array(); $boolUFListCache = false; $arUFListCache = array(); $arOldUFListCache = array(); $arUFEnumCache = array(); $arOldUFEnumCache = array(); $arUFNameEnumCache = array(); $arOldUFNameEnumCache = array(); $arDestIBlock = CIBlock::GetArrayByID($intDestIBlockID); $arDestIBFields = $arDestIBlock['FIELDS']; $boolCodeUnique = false; if ($arDestIBFields['CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') { $boolCodeUnique = $intSrcIBlockID == $intDestIBlockID; } $boolSectCodeUnique = false; if ($arDestIBFields['SECTION_CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') { $boolSectCodeUnique = $intSrcIBlockID == $intDestIBlockID; } $boolCatalog = CModule::IncludeModule('catalog'); $boolCopyCatalog = false; $boolNewCatalog = false; if ($boolCatalog) { $boolCopyCatalog = is_array(CCatalog::GetByID($intDestIBlockID)); $boolNewCatalog = $boolCopyCatalog; if ($boolCopyCatalog) { $boolCopyCatalog = is_array(CCatalog::GetByID($intSrcIBlockID)); } } $el = new CIBlockElement(); $sc = new CIBlockSection(); $obEnum = new CUserFieldEnum(); foreach ($_REQUEST['ID'] as $eID) { $boolCopyElem = false; $boolCopySect = false; if ($bMixPage) { if (substr($eID, 0, 1) != 'E') { $boolCopySect = true; } else { $boolCopyElem = true; } $ID = (int) substr($eID, 1); } else { $boolCopyElem = $bElemPage; $boolCopySect = $bSectPage; $ID = (int) $eID; } if ($boolCreateElement && $boolCopyElem) { if ($obSrc = CIBlockElement::GetByID($ID)->GetNextElement()) { $arSrc = $obSrc->GetFields(); $arSrcPr = $obSrc->GetProperties(false, array('EMPTY' => 'N')); $arSrc['PREVIEW_PICTURE'] = (int) $arSrc['PREVIEW_PICTURE']; if ($arSrc['PREVIEW_PICTURE'] > 0) { $arSrc['PREVIEW_PICTURE'] = CFile::MakeFileArray($arSrc['PREVIEW_PICTURE']); if (empty($arSrc['PREVIEW_PICTURE'])) { $arSrc['PREVIEW_PICTURE'] = false; } else { $arSrc['PREVIEW_PICTURE']['COPY_FILE'] = 'Y'; } } else { $arSrc['PREVIEW_PICTURE'] = false; } $arSrc['DETAIL_PICTURE'] = (int) $arSrc['DETAIL_PICTURE']; if ($arSrc['DETAIL_PICTURE'] > 0) { $arSrc['DETAIL_PICTURE'] = CFile::MakeFileArray($arSrc['DETAIL_PICTURE']); if (empty($arSrc['DETAIL_PICTURE'])) { $arSrc['DETAIL_PICTURE'] = false; } else { $arSrc['DETAIL_PICTURE']['COPY_FILE'] = 'Y'; } } else { $arSrc['DETAIL_PICTURE'] = false; } $arSrc = array('IBLOCK_ID' => $intDestIBlockID, 'ACTIVE' => $arSrc['ACTIVE'], 'ACTIVE_FROM' => $arSrc['ACTIVE_FROM'], 'ACTIVE_TO' => $arSrc['ACTIVE_TO'], 'SORT' => $arSrc['SORT'], 'NAME' => $arSrc['~NAME'], 'PREVIEW_PICTURE' => $arSrc['PREVIEW_PICTURE'], 'PREVIEW_TEXT' => $arSrc['~PREVIEW_TEXT'], 'PREVIEW_TEXT_TYPE' => $arSrc['PREVIEW_TEXT_TYPE'], 'DETAIL_TEXT' => $arSrc['~DETAIL_TEXT'], 'DETAIL_TEXT_TYPE' => $arSrc['DETAIL_TEXT_TYPE'], 'DETAIL_PICTURE' => $arSrc['DETAIL_PICTURE'], 'WF_STATUS_ID' => $arSrc['WF_STATUS_ID'], 'CODE' => $arSrc['~CODE'], 'TAGS' => $arSrc['~TAGS'], 'XML_ID' => $arSrc['~XML_ID'], 'PROPERTY_VALUES' => array()); if ($arDestIBFields['CODE']['IS_REQUIRED'] == 'Y') { if (!strlen($arSrc['CODE'])) { $arSrc['CODE'] = mt_rand(100000, 1000000); } } if ($arDestIBFields['CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') { $boolElCodeUnique = $boolCodeUnique; if (!$boolCodeUnique) { $rsCheckItems = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $intDestIBlockID, '=CODE' => $arSrc['CODE'], 'CHECK_PERMISSIONS' => 'N'), false, array('nTopCount' => 1), array('ID', 'IBLOCK_ID')); if ($arCheck = $rsCheckItems->Fetch()) { $boolElCodeUnique = true; } } if ($boolElCodeUnique) { $arSrc['CODE'] .= mt_rand(100, 10000); } } if ($intSetSectID > 0) { $arSrc['IBLOCK_SECTION_ID'] = $intSetSectID; } elseif ($intSrcIBlockID == $intDestIBlockID) { $arSectionList = array(); $rsSections = CIBlockElement::GetElementGroups($ID, true); while ($arSection = $rsSections->Fetch()) { $arSectionList[] = $arSection['ID']; } $arSrc['IBLOCK_SECTION'] = $arSectionList; } if ($intSrcIBlockID != $intDestIBlockID) { if (empty($arPropListCache)) { $rsProps = CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $intDestIBlockID, 'PROPERTY_TYPE' => 'L', 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N')); while ($arProp = $rsProps->Fetch()) { $arValueList = array(); $arNameList = array(); $rsValues = CIBlockProperty::GetPropertyEnum($arProp['ID']); while ($arValue = $rsValues->Fetch()) { $arValueList[$arValue['XML_ID']] = $arValue['ID']; $arNameList[$arValue['ID']] = trim($arValue['VALUE']); } if (!empty($arValueList)) { $arPropListCache[$arProp['CODE']] = $arValueList; } if (!empty($arNameList)) { $arNamePropListCache[$arProp['CODE']] = $arNameList; } } } if (empty($arOldPropListCache)) { $rsProps = CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $intSrcIBlockID, 'PROPERTY_TYPE' => 'L', 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N')); while ($arProp = $rsProps->Fetch()) { $arValueList = array(); $arNameList = array(); $rsValues = CIBlockProperty::GetPropertyEnum($arProp['ID']); while ($arValue = $rsValues->Fetch()) { $arValueList[$arValue['ID']] = $arValue['XML_ID']; $arNameList[$arValue['ID']] = trim($arValue['VALUE']); } if (!empty($arValueList)) { $arOldPropListCache[$arProp['CODE']] = $arValueList; } if (!empty($arNameList)) { $arOldNamePropListCache[$arProp['CODE']] = $arNameList; } } } } foreach ($arSrcPr as &$arProp) { if ($arProp['USER_TYPE'] == 'HTML') { if (is_array($arProp['~VALUE'])) { if ($arProp['MULTIPLE'] == 'N') { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array('VALUE' => array('TEXT' => $arProp['~VALUE']['TEXT'], 'TYPE' => $arProp['~VALUE']['TYPE'])); if ($arProp['WITH_DESCRIPTION'] == 'Y') { $arSrc['PROPERTY_VALUES'][$arProp['CODE']]['DESCRIPTION'] = $arProp['~DESCRIPTION']; } } else { if (!empty($arProp['~VALUE'])) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array(); foreach ($arProp['~VALUE'] as $propValueKey => $propValue) { $oneNewValue = array('VALUE' => array('TEXT' => $propValue['TEXT'], 'TYPE' => $propValue['TYPE'])); if ($arProp['WITH_DESCRIPTION'] == 'Y') { $oneNewValue['DESCRIPTION'] = $arProp['~DESCRIPTION'][$propValueKey]; } $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $oneNewValue; unset($oneNewValue); } unset($propValue, $propValueKey); } } } } elseif ($arProp['PROPERTY_TYPE'] == 'F') { if (is_array($arProp['VALUE'])) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array(); foreach ($arProp['VALUE'] as $propValueKey => $file) { if ($file > 0) { $tmpValue = CFile::MakeFileArray($file); if (!is_array($tmpValue)) { continue; } if ($arProp['WITH_DESCRIPTION'] == 'Y') { $tmpValue = array('VALUE' => $tmpValue, 'DESCRIPTION' => $arProp['~DESCRIPTION'][$propValueKey]); } $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $tmpValue; } } } elseif ($arProp['VALUE'] > 0) { $tmpValue = CFile::MakeFileArray($arProp['VALUE']); if (is_array($tmpValue)) { if ($arProp['WITH_DESCRIPTION'] == 'Y') { $tmpValue = array('VALUE' => $tmpValue, 'DESCRIPTION' => $arProp['~DESCRIPTION']); } $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $tmpValue; } } } elseif ($arProp['PROPERTY_TYPE'] == 'L') { if (!empty($arProp['VALUE_ENUM_ID'])) { if ($intSrcIBlockID == $arSrc['IBLOCK_ID']) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['VALUE_ENUM_ID']; } else { if (isset($arPropListCache[$arProp['CODE']]) && isset($arOldPropListCache[$arProp['CODE']])) { if (is_array($arProp['VALUE_ENUM_ID'])) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array(); foreach ($arProp['VALUE_ENUM_ID'] as &$intValueID) { $strValueXmlID = $arOldPropListCache[$arProp['CODE']][$intValueID]; if (isset($arPropListCache[$arProp['CODE']][$strValueXmlID])) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $arPropListCache[$arProp['CODE']][$strValueXmlID]; } else { $strValueName = $arOldNamePropListCache[$arProp['CODE']][$intValueID]; $intValueKey = array_search($strValueName, $arNamePropListCache[$arProp['CODE']]); if ($intValueKey !== false) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $intValueKey; } } } if (isset($intValueID)) { unset($intValueID); } if (empty($arSrc['PROPERTY_VALUES'][$arProp['CODE']])) { unset($arSrc['PROPERTY_VALUES'][$arProp['CODE']]); } } else { $strValueXmlID = $arOldPropListCache[$arProp['CODE']][$arProp['VALUE_ENUM_ID']]; if (isset($arPropListCache[$arProp['CODE']][$strValueXmlID])) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arPropListCache[$arProp['CODE']][$strValueXmlID]; } else { $strValueName = $arOldNamePropListCache[$arProp['CODE']][$arProp['VALUE_ENUM_ID']]; $intValueKey = array_search($strValueName, $arNamePropListCache[$arProp['CODE']]); if ($intValueKey !== false) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $intValueKey; } } } } } } } elseif ($arProp['PROPERTY_TYPE'] == 'S' || $arProp['PROPERTY_TYPE'] == 'N') { if ($arProp['MULTIPLE'] == 'Y') { if (is_array($arProp['~VALUE'])) { if ($arProp['WITH_DESCRIPTION'] == 'Y') { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array(); foreach ($arProp['~VALUE'] as $propValueKey => $propValue) { $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = array('VALUE' => $propValue, 'DESCRIPTION' => $arProp['~DESCRIPTION'][$propValueKey]); } unset($propValue, $propValueKey); } else { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['~VALUE']; } } } else { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['WITH_DESCRIPTION'] == 'Y' ? array('VALUE' => $arProp['~VALUE'], 'DESCRIPTION' => $arProp['~DESCRIPTION']) : $arProp['~VALUE']; } } else { $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['~VALUE']; } } if (isset($arProp)) { unset($arProp); } AddMessage2Log($arSrc['PROPERTY_VALUES']); $intNewID = $el->Add($arSrc, true, true, true); if ($intNewID) { if ($boolCatalog && $boolCopyCatalog) { $priceRes = CPrice::GetListEx(array(), array('PRODUCT_ID' => $ID), false, false, array('PRODUCT_ID', 'EXTRA_ID', 'CATALOG_GROUP_ID', 'PRICE', 'CURRENCY', 'QUANTITY_FROM', 'QUANTITY_TO')); while ($arPrice = $priceRes->Fetch()) { $arPrice['PRODUCT_ID'] = $intNewID; CPrice::Add($arPrice); } } if ($boolCatalog && $boolNewCatalog) { $arProduct = array('ID' => $intNewID); if ($boolCopyCatalog) { $productRes = CCatalogProduct::GetList(array(), array('ID' => $ID), false, false, array('QUANTITY', 'QUANTITY_TRACE_ORIG', 'CAN_BUY_ZERO_ORIG', 'NEGATIVE_AMOUNT_TRACE_ORIG', 'SUBSCRIBE_ORIG', 'WEIGHT', 'PRICE_TYPE', 'RECUR_SCHEME_TYPE', 'RECUR_SCHEME_LENGTH', 'TRIAL_PRICE_ID', 'WITHOUT_ORDER', 'SELECT_BEST_PRICE', 'VAT_ID', 'VAT_INCLUDED', 'WIDTH', 'LENGTH', 'HEIGHT', 'PURCHASING_PRICE', 'PURCHASING_CURRENCY', 'MEASURE')); if ($arCurProduct = $productRes->Fetch()) { $arProduct = $arCurProduct; $arProduct['ID'] = $intNewID; $arProduct['QUANTITY_TRACE'] = $arProduct['QUANTITY_TRACE_ORIG']; $arProduct['CAN_BUY_ZERO'] = $arProduct['CAN_BUY_ZERO_ORIG']; $arProduct['NEGATIVE_AMOUNT_TRACE'] = $arProduct['NEGATIVE_AMOUNT_TRACE_ORIG']; if (isset($arProduct['SUBSCRIBE_ORIG'])) { $arProduct['SUBSCRIBE'] = $arProduct['SUBSCRIBE_ORIG']; } foreach ($arProduct as $productKey => $productValue) { if ($productValue === null) { unset($arProduct[$productKey]); } } } } CCatalogProduct::Add($arProduct, false); } if ($_REQUEST['action'] == 'asd_move') { if (CASDIblockRights::IsElementDelete($intSrcIBlockID, $ID)) { $el->Delete($ID); } else { CASDiblock::$error .= '[' . $ID . '] ' . GetMessage('ASD_ACTION_ERR_DELETE_ELEMENT_RIGHTS') . "\n"; } } } else { CASDiblock::$error .= '[' . $ID . '] ' . $el->LAST_ERROR . "\n"; } } } if ($boolCreateSection && $boolCopySect) { if ($_REQUEST['action'] == 'asd_move') { continue; } $rsSections = CIBlockSection::GetList(array(), array('ID' => $ID, 'IBLOCK_ID' => $intSrcIBlockID), false, array('ID', 'NAME', 'XML_ID', 'CODE', 'IBLOCK_SECTION_ID', 'IBLOCK_ID', 'ACTIVE', 'SORT', 'PICTURE', 'DESCRIPTION', 'DESCRIPTION_TYPE', 'DETAIL_PICTURE', 'SOCNET_GROUP_ID', 'UF_*')); if ($arSrcSect = $rsSections->Fetch()) { $arDestSect = $arSrcSect; unset($arDestSect['ID']); $arDestSect['IBLOCK_ID'] = $intDestIBlockID; if ($arDestIBFields['SECTION_CODE']['IS_REQUIRED'] == 'Y') { if (!strlen($arDestSect['CODE'])) { $arDestSect['CODE'] = mt_rand(100000, 1000000); } } if ($arDestIBFields['SECTION_CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') { $boolScCodeUnique = $boolSectCodeUnique; if (!$boolSectCodeUnique) { $rsCheckItems = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $intDestIBlockID, '=CODE' => $arSrc['CODE'], 'CHECK_PERMISSIONS' => 'N'), false, array('nTopCount' => 1), array('ID', 'IBLOCK_ID')); if ($arCheck = $rsCheckItems->Fetch()) { $boolScCodeUnique = true; } } if ($boolScCodeUnique) { $arDestSect['CODE'] .= mt_rand(100, 10000); } } if ($intSetSectID > 0) { $arDestSect['IBLOCK_SECTION_ID'] = $intSetSectID; } elseif ($intSrcIBlockID != $intDestIBlockID) { $arDestSect['IBLOCK_SECTION_ID'] = 0; } $arDestSect['PICTURE'] = (int) $arDestSect['PICTURE']; if ($arDestSect['PICTURE'] > 0) { $arDestSect['PICTURE'] = CFile::MakeFileArray($arDestSect['PICTURE']); if (empty($arDestSect['PICTURE'])) { $arDestSect['PICTURE'] = false; } else { $arDestSect['PICTURE']['COPY_FILE'] = 'Y'; } } else { $arDestSect['PICTURE'] = false; } $arDestSect['DETAIL_PICTURE'] = (int) $arDestSect['DETAIL_PICTURE']; if ($arDestSect['DETAIL_PICTURE'] > 0) { $arDestSect['DETAIL_PICTURE'] = CFile::MakeFileArray($arDestSect['DETAIL_PICTURE']); if (empty($arDestSect['DETAIL_PICTURE'])) { $arDestSect['DETAIL_PICTURE'] = false; } else { $arDestSect['DETAIL_PICTURE']['COPY_FILE'] = 'Y'; } } else { $arDestSect['DETAIL_PICTURE'] = false; } if (!$boolUFListCache) { $boolUFListCache = true; $arUFListCache = $USER_FIELD_MANAGER->GetUserFields('IBLOCK_' . $intDestIBlockID . '_SECTION'); if (!empty($arUFListCache)) { if ($intSrcIBlockID != $intDestIBlockID) { $arOldUFListCache = $USER_FIELD_MANAGER->GetUserFields('IBLOCK_' . $intSrcIBlockID . '_SECTION'); if (empty($arOldUFListCache)) { $arUFListCache = array(); } } else { $arOldUFListCache = $arUFListCache; } } if (!empty($arUFListCache)) { if ($intSrcIBlockID != $intDestIBlockID) { foreach ($arUFListCache as &$arOneUserField) { if ('enum' == $arOneUserField['USER_TYPE']['BASE_TYPE']) { $arUFEnumCache[$arOneUserField['FIELD_NAME']] = array(); $arUFNameEnumCache[$arOneUserField['FIELD_NAME']] = array(); $rsEnum = $obEnum->GetList(array(), array('USER_FIELD_ID' => $arOneUserField['ID'])); while ($arEnum = $rsEnum->Fetch()) { $arUFEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['XML_ID']] = $arEnum['ID']; $arUFNameEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['ID']] = trim($arEnum['VALUE']); } } } if (isset($arOneUserField)) { unset($arOneUserField); } foreach ($arOldUFListCache as &$arOneUserField) { if ($arOneUserField['USER_TYPE']['BASE_TYPE'] == 'enum') { $arOldUFEnumCache[$arOneUserField['FIELD_NAME']] = array(); $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']] = array(); $rsEnum = $obEnum->GetList(array(), array('USER_FIELD_ID' => $arOneUserField['ID'])); while ($arEnum = $rsEnum->Fetch()) { $arOldUFEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['ID']] = $arEnum['XML_ID']; $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['ID']] = trim($arEnum['VALUE']); } } } if (isset($arOneUserField)) { unset($arOneUserField); } } } } if (!empty($arUFListCache)) { foreach ($arUFListCache as &$arOneUserField) { if (!isset($arDestSect[$arOneUserField['FIELD_NAME']])) { continue; } if ($arOneUserField['USER_TYPE']['BASE_TYPE'] == 'file') { if (!empty($arDestSect[$arOneUserField['FIELD_NAME']])) { if (is_array($arDestSect[$arOneUserField['FIELD_NAME']])) { $arNewFileList = array(); foreach ($arDestSect[$arOneUserField['FIELD_NAME']] as &$intFileID) { $arNewFile = false; $intFileID = (int) $intFileID; if ($intFileID > 0) { $arNewFile = CFile::MakeFileArray($intFileID); } if (!empty($arNewFile)) { $arNewFileList[] = $arNewFile; } } if (isset($intFileID)) { unset($intFileID); } $arDestSect[$arOneUserField['FIELD_NAME']] = !empty($arNewFileList) ? $arNewFileList : false; } else { $arNewFile = false; $intFileID = (int) $arDestSect[$arOneUserField['FIELD_NAME']]; if ($intFileID > 0) { $arNewFile = CFile::MakeFileArray($intFileID); } $arDestSect[$arOneUserField['FIELD_NAME']] = !empty($arNewFile) ? $arNewFile : false; } } else { $arDestSect[$arOneUserField['FIELD_NAME']] = false; } } elseif ($arOneUserField['USER_TYPE']['BASE_TYPE'] == 'enum') { if (!empty($arDestSect[$arOneUserField['FIELD_NAME']])) { if ($intSrcIBlockID != $intDestIBlockID) { if (array_key_exists($arOneUserField['FIELD_NAME'], $arUFEnumCache) && array_key_exists($arOneUserField['FIELD_NAME'], $arOldUFEnumCache)) { if (is_array($arDestSect[$arOneUserField['FIELD_NAME']])) { $arNewEnumList = array(); foreach ($arDestSect[$arOneUserField['FIELD_NAME']] as &$intValueID) { $strValueXmlID = $arOldUFEnumCache[$arOneUserField['FIELD_NAME']][$intValueID]; if (array_key_exists($strValueXmlID, $arUFEnumCache[$arOneUserField['FIELD_NAME']])) { $arNewEnumList[] = $arUFEnumCache[$arOneUserField['FIELD_NAME']][$strValueXmlID]; } else { $strValueName = $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']][$intValueID]; $intValueKey = array_search($strValueName, $arUFNameEnumCache[$arOneUserField['FIELD_NAME']]); if ($intValueKey !== false) { $arNewEnumList[] = $intValueKey; } } } if (isset($intValueID)) { unset($intValueID); } if (!empty($arNewEnumList)) { $arDestSect[$arOneUserField['FIELD_NAME']] = $arNewEnumList; } } else { $strValueXmlID = $arOldUFEnumCache[$arOneUserField['FIELD_NAME']][$arDestSect[$arOneUserField['FIELD_NAME']]]; if (array_key_exists($strValueXmlID, $arUFEnumCache[$arOneUserField['FIELD_NAME']])) { $arDestSect[$arOneUserField['FIELD_NAME']] = $arUFEnumCache[$arOneUserField['FIELD_NAME']][$strValueXmlID]; } else { $strValueName = $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']][$arDestSect[$arOneUserField['FIELD_NAME']]]; $intValueKey = array_search($strValueName, $arUFNameEnumCache[$arOneUserField['FIELD_NAME']]); if ($intValueKey !== false) { $arDestSect[$arOneUserField['FIELD_NAME']] = $intValueKey; } } } } } } else { $arDestSect[$arOneUserField['FIELD_NAME']] = false; } } } if (isset($arOneUserField)) { unset($arOneUserField); } } $intNewID = $sc->Add($arDestSect); if (!$intNewID) { CASDiblock::$error .= '[' . $ID . '] ' . $sc->LAST_ERROR . "\n"; } } } } $successRedirect = true; } unset($_REQUEST['action']); if (isset($_REQUEST['action_button'])) { unset($_REQUEST['action_button']); } if ($successRedirect) { LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam('', array('action', 'action_button', 'asd_ib_dest', 'asd_sect_dest', 'ID'))); } } if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'asd_remove' && $IBLOCK_ID > 0 && isset($_REQUEST['find_section_section']) && check_bitrix_sessid() && CASDIblockRights::IsIBlockDisplay($IBLOCK_ID)) { $intSectionID = (int) $_REQUEST['find_section_section']; if ($intSectionID > 0) { $strCurPage = $GLOBALS['APPLICATION']->GetCurPage(); $bElemPage = $strCurPage == '/bitrix/admin/iblock_element_admin.php' || $strCurPage == '/bitrix/admin/cat_product_admin.php'; $bMixPage = $strCurPage == '/bitrix/admin/iblock_list_admin.php'; if ($bElemPage || $bMixPage) { foreach ($_REQUEST['ID'] as $eID) { if ($bMixPage) { if (substr($eID, 0, 1) != 'E') { continue; } $ID = (int) substr($eID, 1); } else { $ID = (int) $eID; } if ($ID <= 0) { continue; } if (CASDIblockRights::IsElementEdit($IBLOCK_ID, $ID)) { $arSectionList = array(); $rsSections = CIBlockElement::GetElementGroups($ID, true); while ($arSection = $rsSections->Fetch()) { $arSection['ID'] = (int) $arSection['ID']; if ($arSection['ID'] != $intSectionID) { $arSectionList[] = $arSection['ID']; } } CIBlockElement::SetElementSection($ID, $arSectionList, false); $successRedirect = true; } } } } unset($_REQUEST['action']); if (isset($_REQUEST['action_button'])) { unset($_REQUEST['action_button']); } if ($successRedirect) { LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam('', array('action', 'action_button'))); } } }
/** * * 1) шаг первый - создание Инфоблока * 2) шаг второй - создание шаблона Бизнес-Процесса * @param array $arResult - массив с данными * @param array $arParams - */ public static function addBP($arResult, $arParams) { if (!CModule::IncludeModule("iblock")) { ShowError('Нет модуля iblock'); } if (!CModule::IncludeModule("bizproc")) { ShowError('Нет модуля bizproc'); } $ib = new CIBlock(); $description = 'описание'; /* ШАГ 1 */ $arFields = array("IBLOCK_TYPE_ID" => $arParams["IBLOCK_TYPE"], "LID" => "s1", "NAME" => $arResult["Data"]["Name"], "CODE" => "select_color", "ACTIVE" => 'Y', "SORT" => $arResult["Data"]["Sort"], "PICTURE" => intval($arResult["Data"]["Image"]) > 0 ? CFile::MakeFileArray($arResult["Data"]["Image"]) : false, "DESCRIPTION" => $description, "DESCRIPTION_TYPE" => 'text', "WORKFLOW" => 'N', "BIZPROC" => 'Y', "VERSION" => 1, "ELEMENT_ADD" => $arResult["Data"]["ElementAdd"]); foreach ($arResult["Data"]["UserGroups"] as $v) { $arFields["GROUP_ID"][$v] = "R"; } if ($arParams["BLOCK_ID"] <= 0) { $opRes = $iblockId = $ib->Add($arFields); } else { $opRes = $ib->Update($arParams["BLOCK_ID"], $arFields); $iblockId = $arParams["BLOCK_ID"]; } /* ШАГ 2 */ if ($opRes) { global $CACHE_MANAGER; $CACHE_MANAGER->Clean("component_bizproc_wizards_templates"); if (intval($arResult["Data"]["Image"]) > 0) { CFile::Delete($arResult["Data"]["Image"]); } if ($arParams["BLOCK_ID"] <= 0 && strlen($arResult["Data"]["Template"]) > 0) { $arVariables = false; if (method_exists($bpTemplateObject, "GetVariables")) { $arVariables = $bpTemplateObject->GetVariables(); $ks = array_keys($arVariables); foreach ($ks as $k) { $arVariables[$k]["Default"] = $arResult["Data"]["TemplateVariables"][$k]; } } $arFieldsT = array("DOCUMENT_TYPE" => array("bizproc", "CBPVirtualDocument", "type_" . $iblockId), "AUTO_EXECUTE" => CBPDocumentEventType::Create, "NAME" => $arResult["Data"]["Name"], "DESCRIPTION" => $arResult["Data"]["Description"], "TEMPLATE" => $bpTemplateObject->GetTemplate(), "PARAMETERS" => $bpTemplateObject->GetParameters(), "VARIABLES" => $arVariables, "USER_ID" => $GLOBALS["USER"]->GetID(), "ACTIVE" => 'Y', "MODIFIER_USER" => new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); CBPWorkflowTemplateLoader::Add($arFieldsT); if (method_exists($bpTemplateObject, "GetDocumentFields")) { $runtime = CBPRuntime::GetRuntime(); $runtime->StartRuntime(); $arResult["DocumentService"] = $runtime->GetService("DocumentService"); $arDocumentFields = $bpTemplateObject->GetDocumentFields(); if ($arDocumentFields && is_array($arDocumentFields) && count($arDocumentFields) > 0) { foreach ($arDocumentFields as $f) { $arResult["DocumentService"]->AddDocumentField(array("bizproc", "CBPVirtualDocument", "type_" . $iblockId), $f); } } } } /* * разворачиваем шаблон БП из файла */ $templateFileNameBP = $_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/adeveloper.bp/data/bp-sc.bpt'; $f = fopen($templateFileNameBP, "rb"); $datum = fread($f, filesize($templateFileNameBP)); fclose($f); try { $BLOCK_ID = $opRes; $r = CBPWorkflowTemplateLoader::ImportTemplate($ID, array("bizproc", "CBPVirtualDocument", "type_" . $BLOCK_ID), 1, "Шаблон БП", "Описание шаблона", $datum); } catch (Exception $e) { $errTmp = preg_replace("#[\r\n]+#", " ", $e->getMessage()); } } else { ShowError("Инфоблока нет"); } return $opRes; }
} else { if (COption::GetOptionString("iblock", "event_log_iblock", "N") === "Y") { $res_log["NAME"] = $arIBlock["NAME"]; CEventLog::Log("IBLOCK", "IBLOCK_DELETE", "iblock", $ID, serialize($res_log)); } } $DB->Commit(); break; case "activate": case "deactivate": if (!CIBlockRights::UserHasRightTo($ID, $ID, "iblock_delete")) { break; } $ob = new CIBlock(); $arFields = array("ACTIVE" => $_REQUEST['action'] == "activate" ? "Y" : "N"); if (!$ob->Update($ID, $arFields)) { $lAdmin->AddGroupError(GetMessage("IBLOCK_ADM_UPD_ERROR") . $ob->LAST_ERROR, $ID); } break; } } } $arHeader = array(array("id" => "NAME", "content" => GetMessage("IBLOCK_ADM_NAME"), "sort" => "name", "default" => true), array("id" => "SORT", "content" => GetMessage("IBLOCK_ADM_SORT"), "sort" => "sort", "default" => true, "align" => "right"), array("id" => "ACTIVE", "content" => GetMessage("IBLOCK_ADM_ACTIVE"), "sort" => "active", "default" => true, "align" => "center"), array("id" => "CODE", "content" => GetMessage("IBLOCK_FIELD_CODE"), "sort" => "code"), array("id" => "LIST_PAGE_URL", "content" => GetMessage("IBLOCK_ADM_HEADER_LIST_URL")), array("id" => "DETAIL_PAGE_URL", "content" => GetMessage("IBLOCK_ADM_HEADER_DETAIL_URL")), array("id" => "ELEMENT_CNT", "content" => GetMessage("IBLOCK_ADM_HEADER_EL"), "default" => true, "align" => "right")); if ($arIBTYPE["SECTIONS"] == "Y") { $arHeader[] = array("id" => "SECTION_CNT", "content" => GetMessage("IBLOCK_ADM_HEADER_SECT"), "default" => true, "align" => "right"); } $arHeader[] = array("id" => "LID", "content" => GetMessage("IBLOCK_ADM_LANG"), "sort" => "lid", "default" => true, "align" => "left"); $arHeader[] = array("id" => "INDEX_ELEMENT", "content" => GetMessage("IBLOCK_ADM_HEADER_TOINDEX")); if ($bWorkflow) { $arHeader[] = array("id" => "WORKFLOW", "content" => GetMessage("IBLOCK_ADM_HEADER_WORKFLOW")); }
} // sync iblock url fields with params if (IsModuleInstalled('iblock') && CModule::IncludeModule('iblock')) { $iblock = new CIBlock(); if (isset($arResult['PATH_TO_PRODUCT_LIST'])) { // list page $listPageUrl = CComponentEngine::makePathFromTemplate($arResult['PATH_TO_PRODUCT_LIST'], array('section_id' => '')); if ($arParams['SEF_MODE'] === 'Y') { $listPageUrl = str_replace('//', '/', $listPageUrl); } else { $listPageUrl = str_replace('?' . $arVariableAliases['section_id'] . '=', '/', $listPageUrl); } //$listPageUrl = '#SITE_ID#'.$listPageUrl; $curListPageUrl = COption::GetOptionString('crm', 'product_list_page_url', ''); if ($listPageUrl !== $curListPageUrl) { $iblock->Update($catalogID, array('LIST_PAGE_URL' => $listPageUrl)); COption::SetOptionString('crm', 'product_list_page_url', $listPageUrl); } // section page $sectionPageUrl = CComponentEngine::makePathFromTemplate($arResult['PATH_TO_PRODUCT_LIST'], array('section_id' => '#SECTION_ID#')); //$sectionPageUrl = '#SITE_ID#'.$sectionPageUrl; $curSectionPageUrl = COption::GetOptionString('crm', 'product_section_page_url', ''); if ($sectionPageUrl !== $curSectionPageUrl) { $iblock->Update($catalogID, array('SECTION_PAGE_URL' => $sectionPageUrl)); COption::SetOptionString('crm', 'product_section_page_url', $sectionPageUrl); } } if (isset($arResult['PATH_TO_PRODUCT_SHOW'])) { // detail page $detailPageUrl = CComponentEngine::makePathFromTemplate($arResult['PATH_TO_PRODUCT_SHOW'], array('product_id' => '#ID#')); //$detailPageUrl = '#SITE_ID#'.$detailPageUrl;
public static function migrateList($id) { $id = intval($id); if ($id <= 0) { throw new Main\ArgumentNullException("id"); } $db = \CIBlock::GetList(array(), array("ID" => $id, "IBLOCK_TYPE_ID" => "lists", "CHECK_PERMISSIONS" => "N")); $iblock = $db->Fetch(); if (!$iblock) { throw new Main\ArgumentOutOfRangeException("id"); } $iblockType = static::getIBlockType(); $ob = new \CIBlock(); $res = $ob->Update($id, array("IBLOCK_TYPE_ID" => $iblockType)); if ($res) { \CLists::setLiveFeed(1, $id); } \CBPDocument::MigrateDocumentType(array("lists", 'Bitrix\\Lists\\BizprocDocumentLists', "iblock_" . $id), array("lists", "BizprocDocument", "iblock_" . $id)); }
public function importXMLData() { if (!$this->_bIBlockSelected) { return false; } $bTypeSuccess = $this->createIBlockType(); if (!$bTypeSuccess) { return false; } if (!$this->deleteOldIBlockData()) { return false; } // Это если мы реинсталлируем данные инфоблоков if ($this->_iblockID == 0) { $arFields = Tools::arrayMergeRecursiveDistinct(self::$_arDefaultIBlockFields, $this->_arConfig['IBLOCK'][$this->_iblockCode]); $arPermissions = $arFields['PERMISSIONS']; $dbGroup = \CGroup::GetList($by = "", $order = "", array("STRING_ID" => "content_editor")); if ($arGroup = $dbGroup->Fetch()) { $arPermissions[$arGroup["ID"]] = 'W'; } unset($arFields['IBLOCK_TYPE_ID']); unset($arFields['XML_FILE']); unset($arFields['FORM_SETTINGS']); unset($arFields['PERMISSIONS']); $arFields['CODE'] = $this->_iblockCode; $arFields['LID'] = WIZARD_SITE_ID; $this->_iblockID = \WizardServices::ImportIBlockFromXML($this->_iblockXMLFile, $this->_iblockCode, $this->_iblockType, WIZARD_SITE_ID, $arPermissions); if ($this->_iblockID < 1) { die('Error importing xml-data:' . "<br /> \n" . 'xml file: "' . htmlspecialchars($this->_iblockXMLFile) . '"' . ",<br /> \n" . 'iblock code: "' . htmlspecialchars($this->_iblockCode) . '"' . ",<br /> \n" . 'iblock type: "' . htmlspecialchars($this->_iblockType) . '"'); } $iblock = new \CIBlock(); $iblock->Update($this->_iblockID, $arFields); } else { $arSites = self::getIBlockSites($this->_iblockID); if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iblock = new \CIBlock(); $iblock->Update($this->_iblockID, array("LID" => $arSites)); } } }
********************************************************************/ //$GLOBALS["APPLICATION"]->SetFileAccessPermission($_REQUEST["library_FOLDER"], $_REQUEST["library_FOLDER_PERMISSION"]); if ($_SERVER["REQUEST_METHOD"] == "POST") { CUtil::JSPostUnescape(); $ib = new CIBlock(); if (!check_bitrix_sessid()) { $strWarning = GetMessage("WD_ERROR_BAD_SESSID"); } else { $bSetERights = isset($_REQUEST['IB_E_RIGHTS']) && $_REQUEST['IB_E_RIGHTS'] == 'Y'; if ($arIBlock['RIGHTS_MODE'] !== ($bSetERights ? 'E' : 'S')) { $arFields = array(); $arFields['RIGHTS_MODE'] = $bSetERights ? 'E' : 'S'; if ($bSetERights) { $arFields['GROUP_ID'] = CIBlock::GetGroupPermissions($iblock_id); } $res = $ib->Update($iblock_id, $arFields); $ob->e_rights = $bSetERights; } else { $arFields = array(); if (isset($_REQUEST['WF_TYPE'])) { $arFields = array("WORKFLOW" => $_REQUEST["WF_TYPE"] == "WF" ? "Y" : "N", "BIZPROC" => $_REQUEST["WF_TYPE"] == "BP" ? "Y" : "N"); } else { if (isset($_REQUEST['WF_TYPE_WF']) && $_REQUEST['WF_TYPE_WF'] == 'Y') { $arFields["WORKFLOW"] = "Y"; $arFields["BIZPROC"] = "N"; } elseif (isset($_REQUEST['WF_TYPE_BP']) && $_REQUEST['WF_TYPE_BP'] == "Y") { $arFields["BIZPROC"] = "Y"; $arFields["WORKFLOW"] = "N"; } else { $arFields["BIZPROC"] = "N"; $arFields["WORKFLOW"] = "N";
/** * @var array $data * @var array $fields * @var bool $deleteIfExists */ protected function IblockUpdate(array $data, array $fields = null) { global $DB; if (empty(trim($data['CODE']))) { throw new \Exception('You must set iblock CODE'); } $name = trim($data['CODE']); $fire = false; $res = \CIBlock::GetList([], ['CODE' => $name, 'CHECK_PERMISSIONS' => 'N']); if ($ob = $res->Fetch()) { $ib = new \CIBlock(); $id = $ib->Update($ob['ID'], $data); if ($id) { echo "Update {$name} iblock\r\n"; if ($id && $fields) { $this->IblockSetFields($name, $fields); } } else { throw new \Exception("Can't create {$name} iblock type"); } } else { throw new \Exception("Iblock don't exists"); } return $id; }
$arFields["USER_GROUP_BUY"] = array(1); CCatalogGroup::Add($arFields); } if ($IBLOCK_CATALOG_ID == false) { $permissions = array("1" => "X", "2" => "R"); $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "sale_administrator")); if ($arGroup = $dbGroup->Fetch()) { $permissions[$arGroup["ID"]] = 'W'; } $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "content_editor")); if ($arGroup = $dbGroup->Fetch()) { $permissions[$arGroup["ID"]] = 'W'; } $IBLOCK_CATALOG_ID = WizardServices::ImportIBlockFromXML($iblockXMLFile, "clothes", $iblockType, WIZARD_SITE_ID, $permissions); $IBLOCK_CATALOG_ID1 = WizardServices::ImportIBlockFromXML($iblockXMLFilePrices, "clothes", $iblockType . "_prices", WIZARD_SITE_ID, $permissions); if ($IBLOCK_CATALOG_ID < 1) { return; } $_SESSION["WIZARD_CATALOG_IBLOCK_ID"] = $IBLOCK_CATALOG_ID; } else { $arSites = array(); $db_res = CIBlock::GetSite($IBLOCK_CATALOG_ID); while ($res = $db_res->Fetch()) { $arSites[] = $res["LID"]; } if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iblock = new CIBlock(); $iblock->Update($IBLOCK_CATALOG_ID, array("LID" => $arSites)); } }
"SECTION_PROPERTY" => "Y", )); if(!$res) { $strWarning .= $ib->LAST_ERROR."<br>"; $bVarsFromForm = true; } } $arCatalog = CCatalog::GetSkuInfoByProductID($IBLOCK_ID); if(is_array($arCatalog) && CIBlock::GetArrayByID($arCatalog["IBLOCK_ID"], "SECTION_PROPERTY") != "Y") { $ib = new CIBlock; $res = $ib->Update($arCatalog["IBLOCK_ID"], array( "SECTION_PROPERTY" => "Y", )); if(!$res) { $strWarning .= $ib->LAST_ERROR."<br>"; $bVarsFromForm = true; } } if($strWarning === "") { $props = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "CHECK_PERMISSIONS" => "N")); while($p = $props->Fetch()) { CIBlockSectionPropertyLink::Delete(0, $p["ID"]); if(
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; }
if (!CModule::IncludeModule("iblock")) return false; $rsIBlock = CIBlock::GetList(array(), array("CODE" => "aqw_shop_products", "TYPE" => "catalog")); if ($arIBlock = $rsIBlock->Fetch()) { $arSites = array(); $db_res = CIBlock::GetSite($arIBlock['ID']); while ($res = $db_res->Fetch()) $arSites[] = $res["LID"]; if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iBlock = new CIBlock; $iBlock->Update($arIBlock['ID'], array("LID" => $arSites)); } $iblockID = $arIBlock['ID']; } else { $iblockID = WizardServices::ImportIBlockFromXML( WIZARD_SERVICE_RELATIVE_PATH . "/xml/" . LANGUAGE_ID . "/products.xml", "aqw_shop_products", "catalog", WIZARD_SITE_ID ); } if ($iblockID > 0){ $arReplaceSub = array( 'AQW_SHOP_PRODUCTS' => $iblockID,
$iblockType = CCrmCatalog::GetCatalogTypeID(); $catalogId = CCrmCatalog::EnsureDefaultExists(); $currentLocalization = LANGUAGE_ID; $currentSiteID = SITE_ID; if (defined("ADMIN_SECTION")) { $site = new CSite(); $obSite = $site->GetList($by = "def", $order = "desc", array("ACTIVE" => "Y")); if ($arSite = $obSite->Fetch()) { $currentLocalization = $arSite["LANGUAGE_ID"]; $currentSiteID = $arSite["LID"]; } unset($arSite, $obSite, $site); } // update catalog xml_id for exchange with 1C $ib = new CIBlock(); $ib->Update($catalogId, array('XML_ID' => 'FUTURE-1C-CATALOG')); unset($ib); $arExch1cOptions = array(array('catalog', '1CE_ELEMENTS_PER_STEP', '100'), array('catalog', '1CE_GROUP_PERMISSIONS', ''), array('catalog', '1CE_IBLOCK_ID', $catalogId), array('catalog', '1CE_INTERVAL', '30'), array('catalog', '1CE_USE_ZIP', 'Y'), array('catalog', '1C_DETAIL_HEIGHT', '300'), array('catalog', '1C_DETAIL_RESIZE', 'N'), array('catalog', '1C_DETAIL_WIDTH', '300'), array('catalog', '1C_ELEMENT_ACTION', 'D'), array('catalog', '1C_FILE_SIZE_LIMIT', '204800'), array('catalog', '1C_FORCE_OFFERS', 'N'), array('catalog', '1C_GENERATE_PREVIEW', 'N'), array('catalog', '1C_GROUP_PERMISSIONS', ''), array('catalog', '1C_IBLOCK_TYPE', $iblockType), array('catalog', '1C_INTERVAL', '30'), array('catalog', '1C_PREVIEW_HEIGHT', '100'), array('catalog', '1C_PREVIEW_WIDTH', '100'), array('catalog', '1C_SECTION_ACTION', 'D'), array('catalog', '1C_SITE_LIST', $currentSiteID), array('catalog', '1C_SKIP_ROOT_SECTION', 'N'), array('catalog', '1C_TRANSLIT_ON_ADD', 'N'), array('catalog', '1C_TRANSLIT_ON_UPDATE', 'N'), array('catalog', '1C_USE_CRC', 'Y'), array('catalog', '1C_USE_IBLOCK_PICTURE_SETTINGS', 'N'), array('catalog', '1C_USE_IBLOCK_TYPE_ID', 'N'), array('catalog', '1C_USE_OFFERS', 'N'), array('catalog', '1C_USE_ZIP', 'Y'), array('sale', '1C_EXPORT_ALLOW_DELIVERY_ORDERS', 'N'), array('sale', '1C_EXPORT_FINAL_ORDERS', ''), array('sale', '1C_EXPORT_PAYED_ORDERS', 'N'), array('sale', '1C_FINAL_STATUS_ON_DELIVERY', ''), array('sale', '1C_REPLACE_CURRENCY', $currentLocalization === 'ru' ? GetMessage('CRM_EXCH1C_UPDATE_PS_BILL_RUB') : ' '), array('sale', '1C_SALE_ACCOUNT_NUMBER_SHOP_PREFIX', 'CRM_'), array('sale', '1C_SALE_GROUP_PERMISSIONS', ''), array('sale', '1C_SALE_SITE_LIST', $currentSiteID), array('sale', '1C_SALE_USE_ZIP', 'Y')); foreach ($arExch1cOptions as $optionInfo) { COption::SetOptionString($optionInfo[0], $optionInfo[1], $optionInfo[2]); } // set sale option "Upon receipt of payment, change order status to ..." COption::SetOptionString("sale", "status_on_paid", "P"); COption::SetOptionString('crm', 'crm_exch1c_enable', 'N'); $arBaseCatalogGroup = CCatalogGroup::GetBaseGroup(); $priceTypeId = intval($arBaseCatalogGroup['ID']); unset($arBaseCatalogGroup); COption::SetOptionInt('crm', 'selected_catalog_group_id', $priceTypeId); // fill invoice export profiles $arPersonTypeIds = CCrmPaySystem::getPersonTypeIDs(); if (isset($arPersonTypeIds['COMPANY']) && isset($arPersonTypeIds['CONTACT'])) {
static function GroupERights($iblockID) { if (CIBlock::GetArrayByID($iblockID, "RIGHTS_MODE") === "E") { return; } $arGroups = self::GetGroups($iblockID); foreach ($arGroups as $groupID => $group) { foreach (self::$ops as $op => $opTrans) { $arGroups[$groupID]["Operations"][$op] = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_GROUP, $groupID, 'files', $op); } } $arTasks = CWebDavIblock::GetTasks(); // set e rights $arFields = array('RIGHTS_MODE' => 'E', 'GROUP_ID' => array()); $ib = new CIBlock(); $res = $ib->Update($iblockID, $arFields); $ibr = new CIBlockRights($iblockID); $rights = array(); $rights['n0'] = array('GROUP_CODE' => 'G1', 'DO_CLEAN' => 'Y', 'TASK_ID' => $arTasks['X']); // admins $rights['n1'] = array('GROUP_CODE' => 'G2', 'DO_CLEAN' => 'Y', 'TASK_ID' => $arTasks['D']); // nobody $ibr->SetRights($rights); foreach ($arGroups as $groupID => $group) { $sectionID = $group['SECTION']; $ibrs = new CIBlockSectionRights($iblockID, $sectionID); $rights = array(); $i = 0; foreach ($group["Operations"] as $op => $subj) { // 'Operations' => // array // 'view' => string 'A' (length=1) // 'write_limited' => string 'Z' (length=1) // 'bizproc' => null // 'write' => string 'Z' (length=1) // // A>Только владелец группы // E>Владелец группы и модераторы группы // K>Все члены группы // L>Авторизованные пользователи // N>Все посетители if ($subj) { if ($subj == "N") { $sSubj = "G2"; } elseif ($subj == "L") { $sSubj = "AU"; } else { $sSubj = "SG{$groupID}_{$subj}"; } $rights[$sSubj] = $arTasks[self::$ops[$op]]; if (self::$ops[$op] == 'E') { $rights["CR"] = $arTasks['W']; } } } $rights["SG{$groupID}_A"] = $arTasks["X"]; // admin of group $arRights = array(); $i = 0; foreach ($rights as $subj => $task) { $arRights['n' . $i++] = array('GROUP_CODE' => $subj, 'TASK_ID' => $task, 'DO_CLEAN' => 'NOT'); } $ibrs->SetRights($arRights); } }
function SetRootSection($id, $force = false, $enableRedirect = true) { $id = intVal($id); $this->CACHE_PATH = $this->cachePathBase; $this->arRootSection = false; if ($id <= 0) { return true; } if ($force && isset(self::$arSectionCache[$id])) { unset(self::$arSectionCache[$id]); } if (isset(self::$arSectionCache[$id])) { $this->arRootSection = self::$arSectionCache[$id]; } elseif (!$force) { $res = $this->GetCache($id, "root_section", true); if ($res["result"]) { $this->arRootSection = $res["data"]; } } if ($this->arRootSection === false) { $arFilter = array("IBLOCK_ID" => $this->IBLOCK_ID, "ID" => $id, "CHECK_PERMISSIONS" => "N"); $db_res = CIBlockSection::GetList(array(), $arFilter, false, array_merge(array('UF_USE_EXT_SERVICES'), self::getUFNamesForSectionLink())); if ($db_res && ($res = $db_res->Fetch())) { //fixes if (CModule::IncludeModule('socialnetwork')) { // fix an old bug, folder don't contain group name if ($res['NAME'] == GetMessage("SONET_GROUP_PREFIX")) { $arGroup = CSocNetGroup::GetByID(intval($res['SOCNET_GROUP_ID'])); if ($arGroup !== false) { $res['NAME'] = GetMessage("SONET_GROUP_PREFIX") . $arGroup['NAME']; $ibs = new CIBlockSection(); $ibs->Update($res['ID'], array('NAME' => $res['NAME'])); } } } // fix incorrect iblock settings for socnet if (!$this->_symlinkMode && IsModuleInstalled("bizproc") && CIBlock::GetArrayByID($this->IBLOCK_ID, "BIZPROC") == "N") { $ib = new CIBlock(); $res = $ib->Update($this->IBLOCK_ID, array('BIZPROC' => 'Y', 'WORKFLOW' => 'N')); if ($enableRedirect) { LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam()); } } //fixes end $this->arRootSection = $res; self::$arSectionCache[$id] = $res; $arTags = array("iblock_id_" . $this->IBLOCK_ID); $this->SetCache($id, "root_section", self::$arSectionCache[$id], $arTags, true); } else { return false; } } $this->CACHE_PATH = $this->cachePathBase . intval($id) . '/'; return true; }
function GetIBlockXML_ID($IBLOCK_ID, $XML_ID = false) { if ($XML_ID === false) { $IBLOCK_ID = intval($IBLOCK_ID); if ($IBLOCK_ID > 0) { $obIBlock = new CIBlock(); $rsIBlock = $obIBlock->GetList(array(), array("ID" => $IBLOCK_ID)); if ($arIBlock = $rsIBlock->Fetch()) { $XML_ID = $arIBlock["XML_ID"]; } else { return ""; } } else { return ""; } } if (strlen($XML_ID) <= 0) { $XML_ID = $IBLOCK_ID; $obIBlock = new CIBlock(); $rsIBlock = $obIBlock->GetList(array(), array("XML_ID" => $XML_ID)); while ($rsIBlock->Fetch()) { $XML_ID = md5(uniqid(mt_rand(), true)); $rsIBlock = $obIBlock->GetList(array(), array("XML_ID" => $XML_ID)); } $obIBlock->Update($IBLOCK_ID, array("XML_ID" => $XML_ID)); } return $XML_ID; }
{ $xCatNode = $catalogs[$i]; $IBLOCK_XML_ID = $xCatNode->GetAttribute($nameUTF['ID']); $IBLOCK_NAME = $xCatNode->GetAttribute($nameUTF['Name']); $IBLOCK_DESC = $xCatNode->GetAttribute($nameUTF['Description']); $res = CIBlock::GetList(array(), Array("=TYPE" => $IBLOCK_TYPE_ID, "=XML_ID"=>$IBLOCK_XML_ID, 'CHECK_PERMISSIONS' => 'Y', 'MIN_PERMISSION' => 'W')); $bNewRecord_tmp = False; if ($res_arr = $res->Fetch()) { $IBLOCK_ID = $res_arr["ID"]; $res = $ib->Update($IBLOCK_ID, Array( "NAME"=>$IBLOCK_NAME, "TMP_ID"=>$tmpid, "DESCRIPTION"=>$IBLOCK_DESC ) ); } elseif ($USER->IsAdmin()) { $bNewRecord_tmp = True; $arFields = Array( "ACTIVE"=>"Y", "NAME"=>$IBLOCK_NAME, "XML_ID"=>$IBLOCK_XML_ID, "TMP_ID"=>$tmpid, "IBLOCK_TYPE_ID"=>$IBLOCK_TYPE_ID, "LID" => $SITE_ID, "WORKFLOW" => "N",
} if ($tasksIblockId == 0) { $tasksIblockId = WizardServices::ImportIBlockFromXML(WIZARD_SERVICE_RELATIVE_PATH . "/xml/" . LANGUAGE_ID . "/tasks.xml", $iblockCode, $iblockType, WIZARD_SITE_ID, array("1" => "X", "2" => "R", WIZARD_PORTAL_ADMINISTRATION_GROUP => "X")); $iblock = new CIBlock(); $arFields = array("CODE" => $iblockCode, "XML_ID" => $iblockCode); $iblock->Update($tasksIblockId, $arFields); } else { $arSites = array(); $db_res = CIBlock::GetSite($tasksIblockId); while ($res = $db_res->Fetch()) { $arSites[] = $res["LID"]; } if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iblock = new CIBlock(); $iblock->Update($tasksIblockId, array("LID" => $arSites)); } } } if (CModule::IncludeModule("forum")) { $forumCode = "intranet_tasks"; $dbRes = CForumNew::GetListEx(array(), array("SITE_ID" => WIZARD_SITE_ID, "XML_ID" => $forumCode)); if ($arRes = $dbRes->Fetch()) { $tasksForumId = $arRes["ID"]; } else { $arGroupID = array("GENERAL" => 0, "COMMENTS" => 0, "HIDDEN" => 0); $dbExistsGroup = CForumGroup::GetListEx(array(), array("LID" => LANGUAGE_ID)); while ($arExistsGroup = $dbExistsGroup->Fetch()) { foreach ($arGroupID as $xmlID => $ID) { if ($arExistsGroup["NAME"] == GetMessage($xmlID . "_GROUP_NAME")) { $arGroupID[$xmlID] = $arExistsGroup["ID"];
} } //--offers if ($IBLOCK_OFFERS_ID == false) { $permissions = array("1" => "X", "2" => "R"); $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "sale_administrator")); if ($arGroup = $dbGroup->Fetch()) { $permissions[$arGroup["ID"]] = 'W'; } $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "content_editor")); if ($arGroup = $dbGroup->Fetch()) { $permissions[$arGroup["ID"]] = 'W'; } $IBLOCK_OFFERS_ID = WizardServices::ImportIBlockFromXML($iblockXMLFileOffers, "clothes_offers", $iblockTypeOffers, WIZARD_SITE_ID, $permissions); $iblockID1 = WizardServices::ImportIBlockFromXML($iblockXMLFilePricesOffers, "clothes_offers", $iblockTypeOffers . "_prices", WIZARD_SITE_ID, $permissions); if ($IBLOCK_OFFERS_ID < 1) { return; } $_SESSION["WIZARD_OFFERS_IBLOCK_ID"] = $IBLOCK_OFFERS_ID; } else { $arSites = array(); $db_res = CIBlock::GetSite($IBLOCK_OFFERS_ID); while ($res = $db_res->Fetch()) { $arSites[] = $res["LID"]; } if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iblock = new CIBlock(); $iblock->Update($IBLOCK_OFFERS_ID, array("LID" => $arSites)); } }
$iblockID = false; if ($arIBlock = $rsIBlock->Fetch()) { $iblockID = $arIBlock["ID"]; } if ($iblockID == false) { $iblockID = WizardServices::ImportIBlockFromXML($iblockXMLFile, 'idea', $iblockType, WIZARD_SITE_ID, $permissions = array("1" => "X", "2" => "R", WIZARD_PORTAL_ADMINISTRATION_GROUP => "X", WIZARD_PERSONNEL_DEPARTMENT_GROUP => "W")); if ($iblockID < 1) { return; } //Iblock Section form settings $aFormOptions = array('tabs' => "edit1--#--" . GetMessage("IDEA_CATEGORY_EDIT_FORM_TAB_TITLE") . "--,--ID--#--ID--,--ACTIVE--#--" . GetMessage("IDEA_CATEGORY_EDIT_FORM_P_ACTIVE") . "--,--NAME--#--" . GetMessage("IDEA_CATEGORY_EDIT_FORM_P_NAME") . "--,--CODE--#--" . GetMessage("IDEA_CATEGORY_EDIT_FORM_P_CODE") . "--,--IBLOCK_SECTION_ID--#--" . GetMessage("IDEA_CATEGORY_EDIT_FORM_P_IBLOCK_SECTION_ID") . "--,--SORT--#--" . GetMessage("IDEA_CATEGORY_EDIT_FORM_P_SORT") . "--;--"); WizardServices::SetUserOption("form", "form_section_" . $iblockID, $aFormOptions, $common = true); WizardServices::SetIBlockFormSettings($iblockID, $aFormOptions); //IBlock fields settings $iblock = new CIBlock(); $arFields = array("ACTIVE" => "Y", "FIELDS" => array("SECTION_CODE" => array("IS_REQUIRED" => "Y", "DEFAULT_VALUE" => array("UNIQUE" => "Y", "TRANSLITERATION" => "Y", "TRANS_LEN" => 50, "TRANS_CASE" => "L", "TRANS_SPACE" => "_", "TRANS_OTHER" => "_", "TRANS_EAT" => "Y", "USE_GOOGLE" => "Y"))), "CODE" => $iblockCode, "XML_ID" => $iblockCode); $iblock->Update($iblockID, $arFields); } else { $arSites = array(); $db_res = CIBlock::GetSite($iblockID); while ($res = $db_res->Fetch()) { $arSites[] = $res["LID"]; } if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iblock = new CIBlock(); $iblock->Update($iblockID, array("LID" => $arSites)); } } CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/about/idea/index.php", array("IDEA_IBLOCK_CATEGORY" => $iblockID)); CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/include/feedback.php", array("IDEA_IBLOCK_CATEGORY" => $iblockID));
if ($letter > "W") { $arDBRights['n_' . $i++] = array("GROUP_CODE" => "G" . $group_id, "IS_INHERITED" => "N", "TASK_ID" => CIBlockRights::LetterToTask($letter)); } } } else { $obIBlockRights = new CIBlockRights($arIBlock["ID"]); $arDBRights = $obIBlockRights->GetRights(); } } //For existing iblock add rights to rule $arFields["RIGHTS_MODE"] = "E"; $arFields["RIGHTS"] = CListPermissions::MergeRights($arParams["~IBLOCK_TYPE_ID"], $arDBRights, $arPOSTRights); //Update existing or add new $ob = new CIBlock(); if ($arIBlock) { $res = $ob->Update($arIBlock["ID"], $arFields); if ($res) { $res = $arIBlock["ID"]; } } else { $res = $ob->Add($arFields); if ($res) { $obList = new CList($res); $obList->AddField(array("SORT" => 10, "NAME" => GetMessage("CC_BLLE_NAME_FIELD"), "IS_REQUIRED" => "Y", "MULTIPLE" => "N", "TYPE" => "NAME", "DEFAULT_VALUE" => "")); $obList->Save(); } } if ($res) { if (strlen($arFields["SOCNET_GROUP_ID"]) > 0 && CModule::IncludeModule('socialnetwork')) { CSocNetGroup::SetLastActivity($arFields["SOCNET_GROUP_ID"]); }
/** * «ависимость от добавлени¤ * @after testAdd */ public function testUpdate() { $this->_injectDutyCollector(); $this->assertNotEmpty($this->_iblockId); $this->assertNotEmpty($this->_propertyId); $this->assertNotEmpty($this->_sectionId); $arIblock = \CIBlock::GetArrayByID($this->_iblockId); $arIblock['NAME'] .= '2'; $name = $arIblock['NAME']; $iblock = new \CIBlock(); $updateResult = $iblock->Update($this->_iblockId, $arIblock); $this->assertTrue($updateResult, $this->errorMessage('error update result')); // дл¤ начала определ¤етс¤ просто как снимок $fixes = $this->_getCollectorFixes(UpdateProcess::className()); $this->assertEquals(count($fixes), 1, $this->errorMessage('having one fixing updates')); $this->assertEquals($fixes[0]['data']['iblock']['NAME'], $name, $this->errorMessage('fixing name change')); // фиксаци¤ изменений Module::getInstance()->commitDutyChanges(); }
/** * */ public function update() { $id = $this->getId(); if ($id) { $o = new \CIBlock(); $o->Update($id, $this->data); } }