/** * @param string $name * @param string $code * @param array $arFields * * @throws MigrationException */ protected function createProperty($name, $code, array $arFields = array()) { $arFields['NAME'] = $name; $arFields['CODE'] = $code; $arFields['IBLOCK_ID'] = $this->iBlockId; $arFields['VERSION'] = $this->storageType; if (!empty($code) && $this->isIBlockPropertyExists($code)) { throw new MigrationException(sprintf('IBlock property with code "%s" already exists', $code)); } if (!$this->iBlockPropertyGateway->Add($arFields)) { throw new MigrationException($this->iBlockPropertyGateway->LAST_ERROR); } }
public function Execute() { if (!CModule::IncludeModule("forum")) { return CBPActivityExecutionStatus::Closed; } if (!CModule::IncludeModule("iblock")) { return CBPActivityExecutionStatus::Closed; } $forumId = intval($this->ForumId); if ($forumId <= 0) { return CBPActivityExecutionStatus::Closed; } $rootActivity = $this->GetRootActivity(); $documentId = $rootActivity->GetDocumentId(); $iblockId = $this->IBlockId; $dbResult = CIBlockElement::GetProperty($iblockId, $documentId[2], false, false, array("CODE" => "FORUM_TOPIC_ID")); $arResult = $dbResult->Fetch(); if (!$arResult) { $obProperty = new CIBlockProperty(); $obProperty->Add(array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => "Forum topic", "CODE" => "FORUM_TOPIC_ID")); $obProperty->Add(array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => "Forum message count", "CODE" => "FORUM_MESSAGE_CNT")); $dbResult = CIBlockElement::GetProperty($iblockId, $documentId[2], false, false, array("CODE" => "FORUM_TOPIC_ID")); $arResult = $dbResult->Fetch(); } $forumTopicId = intval($arResult["VALUE"]); $arForumUserTmp = $this->ForumUser; $arForumUser = CBPHelper::ExtractUsers($arForumUserTmp, $documentId, true); $forumUserId = 1; $forumUserName = "******"; if ($arForumUser != null) { $forumUserId = $arForumUser; $dbResult = CUser::GetByID($forumUserId); if ($arResult = $dbResult->Fetch()) { $forumUserName = CUser::FormatName(COption::GetOptionString("bizproc", "name_template", CSite::GetNameFormat(false), SITE_ID), $arResult, true); } } $newTopic = "N"; if ($forumTopicId <= 0) { $documentService = $this->workflow->GetService("DocumentService"); $document = $documentService->GetDocument($documentId); $newTopic = "Y"; $arFields = array("TITLE" => $document["NAME"], "FORUM_ID" => $forumId, "USER_START_ID" => $forumUserId, "USER_START_NAME" => $forumUserName, "LAST_POSTER_NAME" => $forumUserName, "APPROVED" => "Y"); $forumTopicId = CForumTopic::Add($arFields); CIBlockElement::SetPropertyValues($documentId[2], $iblockId, $forumTopicId, "FORUM_TOPIC_ID"); } $arFields = array("POST_MESSAGE" => $this->ForumPostMessage, "AUTHOR_ID" => $forumUserId, "AUTHOR_NAME" => $forumUserName, "FORUM_ID" => $forumId, "TOPIC_ID" => $forumTopicId, "APPROVED" => "Y", "NEW_TOPIC" => $newTopic, "PARAM2" => $documentId[2]); $forumMessageId = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); return CBPActivityExecutionStatus::Closed; }
function __IRM_InitReservation($iblockId) { $arResult = array(); $arResult["ALLOWED_FIELDS"] = array("ID" => array("NAME" => GetMessage("INAF_F_ID"), "ORDERABLE" => true, "FILTERABLE" => true, "TYPE" => "int", "IS_FIELD" => true), "NAME" => array("NAME" => GetMessage("INAF_F_NAME"), "ORDERABLE" => true, "FILTERABLE" => true, "TYPE" => "string", "IS_FIELD" => true), "DESCRIPTION" => array("NAME" => GetMessage("INAF_F_DESCRIPTION"), "ORDERABLE" => false, "FILTERABLE" => false, "TYPE" => "text", "IS_FIELD" => true), "UF_FLOOR" => array("NAME" => GetMessage("INAF_F_FLOOR"), "ORDERABLE" => true, "FILTERABLE" => true, "TYPE" => "integer", "IS_FIELD" => false), "UF_PLACE" => array("NAME" => GetMessage("INAF_F_PLACE"), "ORDERABLE" => true, "FILTERABLE" => true, "TYPE" => "integer", "IS_FIELD" => false), "UF_PHONE" => array("NAME" => GetMessage("INAF_F_PHONE"), "ORDERABLE" => false, "FILTERABLE" => false, "TYPE" => "string", "IS_FIELD" => false)); $arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_" . $iblockId . "_SECTION", 0, LANGUAGE_ID); $arKeys = Array_Keys($arResult["ALLOWED_FIELDS"]); foreach ($arKeys as $key) { if (!$arResult["ALLOWED_FIELDS"][$key]["IS_FIELD"]) { if (!Array_Key_Exists($key, $arUserFields)) { $arFields = array("ENTITY_ID" => "IBLOCK_" . $iblockId . "_SECTION", "FIELD_NAME" => $key, "USER_TYPE_ID" => $arResult["ALLOWED_FIELDS"][$key]["TYPE"]); $obUserField = new CUserTypeEntity(); $obUserField->Add($arFields); } } } $arResult["ALLOWED_ITEM_PROPERTIES"] = array("UF_PERSONS" => array("NAME" => GetMessage("INTASK_C29_UF_PERSONS"), "ACTIVE" => "Y", "SORT" => 300, "CODE" => "UF_PERSONS", "PROPERTY_TYPE" => "N", "USER_TYPE" => false, "ROW_COUNT" => 1, "COL_COUNT" => 5, "LINK_IBLOCK_ID" => 0, "WITH_DESCRIPTION" => "N", "FILTRABLE" => "Y", "SEARCHABLE" => "Y", "MULTIPLE" => "N", "MULTIPLE_CNT" => 5, "IS_REQUIRED" => "N", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "LIST_TYPE" => "L", "IBLOCK_ID" => $iblockId), "UF_RES_TYPE" => array("NAME" => GetMessage("INTASK_C29_UF_RES_TYPE"), "ACTIVE" => "Y", "SORT" => 200, "CODE" => "UF_RES_TYPE", "PROPERTY_TYPE" => "L", "USER_TYPE" => false, "ROW_COUNT" => 1, "COL_COUNT" => 30, "LINK_IBLOCK_ID" => 0, "WITH_DESCRIPTION" => "N", "FILTRABLE" => "Y", "SEARCHABLE" => "Y", "MULTIPLE" => "N", "MULTIPLE_CNT" => 5, "IS_REQUIRED" => "Y", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "LIST_TYPE" => "L", "IBLOCK_ID" => $iblockId, "VALUES" => array(array("VALUE" => GetMessage("INTASK_C29_UF_RES_TYPEA"), "DEF" => "Y", "SORT" => 100, "XML_ID" => "A"), array("VALUE" => GetMessage("INTASK_C29_UF_RES_TYPEB"), "DEF" => "N", "SORT" => 200, "XML_ID" => "B"), array("VALUE" => GetMessage("INTASK_C29_UF_RES_TYPEC"), "DEF" => "N", "SORT" => 200, "XML_ID" => "C"), array("VALUE" => GetMessage("INTASK_C29_UF_RES_TYPED"), "DEF" => "N", "SORT" => 300, "XML_ID" => "D"))), "UF_PREPARE_ROOM" => array("NAME" => GetMessage("INTASK_C29_UF_PREPARE_ROOM"), "ACTIVE" => "Y", "SORT" => 500, "CODE" => "UF_PREPARE_ROOM", "PROPERTY_TYPE" => "S", "USER_TYPE" => false, "DEFAULT_VALUE" => "Y", "ROW_COUNT" => 1, "COL_COUNT" => 30, "LINK_IBLOCK_ID" => 0, "WITH_DESCRIPTION" => "N", "FILTRABLE" => "N", "SEARCHABLE" => "N", "MULTIPLE" => "N", "MULTIPLE_CNT" => 5, "IS_REQUIRED" => "N", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "LIST_TYPE" => "L", "IBLOCK_ID" => $iblockId), "PERIOD_TYPE" => array("NAME" => GetMessage("INTASK_C29_PERIOD_TYPE"), "ACTIVE" => "Y", "SORT" => 500, "CODE" => "PERIOD_TYPE", "PROPERTY_TYPE" => "S", "USER_TYPE" => false, "DEFAULT_VALUE" => "NONE", "ROW_COUNT" => 1, "COL_COUNT" => 30, "LINK_IBLOCK_ID" => 0, "WITH_DESCRIPTION" => "N", "FILTRABLE" => "N", "SEARCHABLE" => "N", "MULTIPLE" => "N", "MULTIPLE_CNT" => 5, "IS_REQUIRED" => "N", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "LIST_TYPE" => "L", "IBLOCK_ID" => $iblockId), "PERIOD_COUNT" => array("NAME" => GetMessage("INTASK_C29_PERIOD_COUNT"), "ACTIVE" => "Y", "SORT" => 500, "CODE" => "PERIOD_COUNT", "PROPERTY_TYPE" => "N", "USER_TYPE" => false, "DEFAULT_VALUE" => "", "ROW_COUNT" => 1, "COL_COUNT" => 30, "LINK_IBLOCK_ID" => 0, "WITH_DESCRIPTION" => "N", "FILTRABLE" => "N", "SEARCHABLE" => "N", "MULTIPLE" => "N", "MULTIPLE_CNT" => 5, "IS_REQUIRED" => "N", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "LIST_TYPE" => "L", "IBLOCK_ID" => $iblockId), "EVENT_LENGTH" => array("NAME" => GetMessage("INTASK_C29_EVENT_LENGTH"), "ACTIVE" => "Y", "SORT" => 500, "CODE" => "EVENT_LENGTH", "PROPERTY_TYPE" => "N", "USER_TYPE" => false, "DEFAULT_VALUE" => "", "ROW_COUNT" => 1, "COL_COUNT" => 30, "LINK_IBLOCK_ID" => 0, "WITH_DESCRIPTION" => "N", "FILTRABLE" => "N", "SEARCHABLE" => "N", "MULTIPLE" => "N", "MULTIPLE_CNT" => 5, "IS_REQUIRED" => "N", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "LIST_TYPE" => "L", "IBLOCK_ID" => $iblockId), "PERIOD_ADDITIONAL" => array("NAME" => GetMessage("INTASK_C29_PERIOD_ADDITIONAL"), "ACTIVE" => "Y", "SORT" => 500, "CODE" => "PERIOD_ADDITIONAL", "PROPERTY_TYPE" => "S", "USER_TYPE" => false, "DEFAULT_VALUE" => "", "ROW_COUNT" => 1, "COL_COUNT" => 30, "LINK_IBLOCK_ID" => 0, "WITH_DESCRIPTION" => "N", "FILTRABLE" => "N", "SEARCHABLE" => "N", "MULTIPLE" => "N", "MULTIPLE_CNT" => 5, "IS_REQUIRED" => "N", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "LIST_TYPE" => "L", "IBLOCK_ID" => $iblockId)); $dbIBlockProps = CIBlock::GetProperties($iblockId); while ($arIBlockProps = $dbIBlockProps->Fetch()) { if (Array_Key_Exists($arIBlockProps["CODE"], $arResult["ALLOWED_ITEM_PROPERTIES"])) { $arResult["ALLOWED_ITEM_PROPERTIES"][$arIBlockProps["CODE"]]["ID"] = $arIBlockProps["ID"]; } } $keys = Array_Keys($arResult["ALLOWED_ITEM_PROPERTIES"]); foreach ($keys as $key) { if (IntVal($arResult["ALLOWED_ITEM_PROPERTIES"][$key]["ID"]) <= 0) { $ibp = new CIBlockProperty(); $arResult["ALLOWED_ITEM_PROPERTIES"][$key]["ID"] = $ibp->Add($arResult["ALLOWED_ITEM_PROPERTIES"][$key]); } } return $arResult; }
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; }
/** * @inheritdoc * * @throws PropertyAlreadyExistException */ public function internationalize($propCodePublicId, $propCodeLang, $defaultLang) { $isExistPropPublicId = $this->checkExistProperty($propCodePublicId, PublicIdProperty::USER_TYPE); $isExistPropLang = $this->checkExistProperty($propCodeLang, LangProperty::USER_TYPE); $propertyModel = new \CIBlockProperty(); if (!$isExistPropPublicId) { $addResult = $propertyModel->Add(['NAME' => Loc::getMessage('NOTAMEDIA_I18N_ELEMENT_CONVERTER_PROP_PUBLIC_ID'), 'ACTIVE' => 'Y', 'CODE' => $propCodePublicId, 'PROPERTY_TYPE' => 'S', 'USER_TYPE' => PublicIdProperty::USER_TYPE, 'FILTRABLE' => 'Y', 'IBLOCK_ID' => $this->getIblockId()]); if (!$addResult) { throw new InternationalizeException([$propertyModel->LAST_ERROR]); } } if (!$isExistPropLang) { $addResult = $propertyModel->Add(['NAME' => Loc::getMessage('NOTAMEDIA_I18N_ELEMENT_CONVERTER_PROP_LANG'), 'ACTIVE' => 'Y', 'CODE' => $propCodeLang, 'PROPERTY_TYPE' => 'S', 'USER_TYPE' => LangProperty::USER_TYPE, 'FILTRABLE' => 'Y', 'IS_REQUIRED' => 'Y', 'IBLOCK_ID' => $this->getIblockId()]); if (!$addResult) { throw new InternationalizeException([$propertyModel->LAST_ERROR]); } } parent::internationalize($propCodePublicId, $propCodeLang, $defaultLang); }
/** * Add * @param $arFields * @return bool * @throws \Exception */ public static function Add($arFields) { $iblock = new \CIBlock(); if (isset($arFields['SORT'])) { if (!is_int($arFields['SORT'])) { if (intval($arFields['SORT'])) { $arFields['SORT'] = intval($arFields['SORT']); } else { $arFields['SORT'] = 500; } } } else { $arFields['SORT'] = 500; } # default $arDefaultValues = array('MULTIPLE' => false, 'IS_REQUIRED' => false, 'ACTIVE' => true, 'PROPERTY_TYPE' => 'S', 'USER_TYPE' => false, 'FILE_TYPE' => '', 'LIST_TYPE' => 'L', 'ROW_COUNT' => 1, 'COL_COUNT' => 30, 'LINK_IBLOCK_ID' => null, 'DEFAULT_VALUE' => null, 'WITH_DESCRIPTION' => 'N', 'SEARCHABLE' => 'N', 'FILTRABLE' => 'N', 'MULTIPLE_CNT' => 5, 'HINT' => '', 'SECTION_PROPERTY' => 'Y', 'SMART_FILTER' => 'N', 'USER_TYPE_SETTINGS' => array(), 'VALUES' => array()); if ($arFields['IBLOCK_CODE']) { unset($arFields['IBLOCK_ID']); $rsIBlock = $iblock->GetList(array(), array('CODE' => $arFields['IBLOCK_CODE'], 'CHECK_PERMISSIONS' => 'N')); if ($arIBlock = $rsIBlock->Fetch()) { $arFields['IBLOCK_ID'] = $arIBlock['ID']; } else { throw new BimException(__METHOD__ . ' Not found iblock with code ' . $arFields['IBLOCK_CODE']); } } if (!strlen($arFields['CODE'])) { throw new BimException(__METHOD__ . ' Not found property code'); } $iblockPropDbRes = \CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $arFields['IBLOCK_ID'], 'CODE' => $arFields['CODE'])); if ($iblockPropDbRes !== false && $iblockPropDbRes->SelectedRowsCount()) { throw new BimException(__METHOD__ . 'Property with code = "' . $arFields['CODE'] . '" '); } if ($arFields['LINK_IBLOCK_CODE']) { unset($arFields['LINK_IBLOCK_ID']); $rsIBlock = $iblock->GetList(array(), array('CODE' => $arFields['LINK_IBLOCK_CODE'], 'CHECK_PERMISSIONS' => 'N')); if ($arIBlock = $rsIBlock->Fetch()) { $arFields['LINK_IBLOCK_ID'] = $arIBlock['ID']; } } foreach ($arDefaultValues as $DefaultName => $DefaultValue) { if (!isset($arFields[$DefaultName]) || empty($arFields[$DefaultName])) { $arFields[$DefaultName] = $DefaultValue; } } $objCIBlockProperty = new \CIBlockProperty(); unset($arFields['ID']); $iId = $objCIBlockProperty->Add($arFields); if ($iId) { return $iId; } else { throw new BimException(__METHOD__ . ' ' . $objCIBlockProperty->LAST_ERROR); } }
function onBeforeUpload($Params) { CModule::IncludeModule("iblock"); $_SESSION['arUploadedPhotos'] = array(); $arParams = $Params['arParams']; $savedData = CImageUploader::GetSavedData(); $savedData['UPLOADING_START'] = "Y"; CImageUploader::SetSavedData($savedData); if ($savedData["SECTION_ID"] <= 0) { $arParams["SECTION_ID"] = GetAlbumId(array('id' => $Params['packageFields']['photo_album_id'], 'name' => $Params['packageFields']['new_album_name'], 'arParams' => $arParams, '~arResult' => $Params['~arResult'])); $savedData = CImageUploader::GetSavedData(); $savedData["SECTION_ID"] = $arParams["SECTION_ID"]; } else { $arParams["SECTION_ID"] = $savedData["SECTION_ID"]; } // Check and create properties if (count($savedData['arError']) == 0) { $arPropertiesNeed = array(); // Array of properties needed to create foreach ($arParams['converters'] as $key => $val) { if ($val['code'] == "real_picture" || $val['code'] == "thumbnail") { continue; } $db_res = CIBlock::GetProperties($arParams["IBLOCK_ID"], array(), array("CODE" => $val['code'])); if (!($db_res && ($res = $db_res->Fetch()))) { $arPropertiesNeed[] = $val['code']; } } if (count($arPropertiesNeed) > 0) { $obProperty = new CIBlockProperty(); foreach ($arPropertiesNeed as $key) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "F", "MULTIPLE" => "N", "NAME" => strLen(GetMessage("P_" . strToUpper($key))) > 0 ? GetMessage("P_" . strToUpper($key)) : strToUpper($key), "CODE" => strToUpper($key), "FILE_TYPE" => "jpg, gif, bmp, png, jpeg")); } } // Check Public property $arPropertiesNeed = array(); foreach (array("PUBLIC_ELEMENT", "APPROVE_ELEMENT") as $key) { $db_res = CIBlock::GetProperties($arParams["IBLOCK_ID"], array(), array("CODE" => $key)); if (!$db_res || !($res = $db_res->Fetch())) { $arPropertiesNeed[] = $key; } } if (count($arPropertiesNeed) > 0) { $obProperty = new CIBlockProperty(); foreach ($arPropertiesNeed as $key) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "S", "MULTIPLE" => "N", "NAME" => strLen(GetMessage("P_" . $key)) > 0 ? GetMessage("P_" . $key) : $key, "DEFAULT_VALUE" => "N", "CODE" => $key)); } } } CImageUploader::SetSavedData($savedData); return true; }
public static function addLinkField($iblock_id) { $iblock_property = new CIBlockProperty; return $iblock_property->Add( array( 'NAME' => 'Ссылка', 'ACTIVE' => 'Y', 'SORT' => 500, 'CODE' => 'LINK', 'PROPERTY_TYPE' => 'S', 'IBLOCK_ID' => $iblock_id, ) ); }
public function addPropertyIfNotExists($iblockId, $fields) { $this->checkRequiredKeys(__METHOD__, $fields, array('CODE')); $propId = $this->getPropertyId($iblockId, $fields['CODE']); if ($propId) { return $propId; } $default = array('IBLOCK_ID' => $iblockId, 'NAME' => '', 'ACTIVE' => 'Y', 'SORT' => '500', 'CODE' => '', 'PROPERTY_TYPE' => 'S', 'ROW_COUNT' => '1', 'COL_COUNT' => '30', 'LIST_TYPE' => 'L', 'MULTIPLE' => 'N', 'USER_TYPE' => '', 'IS_REQUIRED' => 'N', 'FILTRABLE' => 'Y', 'LINK_IBLOCK_ID' => 0); $fields = array_merge($default, $fields); if (isset($fields['VALUES'])) { $fields['PROPERTY_TYPE'] = 'L'; } $ib = new \CIBlockProperty(); $propId = $ib->Add($fields); if ($propId) { return $propId; } $this->throwException(__METHOD__, $ib->LAST_ERROR); }
$db_res = CIBlockSection::GetList(array(), array("IBLOCK_ID" => $arSection["IBLOCK_ID"], "SECTION_ID" => 0, "!LEFT_MARGIN" => $arSection["LEFT_MARGIN"], "!RIGHT_MARGIN" => $arSection["RIGHT_MARGIN"], "!ID" => $arSection["ID"]), false, array("ID", "CODE", "RIGHT_MARGIN", "LEFT_MARGIN")); if ($db_res) { $arGallery = $db_res->Fetch(); } } } $arResult["ELEMENT"]["~DETAIL_PAGE_URL"] = CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_URL"], array("USER_ALIAS" => $arGallery["CODE"], "SECTION_ID" => $arResult["ELEMENT"]["IBLOCK_SECTION_ID"], "ELEMENT_ID" => $arResult["ELEMENT"]["ID"])); $arResult["ELEMENT"]["DETAIL_PAGE_URL"] = htmlspecialcharsbx($arResult["ELEMENT"]["~DETAIL_PAGE_URL"]); $obProperty = false; $iCommentID = 0; /************** BLOG *****************************************************/ $obProperty = new CIBlockProperty(); if (is_set($arResult["ELEMENT"]["PROPERTIES"], "BLOG_POST_ID")) { $iCommentID = intVal($arResult["ELEMENT"]["PROPERTIES"]["BLOG_POST_ID"]["VALUE"]); } else { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => strLen(GetMessage("P_BLOG_POST_ID")) <= 0 ? "BLOG_POST_ID" : GetMessage("P_BLOG_POST_ID"), "CODE" => "BLOG_POST_ID")); } if (!is_set($arResult["ELEMENT"], "PROPERTY_BLOG_COMMENTS_CNT_VALUE")) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => strLen(GetMessage("P_BLOG_COMMENTS_CNT")) <= 0 ? "P_BLOG_COMMENTS_CNT" : GetMessage("P_BLOG_COMMENTS_CNT"), "CODE" => "BLOG_COMMENTS_CNT")); } if ($iCommentID > 0) { $arPost = CBlogPost::GetByID($iCommentID); if (!$arPost) { $iCommentID = 0; } elseif (intVal($arPost["NUM_COMMENTS"]) > 0 && $arPost["NUM_COMMENTS"] != $arResult["ELEMENT"]["PROPERTIES"]["BLOG_COMMENTS_CNT"]["VALUE"]) { CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], intVal($arPost["NUM_COMMENTS"]), "BLOG_COMMENTS_CNT"); } } if (!$iCommentID && isset($_REQUEST["parentId"])) { $arCategory = array(); $arBlog = CBlog::GetByUrl($arParams["BLOG_URL"]);
public function AddDocumentField($documentType, $arFields) { $iblockId = intval(substr($documentType, strlen("type_"))); if ($iblockId <= 0) throw new CBPArgumentOutOfRangeException("documentType", $documentType); if (substr($arFields["code"], 0, strlen("PROPERTY_")) == "PROPERTY_") $arFields["code"] = substr($arFields["code"], strlen("PROPERTY_")); $arFieldsTmp = array( "NAME" => $arFields["name"], "ACTIVE" => "Y", "SORT" => 150, "CODE" => $arFields["code"], "MULTIPLE" => $arFields["multiple"], "IS_REQUIRED" => $arFields["required"], "IBLOCK_ID" => $iblockId, "FILTRABLE" => "Y", ); if (strpos("0123456789", substr($arFieldsTmp["CODE"], 0, 1))!==false) unset($arFieldsTmp["CODE"]); if (array_key_exists("additional_type_info", $arFields)) $arFieldsTmp["LINK_IBLOCK_ID"] = intval($arFields["additional_type_info"]); if (strstr($arFields["type"], ":") !== false) { list($arFieldsTmp["PROPERTY_TYPE"], $arFieldsTmp["USER_TYPE"]) = explode(":", $arFields["type"], 2); if ($arFields["type"] == "E:EList") $arFieldsTmp["LINK_IBLOCK_ID"] = $arFields["options"]; } else { $arFieldsTmp["PROPERTY_TYPE"] = $arFields["type"]; $arFieldsTmp["USER_TYPE"] = false; } if ($arFieldsTmp["PROPERTY_TYPE"] == "T") { $arFieldsTmp["PROPERTY_TYPE"] = "S"; $arFieldsTmp["ROW_COUNT"] = 5; } if ($arFields["type"] == "L") { if (is_array($arFields["options"])) { $i = 10; foreach ($arFields["options"] as $k => $v) { $arFieldsTmp["VALUES"][] = array("XML_ID" => $k, "VALUE" => $v, "DEF" => "N", "SORT" => $i); $i = $i + 10; } } elseif (is_string($arFields["options"]) && (strlen($arFields["options"]) > 0)) { $a = explode("\n", $arFields["options"]); $i = 10; foreach ($a as $v) { $v = trim(trim($v), "\r\n"); $v1 = $v2 = $v; if (substr($v, 0, 1) == "[" && strpos($v, "]") !== false) { $v1 = substr($v, 1, strpos($v, "]") - 1); $v2 = trim(substr($v, strpos($v, "]") + 1)); } $arFieldsTmp["VALUES"][] = array("XML_ID" => $v1, "VALUE" => $v2, "DEF" => "N", "SORT" => $i); $i = $i + 10; } } } $ibp = new CIBlockProperty; $propId = $ibp->Add($arFieldsTmp); if (intval($propId) <= 0) throw new Exception($ibp->LAST_ERROR); return "PROPERTY_".$arFields["code"]; }
function ImportProperties($XML_PROPERTIES_PARENT, $IBLOCK_ID) { $obProperty = new CIBlockProperty(); $sort = 100; $arElementFields = array("CML2_ACTIVE" => $this->mess["IBLOCK_XML2_BX_ACTIVE"], "CML2_CODE" => $this->mess["IBLOCK_XML2_SYMBOL_CODE"], "CML2_SORT" => $this->mess["IBLOCK_XML2_SORT"], "CML2_ACTIVE_FROM" => $this->mess["IBLOCK_XML2_START_TIME"], "CML2_ACTIVE_TO" => $this->mess["IBLOCK_XML2_END_TIME"], "CML2_PREVIEW_TEXT" => $this->mess["IBLOCK_XML2_ANONS"], "CML2_DETAIL_TEXT" => $this->mess["IBLOCK_XML2_DETAIL"], "CML2_PREVIEW_PICTURE" => $this->mess["IBLOCK_XML2_PREVIEW_PICTURE"]); $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $XML_PROPERTIES_PARENT), array("ID")); while ($ar = $rs->Fetch()) { $XML_ENUM_PARENT = false; $isExternal = false; $arProperty = array(); $rsP = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $ar["ID"])); while ($arP = $rsP->Fetch()) { if (isset($arP["VALUE_CLOB"])) { $arP["VALUE"] = $arP["VALUE_CLOB"]; } if ($arP["NAME"] == $this->mess["IBLOCK_XML2_ID"]) { $arProperty["XML_ID"] = $arP["VALUE"]; if (array_key_exists($arProperty["XML_ID"], $arElementFields)) { break; } } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_NAME"]) { $arProperty["NAME"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_MULTIPLE"]) { $arProperty["MULTIPLE"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_SORT"]) { $arProperty["SORT"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_CODE"]) { $arProperty["CODE"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_DEFAULT_VALUE"]) { $arProperty["DEFAULT_VALUE"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_SERIALIZED"]) { $arProperty["SERIALIZED"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_PROPERTY_TYPE"]) { $arProperty["PROPERTY_TYPE"] = $arP["VALUE"]; $arProperty["USER_TYPE"] = ""; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_ROWS"]) { $arProperty["ROW_COUNT"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_COLUMNS"]) { $arProperty["COL_COUNT"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_LIST_TYPE"]) { $arProperty["LIST_TYPE"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_FILE_EXT"]) { $arProperty["FILE_TYPE"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_FIELDS_COUNT"]) { $arProperty["MULTIPLE_CNT"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_USER_TYPE"]) { $arProperty["USER_TYPE"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_WITH_DESCRIPTION"]) { $arProperty["WITH_DESCRIPTION"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_SEARCH"]) { $arProperty["SEARCHABLE"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_FILTER"]) { $arProperty["FILTRABLE"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_LINKED_IBLOCK"]) { $arProperty["LINK_IBLOCK_ID"] = $this->GetIBlockByXML_ID($arP["VALUE"]); } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_CHOICE_VALUES"]) { $XML_ENUM_PARENT = $arP["ID"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_IS_REQUIRED"]) { $arProperty["IS_REQUIRED"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_VALUES_TYPE"]) { if ($arP["VALUE"] == $this->mess["IBLOCK_XML2_TYPE_LIST"] && !$isExternal) { $arProperty["PROPERTY_TYPE"] = "L"; $arProperty["USER_TYPE"] = ""; } elseif ($arP["VALUE"] == $this->mess["IBLOCK_XML2_TYPE_NUMBER"]) { $arProperty["PROPERTY_TYPE"] = "N"; $arProperty["USER_TYPE"] = ""; } elseif ($arP["VALUE"] == $this->mess["IBLOCK_XML2_TYPE_STRING"]) { $arProperty["PROPERTY_TYPE"] = "S"; $arProperty["USER_TYPE"] = ""; } } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_VALUES_TYPES"]) { //This property metadata contains information about it's type $rsTypes = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $arP["ID"]), array("ID", "LEFT_MARGIN", "RIGHT_MARGIN", "NAME")); $arType = $rsTypes->Fetch(); //We'll process only properties with NOT composing types //composed types will be supported only as simple string properties if ($arType && !$rsTypes->Fetch()) { $rsType = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $arType["ID"]), array("ID", "LEFT_MARGIN", "RIGHT_MARGIN", "NAME", "VALUE")); while ($arType = $rsType->Fetch()) { if ($arType["NAME"] == $this->mess["IBLOCK_XML2_TYPE"]) { if ($arType["VALUE"] == $this->mess["IBLOCK_XML2_TYPE_LIST"]) { $arProperty["PROPERTY_TYPE"] = "L"; } elseif ($arType["VALUE"] == $this->mess["IBLOCK_XML2_TYPE_NUMBER"]) { $arProperty["PROPERTY_TYPE"] = "N"; } } elseif ($arType["NAME"] == $this->mess["IBLOCK_XML2_CHOICE_VALUES"]) { $XML_ENUM_PARENT = $arType["ID"]; } } } } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_USER_TYPE_SETTINGS"]) { $arProperty["USER_TYPE_SETTINGS"] = unserialize($arP["VALUE"]); } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_EXTERNAL"]) { $isExternal = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? true : false; if ($isExternal) { $arProperty["PROPERTY_TYPE"] = "S"; $arProperty["USER_TYPE"] = "directory"; } } } if (array_key_exists($arProperty["XML_ID"], $arElementFields)) { continue; } // Skip properties with no choice values // http://jabber.bx/view.php?id=30476 $arEnumXmlNodes = array(); if ($XML_ENUM_PARENT) { $rsE = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $XML_ENUM_PARENT)); while ($arE = $rsE->Fetch()) { if (isset($arE["VALUE_CLOB"])) { $arE["VALUE"] = $arE["VALUE_CLOB"]; } $arEnumXmlNodes[] = $arE; } if (empty($arEnumXmlNodes)) { continue; } } if ($arProperty["SERIALIZED"] == "Y") { $arProperty["DEFAULT_VALUE"] = unserialize($arProperty["DEFAULT_VALUE"]); } $rsProperty = $obProperty->GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "XML_ID" => $arProperty["XML_ID"])); if ($arDBProperty = $rsProperty->Fetch()) { $bChanged = false; foreach ($arProperty as $key => $value) { if ($arDBProperty[$key] !== $value) { $bChanged = true; break; } } if (!$bChanged) { $arProperty["ID"] = $arDBProperty["ID"]; } elseif ($obProperty->Update($arDBProperty["ID"], $arProperty)) { $arProperty["ID"] = $arDBProperty["ID"]; } else { return $obProperty->LAST_ERROR; } } else { $arProperty["IBLOCK_ID"] = $IBLOCK_ID; $arProperty["ACTIVE"] = "Y"; if (!array_key_exists("PROPERTY_TYPE", $arProperty)) { $arProperty["PROPERTY_TYPE"] = "S"; } if (!array_key_exists("SORT", $arProperty)) { $arProperty["SORT"] = $sort; } if (!array_key_exists("CODE", $arProperty)) { $arProperty["CODE"] = $this->safeTranslit($arProperty["NAME"]); if (preg_match('/^[0-9]/', $arProperty["CODE"])) { $arProperty["CODE"] = '_' . $arProperty["CODE"]; } $rsProperty = $obProperty->GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "CODE" => $arProperty["CODE"])); if ($arDBProperty = $rsProperty->Fetch()) { $suffix = 0; do { $suffix++; $rsProperty = $obProperty->GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "CODE" => $arProperty["CODE"] . "_" . $suffix)); } while ($rsProperty->Fetch()); $arProperty["CODE"] .= '_' . $suffix; } } $arProperty["ID"] = $obProperty->Add($arProperty); if (!$arProperty["ID"]) { return $obProperty->LAST_ERROR; } } if ($XML_ENUM_PARENT) { if ($isExternal) { $result = $this->ImportPropertyDirectory($arProperty, $arEnumXmlNodes); } else { $result = $this->ImportPropertyEnum($arProperty, $arEnumXmlNodes); } if ($result !== true) { return $result; } } $sort += 100; } return true; }
protected static function _CreateProperty($arProp) { $arProperty = array('IBLOCK_ID' => $arProp['IBLOCK_ID'], 'NAME' => $arProp['NAME'], 'ACTIVE' => 'Y', 'CODE' => $arProp['CODE'], 'PROPERTY_TYPE' => $arProp['TYPE'], 'ROW_COUNT' => 1, 'COL_COUNT' => 30, 'LIST_TYPE' => $arProp['LIST_TYPE'] ? $arProp['LIST_TYPE'] : 'L', 'MULTIPLE' => $arProp['MULTIPLE'], 'USER_TYPE' => $arProp['USER_TYPE'], 'CHECK_PERMISSIONS' => 'N'); if (is_array($arProp['ENUM'])) { $arProperty['VALUES'] = array(); foreach ($arProp['ENUM'] as $key => $value) { $arProperty['VALUES'][] = array('VALUE' => $value, 'SORT' => 100 * intval($key + 1), 'DEF' => $value == $arProp['ENUM_DEFAULT'] ? 'Y' : 'N'); } } $ibp = new CIBlockProperty(); return $ibp->Add($arProperty); }
protected function addProperty($arProperty) { $properties = \CIBlockProperty::GetList(array("sort" => "asc", "name" => "asc"), array("IBLOCK_ID" => $arProperty['IBLOCK_ID'], "CODE" => $arProperty["CODE"])); if ($prop_fields = $properties->GetNext()) { $this->addMessage('<br />Свойство ' . $arProperty["CODE"] . ' уже есть.'); } else { $ibp = new \CIBlockProperty(); if ($PropID = $ibp->Add($arProperty)) { $this->addMessage('Свойство ' . $arProperty["CODE"] . ' добавлено.', true); } unset($ibp); } }
/** * @param int|string $iblockCode * @param $arPropFields * @param bool $bFailOnNonExist * @return array */ public function getTestIBlockProp($iblockCode, $arPropFields, $bFailOnNonExist = false) { $arTestIBlock = $this->getTestIBlock(array('CODE' => $iblockCode), true); $this->assertTrue(is_array($arTestIBlock)); $this->assertArrayHasKey('ID', $arTestIBlock); if (!array_key_exists('CODE', $arPropFields)) { $this->fail('Error: Infoblock property code is empty'); } if (array_key_exists($arTestIBlock['CODE'], self::$_arTestIBProps) && array_key_exists($arPropFields['CODE'], self::$_arTestIBProps[$arTestIBlock['CODE']])) { return self::$_arTestIBProps[$arTestIBlock['CODE']][$arPropFields['CODE']]; } $rsProperty = \CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $arTestIBlock['ID'], 'CODE' => $arPropFields['CODE'])); $arProperty = $rsProperty->Fetch(); if (!$arProperty) { if ($bFailOnNonExist) { $this->fail('Error: Property CODE="' . $arPropFields['CODE'] . '" does not exist'); } if (!array_key_exists('NAME', $arPropFields) || empty($arPropFields['NAME'])) { $arPropFields['NAME'] = $arPropFields['CODE']; } if (array_key_exists('PROPERTY_TYPE', $arPropFields) && $arPropFields['PROPERTY_TYPE'] == 'L' && (!is_array($arPropFields['VALUES']) || empty($arPropFields['VALUES']))) { $this->fail('Error: Can\'t create property of type = list without values'); } $arPropFieldsDef = array('IBLOCK_ID' => $arTestIBlock['ID'], 'PROPERTY_TYPE' => 'S', 'MULTIPLE' => 'N', 'ACTIVE' => 'Y', 'SORT' => '100'); $arPropFields = array_merge($arPropFieldsDef, $arPropFields); $obProperty = new \CIBlockProperty(); /** @global \CDatabase $DB */ global $DB; $DB->StartTransaction(); $newPropID = $obProperty->Add($arPropFields); if ($newPropID > 0) { $DB->Commit(); $rsProperty = \CIBlockProperty::GetByID($newPropID); $arProperty = $rsProperty->Fetch(); if (!$arProperty) { $this->fail('Error: can\'t get just created infoblock property'); } } else { $DB->Rollback(); $this->fail('Error: Can\'t create property: ' . $obProperty->LAST_ERROR); } } if (!array_key_exists($arTestIBlock['CODE'], self::$_arTestIBProps)) { self::$_arTestIBProps[$arTestIBlock['CODE']] = array(); } self::$_arTestIBProps[$arTestIBlock['CODE']][$arProperty['CODE']] = $arProperty; return self::$_arTestIBProps[$arTestIBlock['CODE']][$arPropFields['CODE']]; }
public function addProperty($propData) { $ibp = new \CIBlockProperty(); return (bool) $ibp->Add($propData); }
$_SESSION["IBLOCK_RATING"][$ELEMENT_ID] = true; $rsProperties = CIBlockElement::GetProperty($arParams["IBLOCK_ID"], $ELEMENT_ID, "value_id", "asc", array("ACTIVE" => "Y")); $arProperties = array(); while ($arProperty = $rsProperties->Fetch()) { if ($arProperty["CODE"] == "vote_count") { $arProperties["vote_count"] = $arProperty; } elseif ($arProperty["CODE"] == "vote_sum") { $arProperties["vote_sum"] = $arProperty; } elseif ($arProperty["CODE"] == "rating") { $arProperties["rating"] = $arProperty; } } $obProperty = new CIBlockProperty(); $res = true; if (!array_key_exists("vote_count", $arProperties)) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => "vote_count", "CODE" => "vote_count")); if ($res) { $arProperties["vote_count"] = array("VALUE" => 0); } } if ($res && !array_key_exists("vote_sum", $arProperties)) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => "vote_sum", "CODE" => "vote_sum")); if ($res) { $arProperties["vote_sum"] = array("VALUE" => 0); } } if ($res && !array_key_exists("rating", $arProperties)) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => "rating", "CODE" => "rating")); if ($res) { $arProperties["rating"] = array("VALUE" => 0); }
public static function InitCalendarEntry($siteId) { $iblockId = self::GetUserCalendarIBlockId($siteId); $arRequiredProps = array("BXDAVEX_LABEL" => array("PROPERTY_TYPE" => "S", "NAME" => "Exchange sync label"), "BXDAVCD_LABEL" => array("PROPERTY_TYPE" => "S", "NAME" => "CalDAV sync label")); $dbProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $iblockId, "TYPE" => "E", "CHECK_PERMISSIONS" => "N")); while ($arProperty = $dbProperty->Fetch()) { if (array_key_exists($arProperty["CODE"], $arRequiredProps)) { unset($arRequiredProps[$arProperty["CODE"]]); } } $property = new CIBlockProperty(); foreach ($arRequiredProps as $requiredPropKey => $requiredPropValue) { $arFields = array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "USER_TYPE" => false, "MULTIPLE" => 'N', "CODE" => $requiredPropKey, "CHECK_PERMISSIONS" => "N"); $property->Add(array_merge($arFields, $requiredPropValue)); } $arRequiredFields = array("UF_BXDAVEX_EXCH" => array("USER_TYPE_ID" => "string", "SORT" => 100, "EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "Exchange calendar"), "UF_BXDAVEX_EXCH_LBL" => array("USER_TYPE_ID" => "string", "SORT" => 100, "EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "Exchange calendar modification label"), "UF_BXDAVEX_CDAV_COL" => array("USER_TYPE_ID" => "integer", "SORT" => 100, "EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "CalDAV connection"), "UF_BXDAVEX_CDAV" => array("USER_TYPE_ID" => "string", "SORT" => 100, "EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "CalDAV calendar"), "UF_BXDAVEX_CDAV_LBL" => array("USER_TYPE_ID" => "string", "SORT" => 100, "EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "CalDAV calendar modification label")); $arUserCustomFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_" . $iblockId . "_SECTION"); foreach ($arUserCustomFields as $key => $value) { if (array_key_exists($key, $arRequiredFields)) { unset($arRequiredFields[$key]); } } foreach ($arRequiredFields as $requiredFieldKey => $requiredFieldValue) { $arFields = array("ENTITY_ID" => "IBLOCK_" . $iblockId . "_SECTION", "FIELD_NAME" => $requiredFieldKey, "SHOW_IN_LIST" => "N", "IS_SEARCHABLE" => "N", "SHOW_FILTER" => "N", "EDIT_IN_LIST" => "N"); $dbLang = CLanguage::GetList($b = "", $o = "", array()); while ($arLang = $dbLang->Fetch()) { $arFields["EDIT_FORM_LABEL"][$arLang["LID"]] = $requiredFieldValue["EDIT_FORM_LABEL_DEFAULT_MESSAGE"]; } $obUserField = new CUserTypeEntity(); $obUserField->Add(array_merge($arFields, $requiredFieldValue)); } }
if ('Y' == $arIBlockInfo['NEED_LINK']) { $arFields = array( 'IBLOCK_ID' => $arIBlockInfo['OFFERS_IBLOCK_ID'], 'NAME' => Loc::getMessage('CAT_IBLOCK_OFFERS_TITLE_LINK_NAME'), 'ACTIVE' => 'Y', 'PROPERTY_TYPE' => 'E', 'MULTIPLE' => 'N', 'LINK_IBLOCK_ID' => $intIBlockID, 'CODE' => 'CML2_LINK', 'XML_ID' => 'CML2_LINK', "FILTRABLE" => "Y", 'USER_TYPE' => 'SKU', ); $obProp = new CIBlockProperty(); $mxPropID = $obProp->Add($arFields); if (!$mxPropID) { $boolFlag = false; $strWarning .= Loc::getMessage( 'CAT_IBLOCK_OFFERS_ERR_CANNOT_CREATE_LINK', array( '#OFFERS#' => $arCurrentIBlocks[$arIBlockInfo['OFFERS_IBLOCK_ID']]['INFO'], '#ERR#' => $obProp->LAST_ERROR ) ).'<br />'; } else { $arNewIBlocksList[$intIBlockID]['OFFERS_PROP'] = $mxPropID; $arNewIBlocksList[$intIBlockID]['NEED_IS_REQUIRED'] = 'N';
$propBlogPostID = (int)$propIBlock['ID']; } elseif ($propIBlock['CODE'] == CIBlockPropertyTools::CODE_BLOG_COMMENTS_COUNT) { $propBlogCommentsCountID = (int)$propIBlock['ID']; } } if (($propBlogPostID == 0 || $propBlogCommentsCountID == 0) && $arParams['BLOG_FROM_AJAX'] === 'N') { $obProperty = new CIBlockProperty; if ($propBlogPostID == 0) { $propBlogPostID = (int)$obProperty->Add(array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => GetMessage("IBLOCK_CSC_BLOG_POST_ID"), "CODE" => CIBlockPropertyTools::CODE_BLOG_POST )); } if ($propBlogCommentsCountID == 0) { $propBlogCommentsCountID = (int)$obProperty->Add(array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => GetMessage("IBLOCK_CSC_BLOG_COMMENTS_CNT"), "CODE" => CIBlockPropertyTools::CODE_BLOG_COMMENTS_COUNT )); }
function ImportProperties($XML_PROPERTIES_PARENT, $IBLOCK_ID) { $obProperty = new CIBlockProperty; $sort = 100; $arElementFields = array( "CML2_ACTIVE" => GetMessage("IBLOCK_XML2_BX_ACTIVE"), "CML2_CODE" => GetMessage("IBLOCK_XML2_SYMBOL_CODE"), "CML2_SORT" => GetMessage("IBLOCK_XML2_SORT"), "CML2_ACTIVE_FROM" => GetMessage("IBLOCK_XML2_START_TIME"), "CML2_ACTIVE_TO" => GetMessage("IBLOCK_XML2_END_TIME"), "CML2_PREVIEW_TEXT" => GetMessage("IBLOCK_XML2_ANONS"), "CML2_DETAIL_TEXT" => GetMessage("IBLOCK_XML2_DETAIL"), "CML2_PREVIEW_PICTURE" => GetMessage("IBLOCK_XML2_PREVIEW_PICTURE"), ); $rs = $this->_xml_file->GetList( array("ID" => "asc"), array("PARENT_ID" => $XML_PROPERTIES_PARENT), array("ID") ); while($ar = $rs->Fetch()) { $XML_ENUM_PARENT = false; $arProperty = array( ); $rsP = $this->_xml_file->GetList( array("ID" => "asc"), array("PARENT_ID" => $ar["ID"]) ); while($arP = $rsP->Fetch()) { if(isset($arP["VALUE_CLOB"])) $arP["VALUE"] = $arP["VALUE_CLOB"]; if($arP["NAME"]==GetMessage("IBLOCK_XML2_ID")) { $arProperty["XML_ID"] = $arP["VALUE"]; if(array_key_exists($arProperty["XML_ID"], $arElementFields)) break; } elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_NAME")) $arProperty["NAME"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_MULTIPLE")) $arProperty["MULTIPLE"] = ($arP["VALUE"]=="true") || intval($arP["VALUE"])? "Y": "N"; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_SORT")) $arProperty["SORT"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_CODE")) $arProperty["CODE"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_DEFAULT_VALUE")) $arProperty["DEFAULT_VALUE"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_SERIALIZED")) $arProperty["SERIALIZED"] = ($arP["VALUE"]=="true") || intval($arP["VALUE"])? "Y": "N"; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_PROPERTY_TYPE")) $arProperty["PROPERTY_TYPE"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_ROWS")) $arProperty["ROW_COUNT"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_COLUMNS")) $arProperty["COL_COUNT"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_LIST_TYPE")) $arProperty["LIST_TYPE"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_FILE_EXT")) $arProperty["FILE_TYPE"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_FIELDS_COUNT")) $arProperty["MULTIPLE_CNT"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_USER_TYPE")) $arProperty["USER_TYPE"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_WITH_DESCRIPTION")) $arProperty["WITH_DESCRIPTION"] = ($arP["VALUE"]=="true") || intval($arP["VALUE"])? "Y": "N"; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_SEARCH")) $arProperty["SEARCHABLE"] = ($arP["VALUE"]=="true") || intval($arP["VALUE"])? "Y": "N"; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_FILTER")) $arProperty["FILTRABLE"] = ($arP["VALUE"]=="true") || intval($arP["VALUE"])? "Y": "N"; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_LINKED_IBLOCK")) $arProperty["LINK_IBLOCK_ID"] = $this->GetIBlockByXML_ID($arP["VALUE"]); elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_CHOICE_VALUES")) $XML_ENUM_PARENT = $arP["ID"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_BX_IS_REQUIRED")) $arProperty["IS_REQUIRED"] = ($arP["VALUE"]=="true") || intval($arP["VALUE"])? "Y": "N"; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_VALUES_TYPE")) { if($arP["VALUE"] == GetMessage("IBLOCK_XML2_TYPE_LIST")) $arProperty["PROPERTY_TYPE"] = "L"; elseif($arP["VALUE"] == GetMessage("IBLOCK_XML2_TYPE_NUMBER")) $arProperty["PROPERTY_TYPE"] = "N"; } elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_VALUES_TYPES")) { //This property metadata contains information about it's type $rsTypes = $this->_xml_file->GetList( array("ID" => "asc"), array("PARENT_ID" => $arP["ID"]), array("ID", "LEFT_MARGIN", "RIGHT_MARGIN", "NAME") ); $arType = $rsTypes->Fetch(); //We'll process only properties with NOT composing types //composed types will be supported only as simple string properties if($arType && !$rsTypes->Fetch()) { $rsType = $this->_xml_file->GetList( array("ID" => "asc"), array("PARENT_ID" => $arType["ID"]), array("ID", "LEFT_MARGIN", "RIGHT_MARGIN", "NAME", "VALUE") ); while($arType = $rsType->Fetch()) { if($arType["NAME"] == GetMessage("IBLOCK_XML2_TYPE")) { if($arType["VALUE"] == GetMessage("IBLOCK_XML2_TYPE_LIST")) $arProperty["PROPERTY_TYPE"] = "L"; elseif($arType["VALUE"] == GetMessage("IBLOCK_XML2_TYPE_NUMBER")) $arProperty["PROPERTY_TYPE"] = "N"; } elseif($arType["NAME"] == GetMessage("IBLOCK_XML2_CHOICE_VALUES")) { $XML_ENUM_PARENT = $arType["ID"]; } } } } } if(array_key_exists($arProperty["XML_ID"], $arElementFields)) continue; // Skip properties with no choice values // http://jabber.bx/view.php?id=30476 $arEnumXmlNodes = array(); if($XML_ENUM_PARENT) { $rsE = $this->_xml_file->GetList( array("ID" => "asc"), array("PARENT_ID" => $XML_ENUM_PARENT) ); while($arE = $rsE->Fetch()) { if(isset($arE["VALUE_CLOB"])) $arE["VALUE"] = $arE["VALUE_CLOB"]; $arEnumXmlNodes[] = $arE; } if (empty($arEnumXmlNodes)) continue; } if($arProperty["SERIALIZED"] == "Y") $arProperty["DEFAULT_VALUE"] = unserialize($arProperty["DEFAULT_VALUE"]); $rsProperty = $obProperty->GetList(array(), array("IBLOCK_ID"=>$IBLOCK_ID, "XML_ID"=>$arProperty["XML_ID"])); if($arDBProperty = $rsProperty->Fetch()) { $bChanged = false; foreach($arProperty as $key=>$value) { if($arDBProperty[$key] !== $value) { $bChanged = true; break; } } if(!$bChanged) $arProperty["ID"] = $arDBProperty["ID"]; elseif($obProperty->Update($arDBProperty["ID"], $arProperty)) $arProperty["ID"] = $arDBProperty["ID"]; else return $obProperty->LAST_ERROR; } else { $arProperty["IBLOCK_ID"] = $IBLOCK_ID; $arProperty["ACTIVE"] = "Y"; if(!array_key_exists("PROPERTY_TYPE", $arProperty)) $arProperty["PROPERTY_TYPE"] = "S"; if(!array_key_exists("SORT", $arProperty)) $arProperty["SORT"] = $sort; if(!array_key_exists("CODE", $arProperty)) { $arProperty["CODE"] = CUtil::translit($arProperty["NAME"], LANGUAGE_ID, array( "max_len" => 50, "change_case" => 'U', // 'L' - toLower, 'U' - toUpper, false - do not change "replace_space" => '_', "replace_other" => '_', "delete_repeat_replace" => true, )); if(preg_match('/^[0-9]/', $arProperty["CODE"])) $arProperty["CODE"] = '_'.$arProperty["CODE"]; } $arProperty["ID"] = $obProperty->Add($arProperty); if(!$arProperty["ID"]) return $obProperty->LAST_ERROR; } if($XML_ENUM_PARENT) { $arEnumMap = array(); $arProperty["VALUES"] = array(); $rsEnum = CIBlockProperty::GetPropertyEnum($arProperty["ID"]); while($arEnum = $rsEnum->Fetch()) { $arProperty["VALUES"][$arEnum["ID"]] = $arEnum; $arEnumMap[$arEnum["XML_ID"]] = &$arProperty["VALUES"][$arEnum["ID"]]; } foreach($arEnumXmlNodes as $i => $arE) { if( $arE["NAME"] == GetMessage("IBLOCK_XML2_CHOICE") || $arE["NAME"] == GetMessage("IBLOCK_XML2_CHOICE_VALUE") ) { $arE = $this->_xml_file->GetAllChildrenArray($arE); if(isset($arE[GetMessage("IBLOCK_XML2_ID")])) { $xml_id = $arE[GetMessage("IBLOCK_XML2_ID")]; if(!array_key_exists($xml_id, $arEnumMap)) { $arProperty["VALUES"]["n".$i] = array(); $arEnumMap[$xml_id] = &$arProperty["VALUES"]["n".$i]; $i++; } $arEnumMap[$xml_id]["CML2_EXPORT_FLAG"] = true; $arEnumMap[$xml_id]["XML_ID"] = $xml_id; if(isset($arE[GetMessage("IBLOCK_XML2_VALUE")])) $arEnumMap[$xml_id]["VALUE"] = $arE[GetMessage("IBLOCK_XML2_VALUE")]; if(isset($arE[GetMessage("IBLOCK_XML2_BY_DEFAULT")])) $arEnumMap[$xml_id]["DEF"] = ($arE[GetMessage("IBLOCK_XML2_BY_DEFAULT")]=="true") || intval($arE[GetMessage("IBLOCK_XML2_BY_DEFAULT")])? "Y": "N"; if(isset($arE[GetMessage("IBLOCK_XML2_SORT")])) $arEnumMap[$xml_id]["SORT"] = intval($arE[GetMessage("IBLOCK_XML2_SORT")]); } } elseif( $arE["NAME"] == GetMessage("IBLOCK_XML2_TYPE_LIST") ) { $arE = $this->_xml_file->GetAllChildrenArray($arE); if(isset($arE[GetMessage("IBLOCK_XML2_VALUE_ID")])) { $xml_id = $arE[GetMessage("IBLOCK_XML2_VALUE_ID")]; if(!array_key_exists($xml_id, $arEnumMap)) { $arProperty["VALUES"]["n".$i] = array(); $arEnumMap[$xml_id] = &$arProperty["VALUES"]["n".$i]; $i++; } $arEnumMap[$xml_id]["CML2_EXPORT_FLAG"] = true; $arEnumMap[$xml_id]["XML_ID"] = $xml_id; if(isset($arE[GetMessage("IBLOCK_XML2_VALUE")])) $arEnumMap[$xml_id]["VALUE"] = $arE[GetMessage("IBLOCK_XML2_VALUE")]; } } } $bUpdateOnly = array_key_exists("bUpdateOnly", $this->next_step) && $this->next_step["bUpdateOnly"]; $sort = 100; foreach($arProperty["VALUES"] as $id=>$arEnum) { if(!isset($arEnum["CML2_EXPORT_FLAG"])) { //Delete value only when full exchange happened if(!$bUpdateOnly) $arProperty["VALUES"][$id]["VALUE"] = ""; } elseif(isset($arEnum["SORT"])) { if($arEnum["SORT"] > $sort) $sort = $arEnum["SORT"] + 100; } else { $arProperty["VALUES"][$id]["SORT"] = $sort; $sort += 100; } } $obProperty->UpdateEnum($arProperty["ID"], $arProperty["VALUES"], false); } $sort += 100; } return true; }
public static function CreateElementProperty($iblockId) { $prop = array('CODE' => 'CAL_CONVERTED', 'TYPE' => 'S', 'NAME' => 'CAL_CONVERTED'); $code = $prop['CODE']; $rsProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $iblockId, "CODE" => $code)); $arProperty = $rsProperty->Fetch(); if (!$arProperty) { $obProperty = new CIBlockProperty(); $obProperty->Add(array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "USER_TYPE" => false, "PROPERTY_TYPE" => $prop['TYPE'], "MULTIPLE" => 'N', "NAME" => $prop['NAME'], "CODE" => $prop['CODE'])); } }
function CheckSKUProperty($ID, $SKUID) { $arResult = false; $ID = (int) $ID; $SKUID = (int) $SKUID; if ($ID > 0 && $SKUID > 0) { $intSKUPropID = 0; $ibp = new CIBlockProperty(); $arProp = GetSKUProperty($ID, $SKUID); if (empty($arProp) || is_array($arProp) && $arProp['MULTIPLE'] != 'N') { $arOFProperty = array('NAME' => GetMessage('IB_E_OF_SKU_PROPERTY_NAME'), 'IBLOCK_ID' => $SKUID, 'PROPERTY_TYPE' => Iblock\PropertyTable::TYPE_ELEMENT, 'USER_TYPE' => CIBlockPropertyTools::USER_TYPE_SKU_LINK, 'LINK_IBLOCK_ID' => $ID, 'ACTIVE' => 'Y', 'SORT' => '5', 'MULTIPLE' => 'N', 'CODE' => CIBlockPropertyTools::CODE_SKU_LINK, 'XML_ID' => CIBlockPropertyTools::XML_SKU_LINK, 'FILTRABLE' => 'Y', 'SEARCHABLE' => 'N'); $intSKUPropID = $ibp->Add($arOFProperty); if (!$intSKUPropID) { $arResult = array('RESULT' => 'ERROR', 'MESSAGE' => $ibp->LAST_ERROR); } } elseif ($arProp['USER_TYPE'] != CIBlockPropertyTools::USER_TYPE_SKU_LINK || $arProp['XML_ID'] != CIBlockPropertyTools::XML_SKU_LINK) { $arFields = array('USER_TYPE' => CIBlockPropertyTools::USER_TYPE_SKU_LINK, 'XML_ID' => CIBlockPropertyTools::XML_SKU_LINK); $boolFlag = $ibp->Update($arProp['ID'], $arFields); if (false === $boolFlag) { $arResult = array('RESULT' => 'ERROR', 'MESSAGE' => $ibp->LAST_ERROR); } else { $intSKUPropID = $arProp['ID']; } } else { $intSKUPropID = $arProp['ID']; } $intSKUPropID = (int) $intSKUPropID; if ($intSKUPropID > 0) { $arResult = array('RESULT' => 'OK', 'VALUE' => $intSKUPropID); } } else { $arResult = array('RESULT' => 'ERROR', 'MESSAGE' => GetMessage('IB_E_OF_ERR_SKU_IBLOCKS_IS_ABSENT')); } return $arResult; }
$arParams["WATERMARK_POSITION"] = str_replace($arPositions2, $arPositions, $arParams["WATERMARK_POSITION"]); } else { $arParams["WATERMARK_POSITION"] = "BottomRight"; } $arParams["WATERMARK_TRANSPARENCY"] = trim($arParams["WATERMARK_TRANSPARENCY"]); $arParams["WATERMARK_MIN_PICTURE_SIZE"] = intVal($arParams["WATERMARK_MIN_PICTURE_SIZE"]) > 0 ? intVal($arParams["WATERMARK_MIN_PICTURE_SIZE"]) : 800; if (!function_exists("gd_info")) { $arParams["USE_WATERMARK"] = "N"; } } // Check REAL_PICTURE property $rsProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "CODE" => 'REAL_PICTURE')); $arProperty = $rsProperty->Fetch(); if (!$arProperty) { $obProperty = new CIBlockProperty(); $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "F", "FILE_TYPE" => "jpg, gif, bmp, png, jpeg", "MULTIPLE" => 'N', "NAME" => GetMessage("P_REAL_PICTURE"), "CODE" => "REAL_PICTURE")); } // Get user options $arParams["USER_SETTINGS"] = CUserOptions::GetOption('main', $arParams["UPLOADER_ID"]); $arParams["GALLERY_SIZE"] = intVal($arParams["GALLERY_SIZE"]) * 1024 * 1024; $arParams["ALBUM_PHOTO_THUMBS"] = array("SIZE" => intVal($arParams["ALBUM_PHOTO_THUMBS_WIDTH"]) > 0 ? intVal($arParams["ALBUM_PHOTO_THUMBS_WIDTH"]) : 120); // Thumbnail size $arParams["THUMBNAIL_SIZE"] = intval($arParams["THUMBNAIL_SIZE"]) > 0 ? intval($arParams["THUMBNAIL_SIZE"]) : 90; if ($arParams["THUMBNAIL_SIZE"] < 50) { $arParams["THUMBNAIL_SIZE"] = 50; } // We use only square thumbnails, so we increase thumbnail size for better quality $thumbSize = round($arParams["THUMBNAIL_SIZE"] * 1.8); $arParams["ORIGINAL_SIZE"] = intVal($arParams["ORIGINAL_SIZE"]); $arParams["NEW_ALBUM_NAME"] = strLen(GetMessage("P_NEW_ALBUM")) > 0 ? GetMessage("P_NEW_ALBUM") : "New album"; /***************** STANDART ****************************************/
public function AddDocumentField($documentType, $arFields) { $iblockId = intval(substr($documentType, strlen("iblock_"))); if ($iblockId <= 0) { throw new CBPArgumentOutOfRangeException("documentType", $documentType); } if (substr($arFields["code"], 0, strlen("PROPERTY_")) == "PROPERTY_") { $arFields["code"] = substr($arFields["code"], strlen("PROPERTY_")); } $arFieldsTmp = array("NAME" => $arFields["name"], "ACTIVE" => "Y", "SORT" => 150, "CODE" => $arFields["code"], "MULTIPLE" => $arFields["multiple"], "IS_REQUIRED" => $arFields["required"], "IBLOCK_ID" => $iblockId, "FILTRABLE" => "Y"); if (strpos("0123456789", substr($arFieldsTmp["CODE"], 0, 1)) !== false) { unset($arFieldsTmp["CODE"]); } if (array_key_exists("additional_type_info", $arFields)) { $arFieldsTmp["LINK_IBLOCK_ID"] = intval($arFields["additional_type_info"]); } if (strstr($arFields["type"], ":") !== false) { list($arFieldsTmp["PROPERTY_TYPE"], $arFieldsTmp["USER_TYPE"]) = explode(":", $arFields["type"], 2); if ($arFields["type"] == "E:EList") { $arFieldsTmp["LINK_IBLOCK_ID"] = $arFields["options"]; } } elseif ($arFields["type"] == "user") { $arFieldsTmp["PROPERTY_TYPE"] = "S"; $arFieldsTmp["USER_TYPE"] = "UserID"; } elseif ($arFields["type"] == "date" || $arFields["type"] == "datetime") { $arFieldsTmp["PROPERTY_TYPE"] = "S"; $arFieldsTmp["USER_TYPE"] = "DateTime"; } elseif ($arFields["type"] == "file") { $arFieldsTmp["PROPERTY_TYPE"] = "F"; $arFieldsTmp["USER_TYPE"] = ""; } elseif ($arFields["type"] == "select") { $arFieldsTmp["PROPERTY_TYPE"] = "L"; $arFieldsTmp["USER_TYPE"] = false; if (is_array($arFields["options"])) { $i = 10; foreach ($arFields["options"] as $k => $v) { $arFieldsTmp["VALUES"][] = array("XML_ID" => $k, "VALUE" => $v, "DEF" => "N", "SORT" => $i); $i = $i + 10; } } } else { $arFieldsTmp["PROPERTY_TYPE"] = $arFields["type"]; $arFieldsTmp["USER_TYPE"] = false; } if ($arFieldsTmp["PROPERTY_TYPE"] == "T") { $arFieldsTmp["PROPERTY_TYPE"] = "S"; $arFieldsTmp["ROW_COUNT"] = 5; } $ibp = new CIBlockProperty(); $propId = $ibp->Add($arFieldsTmp); if (intval($propId) <= 0) { throw new Exception($ibp->LAST_ERROR); } return "PROPERTY_" . $arFields["code"]; }
function CheckSKUProperty($ID, $SKUID) { $arResult = false; $ID = intval($ID); $SKUID = intval($SKUID); if (0 < $ID && 0 < $SKUID) { $intSKUPropID = 0; $ibp = new CIBlockProperty(); $arProp = GetSKUProperty($ID, $SKUID); if (false === $arProp || true == is_array($arProp) && 'N' != $arProp['MULTIPLE']) { $arOFProperty = array('NAME' => GetMessage('IB_E_OF_SKU_PROPERTY_NAME'), 'IBLOCK_ID' => $SKUID, 'PROPERTY_TYPE' => 'E', 'USER_TYPE' => 'SKU', 'LINK_IBLOCK_ID' => $ID, 'ACTIVE' => 'Y', 'SORT' => '5', 'MULTIPLE' => 'N', 'CODE' => 'CML2_LINK', 'XML_ID' => 'CML2_LINK', "FILTRABLE" => "Y", "SEARCHABLE" => "N"); $intSKUPropID = $ibp->Add($arOFProperty); if (!$intSKUPropID) { $arResult = array('RESULT' => 'ERROR', 'MESSAGE' => $ibp->LAST_ERROR); } } elseif ('SKU' != $arProp['USER_TYPE'] || 'CML2_LINK' != $arProp['XML_ID']) { $arFields = array('USER_TYPE' => 'SKU', 'XML_ID' => 'CML2_LINK'); $boolFlag = $ibp->Update($arProp['ID'], $arFields); if (false === $boolFlag) { $arResult = array('RESULT' => 'ERROR', 'MESSAGE' => $ibp->LAST_ERROR); } else { $intSKUPropID = $arProp['ID']; } } else { $intSKUPropID = $arProp['ID']; } if (0 < intval($intSKUPropID)) { $arResult = array('RESULT' => 'OK', 'VALUE' => $intSKUPropID); } } else { $arResult = array('RESULT' => 'ERROR', 'MESSAGE' => GetMessage('IB_E_OF_ERR_SKU_IBLOCKS_IS_ABSENT')); } return $arResult; }
public static function Add($iblock_id, $arFields) { if ($iblock_id > 0) { $property_id = intval($arFields["ID"]); if ($property_id > 0) { return new CListPropertyField($iblock_id, "PROPERTY_" . $property_id, $arFields["NAME"], $arFields["SORT"]); } else { $arFields["IBLOCK_ID"] = $iblock_id; if (strpos($arFields["TYPE"], ":") !== false) { list($arFields["PROPERTY_TYPE"], $arFields["USER_TYPE"]) = explode(":", $arFields["TYPE"]); } else { $arFields["PROPERTY_TYPE"] = $arFields["TYPE"]; } $arFields["MULTIPLE_CNT"] = 1; $arFields["CHECK_PERMISSIONS"] = "N"; $obProperty = new CIBlockProperty(); $res = $obProperty->Add($arFields); if ($res) { if ($arFields["PROPERTY_TYPE"] == "L" && is_array($arFields["LIST"])) { CList::UpdatePropertyList($res, $arFields["LIST"]); } return new CListPropertyField($iblock_id, "PROPERTY_" . $res, $arFields["NAME"], $arFields["SORT"]); } } } return null; }
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']); } } if (!$cibp->Add($_property)) { $DB->Rollback(); ShowError(GetMessage('GREENSIGHT_IBLOCK_IMPORT_ERROR_PROP_CREATE')); break 3; } } } } } while (false); $DB->Commit(); echo GetMessage('GREENSIGHT_IBLOCK_IMPORT_OK'); } // подготовка данных для формы // список типов инфоблоков $arIBTypes = array('REFERENCE' => array(GetMessage('GREENSIGHT_IBLOCK_IMPORT_NEW')), 'REFERENCE_ID' => array(0)); $rsIBTypes = CIBlockType::GetList();
$arFields["VALUES"] = $arListValues; } if (COption::GetOptionString("iblock", "show_xml_id", "N") == "Y") { $arFields["XML_ID"] = $_POST["PROPERTY_XML_ID"]; } if (CIBlock::GetArrayByID($arFields["IBLOCK_ID"], "SECTION_PROPERTY") != "Y") { if ($arFields["SECTION_PROPERTY"] === "N" || $arFields["SMART_FILTER"] === "Y") { $ib = new CIBlock(); $ib->Update($arFields["IBLOCK_ID"], array("SECTION_PROPERTY" => "Y")); } } $ibp = new CIBlockProperty(); if ($str_PROPERTY_ID > 0) { $res = $ibp->Update($str_PROPERTY_ID, $arFields, true); } else { $str_PROPERTY_ID = $ibp->Add($arFields); $res = $str_PROPERTY_ID > 0; if (!$res) { $str_PROPERTY_ID = 'n0'; } } if (!$res) { $strWarning .= $ibp->LAST_ERROR; $bVarsFromForm = true; if ($e = $APPLICATION->GetException()) { $message = new CAdminMessage(GetMessage("admin_lib_error"), $e); } } else { if (strlen($apply) <= 0) { if ($bSectionPopup) { if ($arFields['PROPERTY_TYPE'] == "S" && !$arFields['USER_TYPE']) {
/** * Adds new properties in block * @param $arParams * @return bool */ public static function adjustIBlock($arParams) { $arPropertiesNeed = array(); // Array of properties needed to create foreach ($arParams['converters'] as $key => $val) { if ($val['code'] == "real_picture" || $val['code'] == "thumbnail") { continue; } $db_res = CIBlock::GetProperties($arParams["IBLOCK_ID"], array(), array("CODE" => $val['code'])); if (!($db_res && ($res = $db_res->Fetch()))) { $arPropertiesNeed[] = $val['code']; } } if (count($arPropertiesNeed) > 0) { $obProperty = new CIBlockProperty(); foreach ($arPropertiesNeed as $key) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "F", "MULTIPLE" => "N", "NAME" => strLen(GetMessage("P_" . strToUpper($key))) > 0 ? GetMessage("P_" . strToUpper($key)) : strToUpper($key), "CODE" => strToUpper($key), "FILE_TYPE" => "jpg, gif, bmp, png, jpeg")); } } // Check Public property $arPropertiesNeed = array(); foreach (array("PUBLIC_ELEMENT", "APPROVE_ELEMENT") as $key) { $db_res = CIBlock::GetProperties($arParams["IBLOCK_ID"], array(), array("CODE" => $key)); if (!$db_res || !($res = $db_res->Fetch())) { $arPropertiesNeed[] = $key; } } if (count($arPropertiesNeed) > 0) { $obProperty = new CIBlockProperty(); foreach ($arPropertiesNeed as $key) { $res = $obProperty->Add(array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "PROPERTY_TYPE" => "S", "MULTIPLE" => "N", "NAME" => strLen(GetMessage("P_" . $key)) > 0 ? GetMessage("P_" . $key) : $key, "DEFAULT_VALUE" => "N", "CODE" => $key)); } } return true; }