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;
 }
示例#3
0
 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);
 }
示例#4
0
         }
     }
 }
 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']);
                 }
示例#6
0
     $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");
示例#7
0
 /**
  * @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;
 }
示例#8
0
 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;
    }
示例#10
0
 	$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);
示例#11
0
 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();
         }
     }
 }
示例#12
0
    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;
        }
    }
示例#13
0
    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);

        }
    }
示例#14
0
 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;
 }
示例#15
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;
 }
示例#16
0
	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");
	}
示例#17
0
 /**
  * @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']];
 }
示例#18
0
 /**
  *
  * 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;
 }
示例#19
0
文件: cml2.php 项目: nProfessor/Mytb
	function ImportMetaData($xml_root_id, $IBLOCK_TYPE, $IBLOCK_LID, $bUpdateIBlock = true)
	{
		global $APPLICATION;

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

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

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

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

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

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

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

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

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

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

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

		}

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

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

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

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

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

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

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

		return true;
	}
示例#20
0
 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;
 }
示例#21
0
         }
         $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);
         }
     }
 }
示例#22
0
             $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;
 }
示例#23
0
                     $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);
示例#24
0
						}
						$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']).')',
示例#25
0
文件: cml2.php 项目: nycmic/bittest
 function ImportMetaData($xml_root_id, $IBLOCK_TYPE, $IBLOCK_LID, $bUpdateIBlock = true)
 {
     global $APPLICATION;
     $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("ID" => $xml_root_id), array("ID", "NAME", "ATTRIBUTES"));
     $ar = $rs->Fetch();
     if ($ar) {
         foreach (array(LANGUAGE_ID, "en", "ru") as $lang) {
             $mess = IncludeModuleLangFile(__FILE__, $lang, true);
             if ($ar["NAME"] === $mess["IBLOCK_XML2_COMMERCE_INFO"]) {
                 $this->mess = $mess;
                 $this->next_step["lang"] = $lang;
             }
         }
         $xml_root_id = $ar["ID"];
     }
     if ($ar && strlen($ar["ATTRIBUTES"]) > 0) {
         $info = unserialize($ar["ATTRIBUTES"]);
         if (is_array($info) && array_key_exists($this->mess["IBLOCK_XML2_SUM_FORMAT"], $info)) {
             if (preg_match("#" . $this->mess["IBLOCK_XML2_SUM_FORMAT_DELIM"] . "=(.);{0,1}#", $info[$this->mess["IBLOCK_XML2_SUM_FORMAT"]], $match)) {
                 $this->next_step["sdp"] = $match[1];
             }
         }
     }
     $meta_data_xml_id = false;
     $XML_ELEMENTS_PARENT = false;
     $XML_SECTIONS_PARENT = false;
     $XML_PROPERTIES_PARENT = false;
     $XML_SECTIONS_PROPERTIES_PARENT = false;
     $XML_PRICES_PARENT = false;
     $XML_STORES_PARENT = false;
     $XML_BASE_UNITS_PARENT = false;
     $XML_SECTION_PROPERTIES = false;
     $arIBlock = array();
     $this->next_step["bOffer"] = false;
     $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_CATALOG"]), array("ID", "ATTRIBUTES"));
     $ar = $rs->Fetch();
     if (!$ar) {
         $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_OFFER_LIST"]), array("ID", "ATTRIBUTES"));
         $ar = $rs->Fetch();
         $this->next_step["bOffer"] = true;
     }
     if (!$ar) {
         $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_OFFERS_CHANGE"]), array("ID", "ATTRIBUTES"));
         $ar = $rs->Fetch();
         $this->next_step["bOffer"] = true;
         $this->next_step["bUpdateOnly"] = true;
         $bUpdateIBlock = false;
     }
     if ($this->next_step["bOffer"] && !$this->bCatalog) {
         return GetMessage('IBLOCK_XML2_MODULE_CATALOG_IS_ABSENT');
     }
     if ($ar) {
         if (strlen($ar["ATTRIBUTES"]) > 0) {
             $attrs = unserialize($ar["ATTRIBUTES"]);
             if (is_array($attrs)) {
                 if (array_key_exists($this->mess["IBLOCK_XML2_UPDATE_ONLY"], $attrs)) {
                     $this->next_step["bUpdateOnly"] = $attrs[$this->mess["IBLOCK_XML2_UPDATE_ONLY"]] == "true" || intval($attrs[$this->mess["IBLOCK_XML2_UPDATE_ONLY"]]) ? true : false;
                 }
             }
         }
         $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $ar["ID"]));
         while ($ar = $rs->Fetch()) {
             if (isset($ar["VALUE_CLOB"])) {
                 $ar["VALUE"] = $ar["VALUE_CLOB"];
             }
             if ($ar["NAME"] == $this->mess["IBLOCK_XML2_ID"]) {
                 $arIBlock["XML_ID"] = ($this->use_iblock_type_id ? $IBLOCK_TYPE . "-" : "") . $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_CATALOG_ID"]) {
                 $arIBlock["CATALOG_XML_ID"] = ($this->use_iblock_type_id ? $IBLOCK_TYPE . "-" : "") . $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_NAME"]) {
                 $arIBlock["NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_DESCRIPTION"]) {
                 $arIBlock["DESCRIPTION"] = $ar["VALUE"];
                 $arIBlock["DESCRIPTION_TYPE"] = "html";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_POSITIONS"] || $ar["NAME"] == $this->mess["IBLOCK_XML2_OFFERS"]) {
                 $XML_ELEMENTS_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_PRICE_TYPES"]) {
                 $XML_PRICES_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_STORES"]) {
                 $XML_STORES_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BASE_UNITS"]) {
                 $XML_BASE_UNITS_PARENT = $ar["ID"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_METADATA_ID"]) {
                 $meta_data_xml_id = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_UPDATE_ONLY"]) {
                 $this->next_step["bUpdateOnly"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? true : false;
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_CODE"]) {
                 $arIBlock["CODE"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SORT"]) {
                 $arIBlock["SORT"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_LIST_URL"]) {
                 $arIBlock["LIST_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_DETAIL_URL"]) {
                 $arIBlock["DETAIL_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SECTION_URL"]) {
                 $arIBlock["SECTION_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_CANONICAL_URL"]) {
                 $arIBlock["CANONICAL_PAGE_URL"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_INDEX_ELEMENTS"]) {
                 $arIBlock["INDEX_ELEMENT"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? "Y" : "N";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_INDEX_SECTIONS"]) {
                 $arIBlock["INDEX_SECTION"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? "Y" : "N";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SECTIONS_NAME"]) {
                 $arIBlock["SECTIONS_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_SECTION_NAME"]) {
                 $arIBlock["SECTION_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_ELEMENTS_NAME"]) {
                 $arIBlock["ELEMENTS_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_ELEMENT_NAME"]) {
                 $arIBlock["ELEMENT_NAME"] = $ar["VALUE"];
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_PICTURE"]) {
                 if (strlen($ar["VALUE"]) > 0) {
                     $arIBlock["PICTURE"] = $this->MakeFileArray($ar["VALUE"]);
                 } else {
                     $arIBlock["PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($ar["ID"]));
                 }
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_BX_WORKFLOW"]) {
                 $arIBlock["WORKFLOW"] = $ar["VALUE"] == "true" || intval($ar["VALUE"]) ? "Y" : "N";
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_INHERITED_TEMPLATES"]) {
                 $arIBlock["IPROPERTY_TEMPLATES"] = array();
                 $arTemplates = $this->_xml_file->GetAllChildrenArray($ar["ID"]);
                 foreach ($arTemplates as $TEMPLATE) {
                     $id = $TEMPLATE[$this->mess["IBLOCK_XML2_ID"]];
                     $template = $TEMPLATE[$this->mess["IBLOCK_XML2_VALUE"]];
                     if (strlen($id) > 0 && strlen($template) > 0) {
                         $arIBlock["IPROPERTY_TEMPLATES"][$id] = $template;
                     }
                 }
             } elseif ($ar["NAME"] == $this->mess["IBLOCK_XML2_LABELS"]) {
                 $arLabels = $this->_xml_file->GetAllChildrenArray($ar["ID"]);
                 foreach ($arLabels as $arLabel) {
                     $id = $arLabel[$this->mess["IBLOCK_XML2_ID"]];
                     $label = $arLabel[$this->mess["IBLOCK_XML2_VALUE"]];
                     if (strlen($id) > 0 && strlen($label) > 0) {
                         $arIBlock[$id] = $label;
                     }
                 }
             }
         }
         if ($this->next_step["bOffer"] && !$this->use_offers) {
             if (strlen($arIBlock["CATALOG_XML_ID"]) > 0) {
                 $arIBlock["XML_ID"] = $arIBlock["CATALOG_XML_ID"];
                 $this->next_step["bUpdateOnly"] = true;
             }
         }
         $obIBlock = new CIBlock();
         $rsIBlocks = $obIBlock->GetList(array(), array("XML_ID" => $arIBlock["XML_ID"]));
         $ar = $rsIBlocks->Fetch();
         //Also check for non bitrix xml file
         if (!$ar && !array_key_exists("CODE", $arIBlock)) {
             if ($this->next_step["bOffer"] && $this->use_offers) {
                 $rsIBlocks = $obIBlock->GetList(array(), array("XML_ID" => "FUTURE-1C-OFFERS"));
             } else {
                 $rsIBlocks = $obIBlock->GetList(array(), array("XML_ID" => "FUTURE-1C-CATALOG"));
             }
             $ar = $rsIBlocks->Fetch();
         }
         if ($ar) {
             if ($bUpdateIBlock && (!$this->next_step["bOffer"] || $this->use_offers)) {
                 if ($obIBlock->Update($ar["ID"], $arIBlock)) {
                     $arIBlock["ID"] = $ar["ID"];
                 } else {
                     return $obIBlock->LAST_ERROR;
                 }
             } else {
                 $arIBlock["ID"] = $ar["ID"];
             }
         } else {
             $arIBlock["IBLOCK_TYPE_ID"] = $this->CheckIBlockType($IBLOCK_TYPE);
             if (!$arIBlock["IBLOCK_TYPE_ID"]) {
                 return GetMessage("IBLOCK_XML2_TYPE_ADD_ERROR");
             }
             $arIBlock["GROUP_ID"] = array(2 => "R");
             $arIBlock["LID"] = $this->CheckSites($IBLOCK_LID);
             $arIBlock["ACTIVE"] = "Y";
             $arIBlock["WORKFLOW"] = "N";
             if ($this->translit_on_add && !array_key_exists("CODE", $arIBlock)) {
                 $arIBlock["FIELDS"] = array("CODE" => array("DEFAULT_VALUE" => array("TRANSLITERATION" => "Y", "TRANS_LEN" => $this->translit_on_add["max_len"], "TRANS_CASE" => $this->translit_on_add["change_case"], "TRANS_SPACE" => $this->translit_on_add["replace_space"], "TRANS_OTHER" => $this->translit_on_add["replace_other"], "TRANS_EAT" => $this->translit_on_add["delete_repeat_replace"] ? "Y" : "N")), "SECTION_CODE" => array("DEFAULT_VALUE" => array("TRANSLITERATION" => "Y", "TRANS_LEN" => $this->translit_on_add["max_len"], "TRANS_CASE" => $this->translit_on_add["change_case"], "TRANS_SPACE" => $this->translit_on_add["replace_space"], "TRANS_OTHER" => $this->translit_on_add["replace_other"], "TRANS_EAT" => $this->translit_on_add["delete_repeat_replace"] ? "Y" : "N")));
             }
             $arIBlock["ID"] = $obIBlock->Add($arIBlock);
             if (!$arIBlock["ID"]) {
                 return $obIBlock->LAST_ERROR;
             }
         }
         //Make this catalog
         if ($this->bCatalog && $this->next_step["bOffer"]) {
             $obCatalog = new CCatalog();
             $intParentID = $this->GetIBlockByXML_ID($arIBlock["CATALOG_XML_ID"]);
             if (0 < intval($intParentID) && $this->use_offers) {
                 $mxSKUProp = $obCatalog->LinkSKUIBlock($intParentID, $arIBlock["ID"]);
                 if (!$mxSKUProp) {
                     if ($ex = $APPLICATION->GetException()) {
                         $result = $ex->GetString();
                         return $result;
                     }
                 } else {
                     $rs = CCatalog::GetList(array(), array("IBLOCK_ID" => $arIBlock["ID"]));
                     if ($arOffer = $rs->Fetch()) {
                         $boolFlag = $obCatalog->Update($arIBlock["ID"], array('PRODUCT_IBLOCK_ID' => $intParentID, 'SKU_PROPERTY_ID' => $mxSKUProp));
                     } else {
                         $boolFlag = $obCatalog->Add(array("IBLOCK_ID" => $arIBlock["ID"], "YANDEX_EXPORT" => "N", "SUBSCRIPTION" => "N", 'PRODUCT_IBLOCK_ID' => $intParentID, 'SKU_PROPERTY_ID' => $mxSKUProp));
                     }
                     if (!$boolFlag) {
                         if ($ex = $APPLICATION->GetException()) {
                             $result = $ex->GetString();
                             return $result;
                         }
                     }
                 }
             } else {
                 $rs = CCatalog::GetList(array(), array("IBLOCK_ID" => $arIBlock["ID"]));
                 if (!$rs->Fetch()) {
                     $boolFlag = $obCatalog->Add(array("IBLOCK_ID" => $arIBlock["ID"], "YANDEX_EXPORT" => "N", "SUBSCRIPTION" => "N"));
                     if (!$boolFlag) {
                         if ($ex = $APPLICATION->GetException()) {
                             $result = $ex->GetString();
                             return $result;
                         }
                     }
                 }
             }
         }
         //For non bitrix xml file
         //Check for mandatory properties and add them as necessary
         if (!array_key_exists("CODE", $arIBlock)) {
             $arProperties = array("CML2_BAR_CODE" => GetMessage("IBLOCK_XML2_BAR_CODE"), "CML2_ARTICLE" => GetMessage("IBLOCK_XML2_ARTICLE"), "CML2_ATTRIBUTES" => array("NAME" => GetMessage("IBLOCK_XML2_ATTRIBUTES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1), "CML2_TRAITS" => array("NAME" => GetMessage("IBLOCK_XML2_TRAITS"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1), "CML2_BASE_UNIT" => GetMessage("IBLOCK_XML2_BASE_UNIT_NAME"), "CML2_TAXES" => array("NAME" => GetMessage("IBLOCK_XML2_TAXES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1), "CML2_PICTURES" => array("NAME" => GetMessage("IBLOCK_XML2_PICTURES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1, "PROPERTY_TYPE" => "F", "CODE" => "MORE_PHOTO"), "CML2_FILES" => array("NAME" => GetMessage("IBLOCK_XML2_FILES"), "MULTIPLE" => "Y", "WITH_DESCRIPTION" => "Y", "MULTIPLE_CNT" => 1, "PROPERTY_TYPE" => "F", "CODE" => "FILES"), "CML2_MANUFACTURER" => array("NAME" => GetMessage("IBLOCK_XML2_PROP_MANUFACTURER"), "MULTIPLE" => "N", "WITH_DESCRIPTION" => "N", "MULTIPLE_CNT" => 1, "PROPERTY_TYPE" => "L"));
             foreach ($arProperties as $k => $v) {
                 $result = $this->CheckProperty($arIBlock["ID"], $k, $v);
                 if ($result !== true) {
                     return $result;
                 }
             }
             //For offers make special property: link to catalog
             if (isset($arIBlock["CATALOG_XML_ID"]) && $this->use_offers) {
                 $this->CheckProperty($arIBlock["ID"], "CML2_LINK", array("NAME" => GetMessage("IBLOCK_XML2_CATALOG_ELEMENT"), "PROPERTY_TYPE" => "E", "USER_TYPE" => "SKU", "LINK_IBLOCK_ID" => $this->GetIBlockByXML_ID($arIBlock["CATALOG_XML_ID"]), "FILTRABLE" => "Y"));
             }
         }
         $this->next_step["IBLOCK_ID"] = $arIBlock["ID"];
         $this->next_step["XML_ELEMENTS_PARENT"] = $XML_ELEMENTS_PARENT;
     }
     if ($meta_data_xml_id) {
         $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_METADATA"]), array("ID"));
         while ($arMetadata = $rs->Fetch()) {
             //Find referenced metadata
             $bMetaFound = false;
             $meta_roots = array();
             $rsMetaRoots = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $arMetadata["ID"]));
             while ($arMeta = $rsMetaRoots->Fetch()) {
                 if (isset($arMeta["VALUE_CLOB"])) {
                     $arMeta["VALUE"] = $arMeta["VALUE_CLOB"];
                 }
                 if ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_ID"] && $arMeta["VALUE"] == $meta_data_xml_id) {
                     $bMetaFound = true;
                 }
                 $meta_roots[] = $arMeta;
             }
             //Get xml parents of the properties and sections
             if ($bMetaFound) {
                 foreach ($meta_roots as $arMeta) {
                     if ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_GROUPS"]) {
                         $XML_SECTIONS_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_PROPERTIES"]) {
                         $XML_PROPERTIES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_GROUPS_PROPERTIES"]) {
                         $XML_SECTIONS_PROPERTIES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_SECTION_PROPERTIES"]) {
                         $XML_SECTION_PROPERTIES = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_PRICE_TYPES"]) {
                         $XML_PRICES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_STORES"]) {
                         $XML_STORES_PARENT = $arMeta["ID"];
                     } elseif ($arMeta["NAME"] == $this->mess["IBLOCK_XML2_BASE_UNITS"]) {
                         $XML_BASE_UNITS_PARENT = $arMeta["ID"];
                     }
                 }
                 break;
             }
         }
     }
     $iblockFields = CIBlock::GetFields($arIBlock["ID"]);
     $iblockFields["XML_IMPORT_START_TIME"] = array("NAME" => "XML_IMPORT_START_TIME", "IS_REQUIRED" => "N", "DEFAULT_VALUE" => date("Y-m-d H:i:s"));
     CIBlock::SetFields($arIBlock["ID"], $iblockFields);
     if ($XML_PROPERTIES_PARENT) {
         $result = $this->ImportProperties($XML_PROPERTIES_PARENT, $arIBlock["ID"]);
         if ($result !== true) {
             return $result;
         }
     }
     if ($XML_SECTION_PROPERTIES) {
         $result = $this->ImportSectionProperties($XML_SECTION_PROPERTIES, $arIBlock["ID"]);
         if ($result !== true) {
             return $result;
         }
     }
     if ($XML_SECTIONS_PROPERTIES_PARENT) {
         $result = $this->ImportSectionsProperties($XML_SECTIONS_PROPERTIES_PARENT, $arIBlock["ID"]);
         if ($result !== true) {
             return $result;
         }
     }
     if ($XML_PRICES_PARENT) {
         if ($this->bCatalog) {
             $result = $this->ImportPrices($XML_PRICES_PARENT, $arIBlock["ID"], $IBLOCK_LID);
             if ($result !== true) {
                 return $result;
             }
         }
     }
     if ($XML_STORES_PARENT) {
         if ($this->bCatalog && CBXFeatures::IsFeatureEnabled('CatMultiStore')) {
             $result = $this->ImportStores($XML_STORES_PARENT);
             if ($result !== true) {
                 return $result;
             }
         }
     }
     if ($XML_BASE_UNITS_PARENT) {
         if ($this->bCatalog) {
             $result = $this->ImportBaseUnits($XML_BASE_UNITS_PARENT);
             if ($result !== true) {
                 return $result;
             }
         }
     }
     $this->next_step["section_sort"] = 100;
     $this->next_step["XML_SECTIONS_PARENT"] = $XML_SECTIONS_PARENT;
     $rs = $this->_xml_file->GetList(array(), array("PARENT_ID" => $xml_root_id, "NAME" => $this->mess["IBLOCK_XML2_PRODUCTS_SETS"]), array("ID", "ATTRIBUTES"));
     $ar = $rs->Fetch();
     if ($ar) {
         $this->next_step["SETS"] = $ar["ID"];
     }
     return true;
 }
 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);
 }
示例#29
0
         $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";
示例#30
0
 /**
  *
  */
 public function addNewInfoblock()
 {
     $data = $this->generateData();
     $o = new \CIBlock();
     $id = $o->Add($data);
     $data['ID'] = $id;
     $this->data = $data;
     $this->process();
 }