public function testAdd() { $this->_injectDutyCollector(); $ibType = \CIBlockType::GetList()->Fetch(); $ib = new \CIBlock(); $ibId = $ib->Add(array('IBLOCK_TYPE_ID' => $ibType['ID'], 'NAME' => 'New Iblock', 'SITE_ID' => 's1')); $this->assertNotEmpty($ibId, $this->errorMessage('not create iblock id', array(':lastError' => $ib->LAST_ERROR))); $prop = new \CIBlockProperty(); $propId = $prop->Add(array('IBLOCK_ID' => $ibId, 'CODE' => 'propCode', 'NAME' => 'Property NAME')); $this->assertNotEmpty($propId, $this->errorMessage('not create property iblock id', array(':lastError' => $ib->LAST_ERROR))); $sec = new \CIBlockSection(); $secId = $sec->Add(array('IBLOCK_ID' => $ibId, 'NAME' => 'Iblock Section')); $this->assertNotEmpty($secId, $this->errorMessage('not create section iblock id', array(':lastError' => $ib->LAST_ERROR))); // ¬ итоге должны получитс¤ // данные по добавлению »Ѕ $this->assertNotEmpty($this->_getCollectorFixes(AddProcess::className(), IblockHandler::className())); // данные по добавлению свойства $this->assertNotEmpty($this->_getCollectorFixes(AddProcess::className(), IblockPropertyHandler::className())); // данные по добавлению секции $this->assertNotEmpty($this->_getCollectorFixes(AddProcess::className(), IblockSectionHandler::className())); $refFixes = $this->_getCollectorFixes('reference'); // фиксаци¤ изменений Module::getInstance()->commitDutyChanges(); // добавлены записи журнала обновлений (в базу) /** @var $logRecords AppliedChangesLogModel[] */ $logRecords = AppliedChangesLogModel::find(array('order' => array('id' => 'desc'), 'limit' => 10)); $this->assertTrue(count($logRecords) > 3); $iterationsCount = 0; foreach ($logRecords as $logRecord) { if ($logRecord->processName == Module::SPECIAL_PROCESS_FIX_REFERENCE) { continue; } if ($logRecord->processName != AddProcess::className()) { $this->throwError($this->errorMessage('last log records need been update process'), $logRecord->processName); } if (++$iterationsCount > 3) { break; } $data = $logRecord->updateData; switch ($logRecord->subjectName) { case IblockHandler::className(): (!$data['iblock'] || $data['iblock']['ID'] != $ibId) && $this->throwError($this->errorMessage('iblock not registered after update', array(':actual' => $data['iblock']['ID'], ':need' => $ibId))); break; case IblockPropertyHandler::className(): $data['ID'] != $propId && $this->throwError($this->errorMessage('property iblock not registered after update', array(':original' => $propId, ':actual' => $data['ID']))); break; case IblockSectionHandler::className(): $data['ID'] != $secId && $this->throwError($this->errorMessage('section iblock not registered after update', array(':original' => $secId, ':actual' => $data['ID']))); break; } } // добавлены три вида ссылок в фиксаци¤х $this->assertEquals(3, count($refFixes), $this->errorMessage('links expected count', array(':count' => 3))); $this->_iblockId = $ibId; $this->_propertyId = $propId; $this->_sectionId = $secId; }
/** * Создает инфоблок * * @param array $arFields * * @throws MigrationException */ protected function createIBlock(array $arFields) { if (empty($arFields['CODE'])) { throw new MigrationException('Unknown code information block'); } if ($this->isIBlockExists($arFields['CODE'])) { throw new MigrationException(sprintf('IBlock with code "%s" already exists', $arFields['CODE'])); } if (!($id = $this->iBlockGateway->Add($arFields))) { throw new MigrationException($this->iBlockGateway->LAST_ERROR); } $this->iblockId = $id; }
public function addIblockIfNotExists($fields) { $this->checkRequiredKeys(__METHOD__, $fields, array('CODE')); $iblockId = $this->getIblockId($fields['CODE']); if ($iblockId) { return $iblockId; } $default = array('ACTIVE' => 'Y', 'NAME' => '', 'CODE' => '', 'LIST_PAGE_URL' => '', 'DETAIL_PAGE_URL' => '', 'SECTION_PAGE_URL' => '', 'IBLOCK_TYPE_ID' => 'main', 'SITE_ID' => array('s1'), 'SORT' => 500, 'GROUP_ID' => array('2' => 'R'), 'VERSION' => 2, 'BIZPROC' => 'N', 'WORKFLOW' => 'N', 'INDEX_ELEMENT' => 'N', 'INDEX_SECTION' => 'N'); $fields = array_merge($default, $fields); $ib = new \CIBlock(); $iblockId = $ib->Add($fields); if ($iblockId) { return $iblockId; } $this->throwException(__METHOD__, $ib->LAST_ERROR); }
} } } if ($catalog == "Y" && CheckIBlockType("catalog", "Y")) { //This makes translation checker happy //$MY_MESS['IBLOCK_INSTALL_CATALOG_NAME'] //$MY_MESS['IBLOCK_INSTALL_CATALOG_SECTIONS_NAME'] //$MY_MESS['IBLOCK_INSTALL_CATALOG_ELEMENTS_NAME'] //$MY_MESS['IBLOCK_INSTALL_CATALOG_SECTION_NAME'] //$MY_MESS['IBLOCK_INSTALL_CATALOG_ELEMENT_NAME'] $sites = CSite::GetList($by, $order, array("ACTIVE" => "Y")); while ($site = $sites->Fetch()) { $MY_MESS = IncludeModuleLangFile(__FILE__, $site["LANGUAGE_ID"], true); $obBlock = new CIBlock(); $arFields = array("LID" => $site["LID"], "NAME" => GetMessage("IBLOCK_INSTALL_PRODUCTS"), "IBLOCK_TYPE_ID" => "catalog", "CODE" => "comp_catalog", "LIST_PAGE_URL" => "#SITE_DIR#/" . $catalog_dir . "/index.php", "DETAIL_PAGE_URL" => "#SITE_DIR#/" . $catalog_dir . "/index.php?ID=#ID#", "ELEMENTS_NAME" => $MY_MESS["IBLOCK_INSTALL_CATALOG_ELEMENTS_NAME"], "ELEMENT_NAME" => $MY_MESS["IBLOCK_INSTALL_CATALOG_ELEMENT_NAME"], "SECTIONS_NAME" => $MY_MESS["IBLOCK_INSTALL_CATALOG_SECTIONS_NAME"], "SECTION_NAME" => $MY_MESS["IBLOCK_INSTALL_CATALOG_SECTION_NAME"], "GROUP_ID" => array("2" => "R")); if ($id = $obBlock->Add($arFields)) { $obBlockProperty = new CIBlockProperty(); $arFields = array("IBLOCK_ID" => $id, "NAME" => GetMessage("IBLOCK_INSTALL_SIMILAR_PRODUCTS"), "CODE" => "ANALOG", "PROPERTY_TYPE" => "E", "MULTIPLE" => "Y", "LINK_IBLOCK_ID" => $id); $obBlockProperty->Add($arFields); } if (strlen($catalog_dir) > 0) { $source = $_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/iblock/install/public/catalog/"; $target = $site['ABS_DOC_ROOT'] . $site["DIR"] . $catalog_dir . "/"; if (file_exists($source)) { CheckDirPath($target); $dh = opendir($source); while ($file = readdir($dh)) { if ($file == "." || $file == "..") { continue; } if ($bReWriteAdditionalFiles_c || !file_exists($target . $file)) {
$cib = new CIBlock(); $cibp = new CIBlockProperty(); foreach ($data as &$_iblock_data) { $rsIBlock = $cib->GetList(false, array('CODE' => $_iblock_data['CODE'], 'TYPE' => $iBlockTypeID)); $arIBlock = $rsIBlock->Fetch(); if ($arIBlock['ID']) { if ($_POST['overwrite'] == '1') { // если инфоблоки перезаписываем, удалим имеющийся $cib->Delete($arIBlock['ID']); } else { // если инфблоки не перезаписываем, то пропускаем этот continue; } } // создание инфоблоков if (!$cib->Add(array('SITE_ID' => array($_iblock_data['LID']), 'CODE' => $_iblock_data['CODE'], 'EXTERNAL_ID' => $_iblock_data['EXTERNAL_ID'], 'XML_ID' => $_iblock_data['XML_ID'], 'IBLOCK_TYPE_ID' => $iBlockTypeID, 'NAME' => $_iblock_data['NAME'], 'ACTIVE' => $_iblock_data['ACTIVE'], 'SORT' => $_iblock_data['SORT'], 'LIST_PAGE_URL' => $_iblock_data['LIST_PAGE_URL'], 'SECTION_PAGE_URL' => $_iblock_data['SECTION_PAGE_URL'], 'DETAIL_PAGE_URL' => $_iblock_data['DETAIL_PAGE_URL'], 'PICTURE' => $_iblock_data['PICTURE'], 'DESCRIPTION' => $_iblock_data['DESCRIPTION'], 'DESCRIPTION_TYPE' => $_iblock_data['DESCRIPTION_TYPE'], 'RSS_ACTIVE' => $_iblock_data['RSS_ACTIVE'], 'RSS_TTL' => $_iblock_data['RSS_TTL'], 'RSS_FILE_ACTIVE' => $_iblock_data['RSS_FILE_ACTIVE'], 'RSS_FILE_LIMIT' => $_iblock_data['RSS_FILE_LIMIT'], 'RSS_FILE_DAYS' => $_iblock_data['RSS_FILE_DAYS'], 'RSS_YANDEX_ACTIVE' => $_iblock_data['RSS_YANDEX_ACTIVE'], 'INDEX_ELEMENT' => $_iblock_data['INDEX_ELEMENT'], 'INDEX_SECTION' => $_iblock_data['INDEX_SECTION'], 'WORKFLOW' => $_iblock_data['WORKFLOW'], 'SECTION_CHOOSER' => $_iblock_data['SECTION_CHOOSER'], 'VERSION' => $_iblock_data['VERSION'], 'EDIT_FILE_BEFORE' => $_iblock_data['EDIT_FILE_BEFORE'], 'EDIT_FILE_AFTER' => $_iblock_data['EDIT_FILE_AFTER']))) { $DB->Rollback(); ShowError(GetMessage('GREENSIGHT_IBLOCK_IMPORT_ERROR_IBLOCK_CREATE')); break 2; } $rsIBlock = $cib->GetList(false, array('CODE' => $_iblock_data['CODE'], 'TYPE' => $iBlockTypeID)); $arIBlock = $rsIBlock->Fetch(); // добавление свойств if (sizeof($_iblock_data['properties'])) { foreach ($_iblock_data['properties'] as &$_iblock_property) { $_property = array('CODE' => $_iblock_property['CODE'], 'XML_ID' => $_iblock_property['XML_ID'], 'IBLOCK_ID' => $arIBlock['ID'], 'NAME' => $_iblock_property['NAME'], 'ACTIVE' => $_iblock_property['ACTIVE'], 'SORT' => $_iblock_property['SORT'], 'PROPERTY_TYPE' => $_iblock_property['PROPERTY_TYPE'], 'MULTIPLE' => $_iblock_property['MULTIPLE'], 'DEFAULT_VALUE' => $_iblock_property['DEFAULT_VALUE'], 'ROW_COUNT' => $_iblock_property['ROW_COUNT'], 'COL_COUNT' => $_iblock_property['COL_COUNT'], 'LIST_TYPE' => $_iblock_property['LIST_TYPE'], 'MULTIPLE_CNT' => $_iblock_property['MULTIPLE_CNT'], 'FILE_TYPE' => $_iblock_property['FILE_TYPE'], 'SEARCHABLE' => $_iblock_property['SEARCHABLE'], 'FILTRABLE' => $_iblock_property['FILTRABLE'], 'LINK_IBLOCK_ID' => $_iblock_property['LINK_IBLOCK_ID'], 'WITH_DESCRIPTION' => $_iblock_property['WITH_DESCRIPTION'], 'VERSION' => $_iblock_property['VERSION'], 'USER_TYPE' => $_iblock_property['USER_TYPE']); // варианты значений свойств типа "список" if (sizeof($_iblock_property['list_values'])) { foreach ($_iblock_property['list_values'] as &$_list_value) { $_property['VALUES'][] = array('VALUE' => $_list_value['VALUE'], 'DEF' => $_list_value['DEF'], 'SORT' => $_list_value['SORT'], 'XML_ID' => $_list_value['XML_ID'], 'EXTERNAL_ID' => $_list_value['EXTERNAL_ID']); }
$SECTION_DETAIL_PICTURE_FILE_NAME = \Bitrix\Iblock\Template\Helper::convertArrayToModifiers($_POST["IPROPERTY_TEMPLATES"]["SECTION_DETAIL_PICTURE_FILE_NAME"]); $ELEMENT_PREVIEW_PICTURE_FILE_NAME = \Bitrix\Iblock\Template\Helper::convertArrayToModifiers($_POST["IPROPERTY_TEMPLATES"]["ELEMENT_PREVIEW_PICTURE_FILE_NAME"]); $ELEMENT_DETAIL_PICTURE_FILE_NAME = \Bitrix\Iblock\Template\Helper::convertArrayToModifiers($_POST["IPROPERTY_TEMPLATES"]["ELEMENT_DETAIL_PICTURE_FILE_NAME"]); $arFields["IPROPERTY_TEMPLATES"] = array("SECTION_META_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_META_TITLE"]["TEMPLATE"], "SECTION_META_KEYWORDS" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_META_KEYWORDS"]["TEMPLATE"], "SECTION_META_DESCRIPTION" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_META_DESCRIPTION"]["TEMPLATE"], "SECTION_PAGE_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_PAGE_TITLE"]["TEMPLATE"], "ELEMENT_META_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_META_TITLE"]["TEMPLATE"], "ELEMENT_META_KEYWORDS" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_META_KEYWORDS"]["TEMPLATE"], "ELEMENT_META_DESCRIPTION" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_META_DESCRIPTION"]["TEMPLATE"], "ELEMENT_PAGE_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_PAGE_TITLE"]["TEMPLATE"], "SECTION_PICTURE_FILE_ALT" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_PICTURE_FILE_ALT"]["TEMPLATE"], "SECTION_PICTURE_FILE_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_PICTURE_FILE_TITLE"]["TEMPLATE"], "SECTION_PICTURE_FILE_NAME" => $SECTION_PICTURE_FILE_NAME, "SECTION_DETAIL_PICTURE_FILE_ALT" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_DETAIL_PICTURE_FILE_ALT"]["TEMPLATE"], "SECTION_DETAIL_PICTURE_FILE_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["SECTION_DETAIL_PICTURE_FILE_TITLE"]["TEMPLATE"], "SECTION_DETAIL_PICTURE_FILE_NAME" => $SECTION_DETAIL_PICTURE_FILE_NAME, "ELEMENT_PREVIEW_PICTURE_FILE_ALT" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_PREVIEW_PICTURE_FILE_ALT"]["TEMPLATE"], "ELEMENT_PREVIEW_PICTURE_FILE_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_PREVIEW_PICTURE_FILE_TITLE"]["TEMPLATE"], "ELEMENT_PREVIEW_PICTURE_FILE_NAME" => $ELEMENT_PREVIEW_PICTURE_FILE_NAME, "ELEMENT_DETAIL_PICTURE_FILE_ALT" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_DETAIL_PICTURE_FILE_ALT"]["TEMPLATE"], "ELEMENT_DETAIL_PICTURE_FILE_TITLE" => $_POST["IPROPERTY_TEMPLATES"]["ELEMENT_DETAIL_PICTURE_FILE_TITLE"]["TEMPLATE"], "ELEMENT_DETAIL_PICTURE_FILE_NAME" => $ELEMENT_DETAIL_PICTURE_FILE_NAME); } $bCreateRecord = $ID <= 0; if (!$bVarsFromForm) { $res_log["NAME"] = $NAME; if ($ID > 0) { $res = $ib->Update($ID, $arFields); if (COption::GetOptionString("iblock", "event_log_iblock", "N") === "Y" && $res) { CEventLog::Log("IBLOCK", "IBLOCK_EDIT", "iblock", $ID, serialize($res_log)); } } else { $arFields["VERSION"] = $VERSION; $ID = $ib->Add($arFields); $res = $ID > 0; if (COption::GetOptionString("iblock", "event_log_iblock", "N") === "Y" && $res) { CEventLog::Log("IBLOCK", "IBLOCK_ADD", "iblock", $ID, serialize($res_log)); } } if (!$res) { $strWarning .= $ib->LAST_ERROR . "<br>"; $bVarsFromForm = true; } else { // RSS agent creation if ($RSS_FILE_ACTIVE == "Y") { CAgent::RemoveAgent("CIBlockRSS::PreGenerateRSS(" . $ID . ", false);", "iblock"); CAgent::AddAgent("CIBlockRSS::PreGenerateRSS(" . $ID . ", false);", "iblock", "N", IntVal($RSS_TTL) * 60 * 60, "", "Y"); } else { CAgent::RemoveAgent("CIBlockRSS::PreGenerateRSS(" . $ID . ", false);", "iblock");
/** * @var array $data * @var array $fields * @var bool $deleteIfExists */ protected function IblockCreate(array $data, array $fields = null, $deleteIfExists = false) { 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()) { if ($deleteIfExists) { $this->IblockDelete($name); $fire = true; } else { $id = $ob['ID']; } } else { $fire = true; } if ($fire) { $rsSite = \CSite::GetList($by = 'sort', $order = 'desc', ['DEFAULT' => 'Y']); $sites = []; while ($obSite = $rsSite->Fetch()) { $sites[] = $obSite['LID']; } $ib = new \CIBlock(); $id = $ib->Add(array_merge(['ACTIVE' => 'Y', 'CODE' => $name, 'XML_ID' => $name, 'LID' => $sites[0], 'LIST_PAGE_URL' => '', 'DETAIL_PAGE_URL' => '', 'SECTION_PAGE_URL' => '', 'CANONICAL_PAGE_URL' => '', 'SORT' => 500, 'INDEX_ELEMENT' => 'N', 'INDEX_SECTION' => 'N'], $data)); if ($id) { echo "Add {$name} iblock\r\n"; if ($id && $fields) { $this->IblockSetFields($name, $fields); } } else { throw new \Exception("Can't create {$name} iblock type"); } } return $id; }
protected function addIblock($arIblock) { $res = \CIBlock::GetList(array("ID" => "ASC"), array('TYPE' => $arIblock['IBLOCK_TYPE_ID'], "CODE" => $arIblock['CODE']), true); if ($arFindedIblock = $res->Fetch()) { $this->addMessage('Инфоблока ' . $arIblock["CODE"] . ' уже есть.', true); return $arFindedIblock['ID']; } else { $ib = new \CIBlock(); $iNewIblockId = false; if ($iNewIblockId = $ib->Add($arIblock)) { $this->addMessage("Инфоблок {$iNewIblockId} успешно добавлен.", true); } else { $this->addMessage($ib->LAST_ERROR); } unset($ib); return $iNewIblockId; } }
} $iblockCode = "car_photo_group_demo"; $photoGroupIBlockID = 0; $dbIBlock = CIBlock::GetList(array(), array("SITE_ID" => $arSite["SITE_ID"], "TYPE" => $photoIBlockTypeID, "CODE" => $iblockCode)); if ($arIBlock = $dbIBlock->Fetch()) { $photoGroupIBlockID = IntVal($arIBlock["ID"]); } else { $arFields = array("ACTIVE" => "Y", "NAME" => GetSocNetMessageLocal("SONET_I_IBLOCK_PHOTO_GROUP_NAME", $arSite["LANGUAGE_ID"]), "IBLOCK_TYPE_ID" => $photoIBlockTypeID, "CODE" => $iblockCode, "RSS_ACTIVE" => "N", "WORKFLOW" => "N", "INDEX_ELEMENT" => "N", "LID" => array($arSite["SITE_ID"])); $iblock = new CIBlock(); $dbUGroups = CGroup::GetList($by = "c_sort", $order = "asc"); while ($arUGroups = $dbUGroups->Fetch()) { if ($arUGroups["ANONYMOUS"] == "Y") { $arFields["GROUP_ID"][$arUGroups["ID"]] = "R"; } } $photoGroupIBlockID = $iblock->Add($arFields); if ($photoGroupIBlockID <= 0) { $errorString .= $iblock->LAST_ERROR; } } } } // ------------------ FILES ------------------------------- if (!function_exists("file_get_contents")) { function file_get_contents($filename) { $fd = fopen("{$filename}", "rb"); $content = fread($fd, filesize($filename)); fclose($fd); return $content; }
$iblockID = false; if ($arIBlock = $rsIBlock->Fetch()) { $iblockID = $arIBlock["ID"]; if (WIZARD_INSTALL_DEMO_DATA) { CIBlock::Delete($arIBlock["ID"]); $iblockID = false; } } if ($iblockID === false) {*/ $ob = new CIBlock(); $arFieldsL = array("NAME" => GetMessage("BIZPROC_DEMO1_ACCTS"), "IBLOCK_TYPE_ID" => "lists", "SORT" => 500, "WORKFLOW" => "N", "ELEMENTS_NAME" => GetMessage("BIZPROC_DEMO1_ELEMENTS_NAME"), "ELEMENT_NAME" => GetMessage("BIZPROC_DEMO1_ELEMENT_NAME"), "ELEMENT_ADD" => GetMessage("BIZPROC_DEMO1_ELEMENT_ADD"), "ELEMENT_EDIT" => GetMessage("BIZPROC_DEMO1_ELEMENT_EDIT"), "ELEMENT_DELETE" => GetMessage("BIZPROC_DEMO1_ELEMENT_DELETE"), "BIZPROC" => "Y", "SITE_ID" => array(WIZARD_SITE_ID), "RIGHTS_MODE" => "E", "RIGHTS" => array()); $resL = $ob->Add($arFieldsL); if ($resL) { $obList = new CList($resL); $obList->Save(); $arFields = false; $documentType = array("iblock", "CIBlockDocument", "iblock_" . $resL); include $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/lists/install/bizproc/templates/acct.php'; if (is_array($arFields)) { $arFields["DOCUMENT_TYPE"] = array("iblock", "CIBlockDocument", "iblock_" . $resL); $arFields["SYSTEM_CODE"] = "acct.php"; if (is_object($GLOBALS['USER'])) { $arFields["USER_ID"] = $GLOBALS['USER']->GetID(); } $arFields["MODIFIER_USER"] = new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser); try { CBPWorkflowTemplateLoader::Add($arFields);
private function InstallIblock() { if ($this->arResult["INSTALLATION"]["IBLOCK_INSTALL"]) { $arFields = array("ACTIVE" => "Y", "INDEX_ELEMENT" => "N", "WORKFLOW" => "N", "NAME" => GetMessage("IDEA_CATEGORY_INFOBLOCK_NAME"), "IBLOCK_TYPE_ID" => $this->arResult["INSTALLATION"]["IBLOCK_TYPE_ID"], "LID" => array(), "CODE" => "idea", "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"))), "GROUP_ID" => array("2" => "R")); foreach ($this->arResult["SETTINGS"]["SITE"] as $lid => $arSite) { $arFields["LID"][] = $lid; } $IB = new CIBlock(); if (!($IblockId = $IB->Add($arFields))) { $this->arResult["ERRORS"][] = $IB->LAST_ERROR; } $this->arResult["INSTALLATION"]["IBLOCK_ID"] = $IblockId; if (!$this->HaveError()) { $this->InstallIblockSectionSettings(); $this->InstallIblockSection(); } } }
function GetContent($arParams) { if (!CModule::IncludeModule('iblock')) { return false; } if ($_POST['library_resource_type'] != "folder") { //iblock $iblock_type = ''; $iblock_id = 0; if ($_POST['library_IBLOCK_TYPE'] != '') { $res = CIBlockType::GetByID($_POST['library_IBLOCK_TYPE']); if ($res_arr = $res->Fetch()) { $iblock_type = $res_arr["ID"]; } if ($iblock_type != '') { if ($_POST['library_NEW_IBLOCK'] == 'Y') { //new iblock $ib = new CIBlock(); $arFields = array("ACTIVE" => "Y", "VERSION" => 1, "LIST_PAGE_URL" => $arParams['path'], "DETAIL_PAGE_URL" => $arParams['path'] . 'element/view/#ID#/', "NAME" => $_POST['library_TITLE'], "IBLOCK_TYPE_ID" => $iblock_type, "LID" => array($arParams['site']), "SORT" => "500", "WORKFLOW" => "N", "BIZPROC" => "N", "SECTION_CHOOSER" => "L"); if (is_array($_POST['library_PERMISSION'])) { $arPerm = array(); foreach ($_POST['library_PERMISSION'] as $grp => $perm) { if ($perm == 'R' || $perm == 'U' || $perm == 'W') { $arPerm[$grp] = $perm; } if ($perm == 'U') { $arFields['BIZPROC'] = 'Y'; } } $arFields["GROUP_ID"] = $arPerm; } $iblock_id = $ib->Add($arFields); } elseif (intval($_POST['library_IBLOCK_ID']) > 0) { //existing iblock: need check permissions if (CIBlock::GetPermission($_POST['library_IBLOCK_ID']) >= "X") { $iblock_id = intval($_POST['library_IBLOCK_ID']); } } } } //forum for comments $forum_id = 0; if ($_POST['library_USE_COMMENTS'] == 'Y') { if ($_POST['library_NEW_FORUM'] == 'Y') { CModule::IncludeModule('forum'); //new forum $arFields = array("NAME" => GetMessage("library_wizard_forum_name") . " \"" . $_POST['library_TITLE'] . "\"", "SITES" => array($arParams['site'] => $arParams["path"] . "element/view/#PARAM2#/"), "ACTIVE" => "Y", "INDEXATION" => "N", "SORT" => 150, "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_TOPIC_TITLED" => "Y"); if (is_array($_POST['library_FORUM_PERMISSION'])) { $arPerm = array(); foreach ($_POST['library_FORUM_PERMISSION'] as $grp => $perm) { if ($perm == 'E' || $perm == 'M') { $arPerm[$grp] = $perm; } } $arFields["GROUP_ID"] = $arPerm; } $forum_id = CForumNew::Add($arFields); } elseif (intval($_POST['library_FORUM_ID']) > 0) { $forum_id = intval($_POST['library_FORUM_ID']); } } //file size $iUploadMaxFilesize = intval(ini_get('upload_max_filesize')); $iPostMaxSize = intval(ini_get('post_max_size')); $iUploadMaxFilesize = min($iUploadMaxFilesize, $iPostMaxSize); //bizproc templates if ($_POST['library_NEW_IBLOCK'] == 'Y' && $iblock_id > 0 && CModule::IncludeModule("bizproc")) { $documentType = array("webdav", "CIBlockDocumentWebdav", "iblock_" . $iblock_id); if (!function_exists("__wd_replace_user_and_groups")) { function __wd_replace_user_and_groups(&$val, $key, $params = array()) { if ($key == "MailText") { $val = str_replace("/company/personal/bizproc/{=Workflow:id}/", $params["path"], $val); } return true; } } if ($handle = opendir($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/bizproc/templates')) { $arr = array("path" => str_replace("//", "/", $arParams["path"] . "/webdav_bizproc_view/{=Document:ID}/")); while (false !== ($file = readdir($handle))) { if (!is_file($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/bizproc/templates/' . $file)) { continue; } $arFields = false; include $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/bizproc/templates/' . $file; array_walk_recursive($arFields["TEMPLATE"], "__wd_replace_user_and_groups", $arr); if ($file == "status.php") { $arFields["AUTO_EXECUTE"] = CBPDocumentEventType::Create; } if (is_array($arFields)) { $arFields["DOCUMENT_TYPE"] = $documentType; $arFields["SYSTEM_CODE"] = $file; if (is_object($GLOBALS['USER'])) { $arFields["USER_ID"] = $GLOBALS['USER']->GetID(); } try { CBPWorkflowTemplateLoader::Add($arFields); } catch (Exception $e) { } } } closedir($handle); } } $s = '<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?> <?$APPLICATION->IncludeComponent("bitrix:webdav", ".default", array( "RESOURCE_TYPE" => "IBLOCK", "IBLOCK_TYPE" => "' . EscapePHPString($iblock_type) . '", "IBLOCK_ID" => "' . intval($iblock_id) . '", "NAME_FILE_PROPERTY" => "FILE", "REPLACE_SYMBOLS" => "N", "USE_AUTH" => "Y", "UPLOAD_MAX_FILESIZE" => "' . $iUploadMaxFilesize . '", "UPLOAD_MAX_FILE" => "4", "SEF_MODE" => "Y", "SEF_FOLDER" => "' . EscapePHPString($arParams["path"]) . '", "AJAX_MODE" => "N", "AJAX_OPTION_SHADOW" => "Y", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "Y", "AJAX_OPTION_HISTORY" => "N", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "COLUMNS" => array( 0 => "NAME", 1 => "TIMESTAMP_X", 2 => "USER_NAME", 3 => "FILE_SIZE", 4 => "WF_STATUS_ID", 5 => "", ), "PAGE_ELEMENTS" => "50", "PAGE_NAVIGATION_TEMPLATE" => "", "STR_TITLE" => "' . EscapePHPString($_POST['library_TITLE']) . '", "SET_TITLE" => "Y", "DISPLAY_PANEL" => "N", "SHOW_TAGS" => "' . ($_POST['library_SHOW_TAGS'] == 'Y' ? 'Y' : 'N') . '", "TAGS_PAGE_ELEMENTS" => "' . (intval($_POST['library_TAGS_PAGE_ELEMENTS']) > 0 ? intval($_POST['library_TAGS_PAGE_ELEMENTS']) : 50) . '", "TAGS_PERIOD" => "", "TAGS_INHERIT" => "Y", "TAGS_FONT_MAX" => "30", "TAGS_FONT_MIN" => "14", "TAGS_COLOR_NEW" => "486DAA", "TAGS_COLOR_OLD" => "486DAA", "TAGS_SHOW_CHAIN" => "Y", "USE_COMMENTS" => "' . ($_POST['library_USE_COMMENTS'] == 'Y' ? 'Y' : 'N') . '", "FORUM_ID" => "' . intval($forum_id) . '", "PATH_TO_SMILE" => "/bitrix/images/forum/smile/", "USE_CAPTCHA" => "Y", "PREORDER" => "Y", "AJAX_OPTION_ADDITIONAL" => "", "SEF_URL_TEMPLATES" => array( "user_view" => "/company/personal/user/#USER_ID#/", "sections" => "#PATH#", "section_edit" => "folder/edit/#SECTION_ID#/#ACTION#/", "element" => "element/view/#ELEMENT_ID#/", "element_edit" => "element/edit/#ACTION#/#ELEMENT_ID#/", "element_history" => "element/history/#ELEMENT_ID#/", "element_history_get" => "element/historyget/#ELEMENT_ID#/#ELEMENT_NAME#", "element_upload" => "element/upload/#SECTION_ID#/", "help" => "help", "search" => "search/", ) ), false );?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>'; return $s; } else { $_REQUEST["library_FOLDER"] = strtolower(str_replace("//", "/", "/" . $_REQUEST["library_FOLDER"] . "/")); CheckDirPath($_SERVER['DOCUMENT_ROOT'] . $_REQUEST["library_FOLDER"], true); if (!empty($_REQUEST["library_FOLDER_PERMISSION"]) && is_array($_REQUEST["library_FOLDER_PERMISSION"])) { $GLOBALS["APPLICATION"]->SetFileAccessPermission($_REQUEST["library_FOLDER"], $_REQUEST["library_FOLDER_PERMISSION"]); } $s = '<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?> <?$APPLICATION->IncludeComponent("bitrix:webdav", ".default", array( "RESOURCE_TYPE" => "FOLDER", "FOLDER" => "' . EscapePHPString($_REQUEST["library_FOLDER"]) . '", "USE_AUTH" => "Y", "SEF_MODE" => "Y", "SEF_FOLDER" => "' . EscapePHPString($arParams["path"]) . '", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "COLUMNS" => array( 0 => "NAME", 1 => "FILE_SIZE", 2 => "TIMESTAMP_X", 4 => "", ), "SET_TITLE" => "Y" ), false );?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>'; return $s; } }
protected function addIblock($arIblock) { $res = CIBlock::GetList( Array(), Array( 'TYPE'=>$arIblock['IBLOCK_TYPE_ID'], "CODE"=>$arIblock['CODE'] ), true ); if($arFindedIblock = $res->Fetch() ){ $this->iblockIdByCode[$arFindedIblock['CODE']] = $arFindedIblock['ID']; echo 'Инфоблока '.$arIblock["CODE"].' уже есть.'; }else { echo 'Инфоблок не найден.'; $ib = new CIBlock; if ($this->iblockIdByCode[$arIblock['CODE']] = $ib->Add($arIblock)) echo 'Инфоблок успешно добавлен.'; else echo $ib->LAST_ERROR; unset($ib); } }
private static function createIBlock($iblockType, $iblock, $pictureType, $picture, $siteId = null) { if (is_null($siteId)) { $siteId = \CSite::GetDefSite(); } $db = \CIBlock::GetList(array(), array("IBLOCK_TYPE_ID" => $iblockType, "CODE" => $iblock["CODE"], "CHECK_PERMISSIONS" => "N", "SITE_ID" => $siteId)); if ($res = $db->Fetch()) { return $res["ID"]; } $fields = array("NAME" => $iblock["NAME"], "DESCRIPTION" => $iblock["DESCRIPTION"], "IBLOCK_TYPE_ID" => $iblockType, "SORT" => $iblock["SORT"], "CODE" => $iblock["CODE"], "WORKFLOW" => "N", "ELEMENTS_NAME" => $iblock["ELEMENTS_NAME"], "ELEMENT_NAME" => $iblock["ELEMENT_NAME"], "ELEMENT_ADD" => $iblock["ELEMENT_ADD"], "ELEMENT_EDIT" => $iblock["ELEMENT_EDIT"], "ELEMENT_DELETE" => $iblock["ELEMENT_DELETE"], "SECTIONS_NAME" => $iblock["SECTIONS_NAME"], "SECTION_NAME" => $iblock["SECTION_NAME"], "SECTION_ADD" => $iblock["SECTION_ADD"], "SECTION_EDIT" => $iblock["SECTION_EDIT"], "SECTION_DELETE" => $iblock["SECTION_DELETE"], "BIZPROC" => "Y", "SITE_ID" => array($siteId), "RIGHTS_MODE" => "E"); if ($iblock["SOCNET_GROUP_ID"]) { $fields["SOCNET_GROUP_ID"] = $iblock["SOCNET_GROUP_ID"]; } static $exts = array("image/jpeg" => "jpg", "image/png" => "png", "image/gif" => "gif"); if (!empty($picture) && isset($exts[$pictureType])) { $fn = \CTempFile::GetFileName(); Main\IO\Directory::createDirectory($fn); $fn .= md5(mt_rand()) . "." . $exts[$pictureType]; $f = fopen($fn, "wb"); fwrite($f, $picture); fclose($f); $fields["PICTURE"] = \CFile::MakeFileArray($fn); } $ob = new \CIBlock(); $res = $ob->Add($fields); if ($res) { self::createIBlockRights($res); $list = new \CList($res); if (isset($iblock["~NAME_FIELD"])) { $list->UpdateField("NAME", $iblock["~NAME_FIELD"]); } $list->Save(); \CLists::setLiveFeed(1, $res); return $res; } return 0; }
/** * Add tables to the infoblock * * @return bool */ public function installIblock() { $db_iblock_type = CIBlockType::GetList(array(), array('=ID' => CODE_IBLOCK_TYPE)); if (!($ar_iblock_type = $db_iblock_type->Fetch())) { global $DB; $obBlocktype = new CIBlockType(); $DB->StartTransaction(); $res = $obBlocktype->Add(array('ID' => CODE_IBLOCK_TYPE, 'SECTIONS' => 'Y', 'IN_RSS' => 'N', 'SORT' => 500, 'LANG' => array('ru' => array('NAME' => 'Сервисы', 'SECTION_NAME' => 'Разделы', 'ELEMENT_NAME' => 'Страницы'), 'en' => array('NAME' => 'Servies', 'SECTION_NAME' => 'Sections', 'ELEMENT_NAME' => 'Pages')))); if (!$res) { $DB->Rollback(); echo 'Error: ' . $obBlocktype->LAST_ERROR . '<br>'; } else { $DB->Commit(); } } $idBlock = 0; $res = CIBlock::GetList(array(), array('TYPE' => CODE_IBLOCK_TYPE, 'SITE_ID' => SITE_ID, 'ACTIVE' => 'Y', "CODE" => CODE_IBLOCK_CODE), true); if (!($ar_res = $res->Fetch())) { $ib = new CIBlock(); $arFields = array("ACTIVE" => 'Y', "NAME" => 'СЕО страницы', "CODE" => CODE_IBLOCK_CODE, "LIST_PAGE_URL" => "", "DETAIL_PAGE_URL" => "", "IBLOCK_TYPE_ID" => CODE_IBLOCK_TYPE, "SITE_ID" => array(SITE_ID), "SORT" => '500', "GROUP_ID" => array("2" => "R")); $idBlock = $ib->Add($arFields); } else { $idBlock = $ar_res['ID']; } $PropID = 0; $properties = CIBlockProperty::GetList(array("sort" => "asc"), array("ACTIVE" => "Y", "IBLOCK_ID" => $idBlock, "CODE" => CODE_PROP_IBLOCK)); if (!($prop_fields = $properties->GetNext())) { $arFieldsProps = array("NAME" => "URL копия", "ACTIVE" => "Y", "SORT" => "500", "CODE" => CODE_PROP_IBLOCK, "PROPERTY_TYPE" => "S", "IS_REQUIRED" => 'Y', "IBLOCK_ID" => $idBlock); $ibp = new CIBlockProperty(); $PropID = $ibp->Add($arFieldsProps); } else { $PropID = $prop_fields['ID']; } global $DB; $DB->PrepareFields("b_citfact_uservars_group"); $arFieldsDB = array('NAME' => "'СЕО Страницы'", 'CODE' => "'" . CODE_GROUP_USER_VARS . "'"); $IDGroup = $DB->Insert("b_citfact_uservars_group", $arFieldsDB, $err_mess . __LINE__); $IDGroup = intval($IDGroup); $arFieldsDB = array('GROUP_ID' => "'" . $IDGroup . "'", 'NAME' => "'ID свойства в SEO'", 'CODE' => "'" . CODE_PROPS_SEO_BLOCK_USER_VARS . "'", 'VALUE' => "'" . $PropID . "'", 'DESCRIPTION' => "'Символьный код свойства в инфоблоке SEO Страниц'"); $DB->Insert("b_citfact_uservars", $arFieldsDB, $err_mess . __LINE__); $arFieldsDB = array('GROUP_ID' => "'" . $IDGroup . "'", 'NAME' => "'Инфоблок SEO'", 'CODE' => "'" . CODE_ID_SEO_BLOCK_USER_VARS . "'", 'VALUE' => "'" . $idBlock . "'", 'DESCRIPTION' => "'Инфоблок SEO'"); $DB->Insert("b_citfact_uservars", $arFieldsDB, $err_mess . __LINE__); $arFieldsDB = array('GROUP_ID' => "'" . $IDGroup . "'", 'NAME' => "'Редирект'", 'CODE' => "'" . CODE_IS_REDIRECT_SEO . "'", 'VALUE' => "'N'", 'DESCRIPTION' => "'Если установлен данный параметр, будет работать редирект из обычной страницы на сео-страницу'"); $DB->Insert("b_citfact_uservars", $arFieldsDB, $err_mess . __LINE__); return true; }
function DoInstall() { global $APPLICATION; if(!CModule::IncludeModule('iblock')) return false; //получаем тип инфоблока $iblockType = CIBlockType::GetList( array(), array( "ID" => "kaycom_ONEPLACESEO" ) ); //создаем, если такого нет if(!$iblockType = $iblockType->GetNext()){ $iT = new CIBlockType(); $iblockType["ID"] = $iT->Add( array( "ID" => "kaycom_ONEPLACESEO", "SECTIONS" => "N", "LANG" => array( "ru" => array( 'NAME' => GetMessage("kaycom.oneplaceseo_IBLOCK_TYPE_NAME"), ) ) ) ); } //если не создался, выходим if(!$iblockType["ID"]){ return false; } //получаем список всех сайтов $arSites = array(); $rsSites = CSite::GetList($by="sort", $order="desc", Array("ACTIVE" => "Y")); while ($arSite = $rsSites->Fetch()){ $arSites[] = $arSite["ID"]; } //пытаемся найти инфоблок в нашем типе инфоблока $iblocks = CIBlock::GetList( array(), array( "TYPE" => "kaycom_ONEPLACESEO", "CODE" => "kaycom_ONEPLACESEO" ) ); //если нет - создаем инфоблок с заданным набором полей if(!$iblock = $iblocks->GetNext()){ $ib = new CIBlock(); $iblock["ID"] = $ib->Add( array( "ACTIVE" => "Y", "NAME" => GetMessage("kaycom.oneplaceseo_IBLOCK_TYPE_NAME"), "CODE" => "kaycom_ONEPLACESEO", "LIST_PAGE_URL" => "", "DETAIL_PAGE_URL" => "", "IBLOCK_TYPE_ID" => "kaycom_ONEPLACESEO", "SITE_ID" => $arSites, "SORT" => 10, "WORKFLOW" => "N", "EDIT_FILE_AFTER" => (strpos (SM_VERSION, '12')!==false ? "/bitrix/modules/".$this->MODULE_ID."/admin/iblock_element_edit.php" : "") // TODO: добавить файл редактирования для 11 версии ) ); $ibp = new CIBlockProperty; foreach(array("TITLE", "KEYWORDS", "DESCRIPTION") as $PROP_CODE){ $ibp->Add( Array( "NAME" => GetMessage("kaycom.oneplaceseo_PROP_".$PROP_CODE), "ACTIVE" => "Y", "SORT" => 10 * $cnt++, "CODE" => $PROP_CODE, "PROPERTY_TYPE" => "S", "MULTIPLE" => "N", "IBLOCK_ID" => $iblock["ID"] ) ); } } $this->InstallFiles(); $this->InstallDB(); RegisterModule(self::MODULE_ID); RegisterModuleDependences("main", "OnEpilog", "kaycom.oneplaceseo", "CKaycomOneplaceseo", "onPageLoad"); }
/** * @param $arIBlockFields * @param bool $bFailOnNonExist * @return mixed */ public function getTestIBlock($arIBlockFields, $bFailOnNonExist = false) { $arTestIBType = $this->getTestIBlockType(); if (!array_key_exists('CODE', $arIBlockFields)) { $this->fail('Error: can`t create'); } if (!array_key_exists('NAME', $arIBlockFields)) { $arIBlockFields['NAME'] = $arIBlockFields['CODE']; } if (array_key_exists($arIBlockFields['CODE'], self::$_arTestIBlocks)) { return self::$_arTestIBlocks[$arIBlockFields['CODE']]; } $rsTestIBlock = \CIBlock::GetList(array(), array('CODE' => $arIBlockFields['CODE'], 'IBLOCK_TYPE_ID' => $arTestIBType['ID'])); $arTestIBlock = $rsTestIBlock->Fetch(); if (!$arTestIBlock) { if ($bFailOnNonExist === true) { $this->fail('Error: infoblock "' . $arIBlockFields['CODE'] . '" does not exist'); } $arIBlockFieldsDef = array('ACTIVE' => 'Y', 'LIST_PAGE_URL' => '', 'DETAIL_PAGE_URL' => '', 'IBLOCK_TYPE_ID' => $arTestIBType['ID'], 'SITE_ID' => $this->getBXSitesList(), 'SORT' => 100, 'DESCRIPTION' => 'OpenBX: infoblock for unit testing', 'GROUP_ID' => array('2' => 'W')); $arIBlockFields = array_merge($arIBlockFieldsDef, $arIBlockFields); /** @global \CDatabase $DB */ global $DB; $DB->StartTransaction(); $obIBlock = new \CIBlock(); $newIBlockID = $obIBlock->Add($arIBlockFields); if (!$newIBlockID) { $DB->Rollback(); $this->fail('Error: ' . $obIBlock->LAST_ERROR); } else { $DB->Commit(); $rsTestIBlock = \CIBlock::GetList(array(), array('CODE' => $arIBlockFields['CODE'], 'IBLOCK_TYPE_ID' => $arTestIBType['ID'])); $arTestIBlock = $rsTestIBlock->Fetch(); if (!$arTestIBlock) { $this->fail('Error: Can`t get just created infoblock'); } } } self::$_arTestIBlocks[$arIBlockFields['CODE']] = $arTestIBlock; return self::$_arTestIBlocks[$arIBlockFields['CODE']]; }
/** * * 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; }
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; }
public static function CreateCatalog($originatorID = '', $name = '', $siteID = null) { if (!is_string($originatorID) || strlen($originatorID) == 0) { $originatorID = null; } if ($siteID == null) { $siteID = SITE_ID; } $langID = LANGUAGE_ID; $dbSite = CSite::GetById($siteID); if ($arSite = $dbSite->Fetch()) { $langID = $arSite['LANGUAGE_ID']; } $result = true; //check type type $typeID = self::GetCatalogTypeID(); //$rsIBlockTypes = CIBlockType::GetByID($typeID); // CIBlockType::GetByID() is unstable $rsIBlockTypes = CIBlockType::GetList(array(), array("=ID" => $typeID)); if (!$rsIBlockTypes->Fetch()) { $iblocktype = new CIBlockType(); $result = $iblocktype->Add(array('ID' => $typeID, 'SECTIONS' => 'Y', 'IN_RSS' => 'N', 'SORT' => 100, 'LANG' => array($langID => array('NAME' => GetMessage('CRM_PRODUCT_CATALOG_TYPE_TITLE'), 'SECTION_NAME' => GetMessage('CRM_PRODUCT_CATALOG_SECTION_NAME'), 'ELEMENT_NAME' => GetMessage('CRM_PRODUCT_CATALOG_PRODUCT_NAME'))))); if (!$result) { self::RegisterError($iblocktype->LAST_ERROR); return false; } } //echo 'Error: '.$obBlocktype->LAST_ERROR.'<br/>'; $arSite = array(); $sites = CSite::GetList($by = 'sort', $order = 'desc', array('ACTIVE' => 'Y')); while ($site = $sites->Fetch()) { $arSite[] = $site['LID']; } //creation of iblock $iblock = new CIBlock(); $iblockID = $iblock->Add(array('NAME' => isset($name[0]) ? $name : GetMessage('CRM_PRODUCT_CATALOG_TITLE'), 'ACTIVE' => 'Y', 'IBLOCK_TYPE_ID' => $typeID, 'LID' => $siteID, 'SORT' => 100, 'XML_ID' => 'crm_external_' . $originatorID, 'INDEX_ELEMENT' => 'N', 'WORKFLOW' => 'N', 'BIZPROC' => 'N', 'VERSION' => 1, 'GROUP_ID' => array(2 => 'R'))); if ($iblockID === false) { self::RegisterError($iblock->LAST_ERROR); return false; } //echo 'Error: '.$iblock->LAST_ERROR.'<br/>'; //creation of catalog $result = CCrmCatalog::Add(array('ID' => $iblockID, 'ORIGINATOR_ID' => $originatorID)); if ($result === false) { self::RegisterError('Catalog creation error'); return false; } return $iblockID; }
} $ib = new CIBlock(); $db_sites = CSite::GetList($lby = "sort", $lorder = "asc"); while ($ar_sites = $db_sites->Fetch()) { if ($ar_sites["ACTIVE"] == "Y") { $arFields["LID"][] = $ar_sites["LID"]; } $arSites[] = $ar_sites; } if (empty($arFields["LID"])) { $arFields["LID"][] = $ar_sites[0]["LID"]; } if (!empty($arUGroupsEx)) { $arFields["GROUP_ID"] = $arUGroupsEx; } $SOCNET_ID = $ib->Add($arFields); if ($SOCNET_ID <= 0) { $strWarning .= $ib->LAST_ERROR . "<br>"; $bVarsFromForm = true; $DB->Rollback(); } else { $DB->Commit(); $_REQUEST["new_socnet_iblock_name"] = ""; $_REQUEST["new_socnet_iblock"] = "created"; COption::SetOptionString("wiki", "socnet_iblock_type_id", $IBLOCK_TYPE_ID); COption::SetOptionString("wiki", "socnet_iblock_id", $SOCNET_ID); COption::SetOptionString("wiki", "socnet_enable", "Y"); CWikiSocnet::EnableSocnet(true); } } }
$lastId = $list[$variant] = CIBlockPropertyEnum::Add(array('PROPERTY_ID' => $idProperty, 'VALUE' => $variant)); if (!$lastId) { throw new Exception($DB->db_Error); } } break; case "E": // Привязка к элементу $arSourceIblockData = CIBlock::GetArrayByID($idIBlock); $sites = array(); $rsSites = \Bitrix\Main\SiteTable::getList(); while ($arSite = $rsSites->fetch()) { $sites[] = $arSite['LID']; } $iblock = new CIBlock(); $handbookIblockId = $iblock->Add(array("ACTIVE" => 'Y', "NAME" => $propertyData['NAME'], "SITE_ID" => $sites, "IBLOCK_TYPE_ID" => $arSourceIblockData['IBLOCK_TYPE_ID'])); if (!$handbookIblockId) { throw new Exception($iblock->LAST_ERROR); } $iblockElement = new CIBlockElement(); $arPropertyId = array(); foreach ($variants as $variant) { $lastId = $list[$variant] = $iblockElement->Add(array("ACTIVE" => "Y", 'IBLOCK_ID' => $handbookIblockId, 'NAME' => $variant)); if (!$lastId) { throw new Exception($iblockElement->LAST_ERROR); } } $property = new CIBlockProperty(); $property->Update($idProperty, array('LINK_IBLOCK_ID' => $handbookIblockId)); break; }
$arResult["ErrorMessage"] .= $e; } $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);
} $arFields = array( 'SITE_ID' => $arCurrentIBlocks[$intIBlockID]['SITE_ID'], 'IBLOCK_TYPE_ID' => $arIBlockInfo['OFFERS_TYPE'], 'NAME' => $arIBlockInfo['OFFERS_NAME'], 'ACTIVE' => 'Y', 'GROUP_ID' => $arParentRights, 'WORKFLOW' => 'N', 'BIZPROC' => 'N', "LIST_PAGE_URL" => '', "SECTION_PAGE_URL" => '', "DETAIL_PAGE_URL" => '#PRODUCT_URL#', "INDEX_SECTION" => "N", ); $obIBlock = new CIBlock(); $mxOffersID = $obIBlock->Add($arFields); if ($mxOffersID === false) { $boolFlag = false; $strWarning .= Loc::getMessage( 'CAT_IBLOCK_OFFERS_ERR_IBLOCK_ADD', array( '#PRODUCT#' => $arCurrentIBlocks[$intIBlockID]['INFO'], '#ERR#' => $obIBlock->LAST_ERROR ) ).'<br />'; } else { $arResultNewCatalogItem = array( 'INFO' => '['.$arFields['IBLOCK_TYPE_ID'].'] '.htmlspecialcharsbx($arFields['NAME']).' ('.implode(' ',$arCurrentIBlocks[$intIBlockID]['SITE_ID']).')',
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; }
public function addIblock($fields) { $default = array('ACTIVE' => 'Y', 'NAME' => '', 'CODE' => '', 'LIST_PAGE_URL' => '', 'DETAIL_PAGE_URL' => '', 'SECTION_PAGE_URL' => '', 'IBLOCK_TYPE_ID' => 'main', 'SITE_ID' => array('s1'), 'SORT' => 500, 'GROUP_ID' => array('2' => 'R'), 'VERSION' => 2, 'BIZPROC' => 'N', 'WORKFLOW' => 'N', 'INDEX_ELEMENT' => 'N', 'INDEX_SECTION' => 'N'); $fields = array_replace_recursive($default, $fields); $ib = new \CIBlock(); $iblockId = $ib->Add($fields); if ($iblockId) { return $iblockId; } $this->throwException(__METHOD__, $ib->LAST_ERROR); }
{ $arFields['FIELDS'] = array( 'CODE' => array( 'DEFAULT_VALUE' => array( 'TRANSLITERATION' => 'Y', ), ), 'SECTION_CODE' => array( 'DEFAULT_VALUE' => array( 'TRANSLITERATION' => 'Y', ), ) ); } $IBLOCK_ID = $ib->Add($arFields); $res = ($IBLOCK_ID>0); } else $res = false; if(!$res) { $strImportErrorMessage .= str_replace("#ERROR#", $ib->LAST_ERROR, str_replace("#NAME#", "[".$IBLOCK_ID."] \"".$IBLOCK_NAME."\" (".$IBLOCK_XML_ID.")", GetMessage("CICML_ERROR_ADDING_CATALOG"))).".<br>"; $STT_CATALOG_ERROR++; } else { $boolIBlockTranslit = $USE_TRANSLIT; $boolTranslitElement = false; $boolTranslitSection = false;
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); }
$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"]); } //Clear components cache $CACHE_MANAGER->ClearByTag("lists_list_" . $res); $CACHE_MANAGER->ClearByTag("lists_list_any"); $CACHE_MANAGER->CleanDir("menu"); $tab_name = $arResult["FORM_ID"] . "_active_tab";
/** * */ public function addNewInfoblock() { $data = $this->generateData(); $o = new \CIBlock(); $id = $o->Add($data); $data['ID'] = $id; $this->data = $data; $this->process(); }