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; }
/** * Генерация создания Информационного блока * * generateAddCode * @param array $IblockCode * @return bool|string */ public function generateAddCode($IblockCode) { $return = array(); $iblockObject = $this->iblock->GetList(array(), array('CODE' => $IblockCode, 'CHECK_PERMISSIONS' => 'N')); if ($item = $iblockObject->Fetch()) { # Установка групп пользователей $this->setUserGroupId($item['ID'], $item); $item['FIELDS'] = \CIBlock::GetFields($item['ID']); Helper::unsetFields(array('ID'), $item); if ($return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockIntegrate', 'Add', array($item))) { $IblockProperty = new \CIBlockProperty(); $iblockPropertyQuery = $IblockProperty->GetList(array(), array('IBLOCK_CODE' => $item['CODE'])); while ($iblockProperty = $iblockPropertyQuery->Fetch()) { Helper::unsetFields(array('ID'), $iblockProperty); $iblockProperty['IBLOCK_CODE'] = $item['CODE']; $propertyQuery = \CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $iblockProperty['IBLOCK_ID'], "CODE" => $iblockProperty['CODE'])); while ($propertyValues = $propertyQuery->Fetch()) { Helper::unsetFields(array('ID', 'PROPERTY_ID'), $propertyValues); $iblockProperty['VALUES'][] = $propertyValues; } if (!is_null($iblockProperty['LINK_IBLOCK_ID'])) { $linkedIBlock = $this->iblock->GetList(array(), array('ID' => $iblockProperty['LINK_IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'))->Fetch(); $iblockProperty['LINK_IBLOCK_CODE'] = $linkedIBlock['CODE']; } $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockPropertyIntegrate', 'Add', array($iblockProperty)); } return implode(PHP_EOL, $return); } else { return false; } } else { return false; } }
/** * Генерация создания * * generateAddCode * @param array $IblockTypeId * @return bool|string */ public function generateAddCode($IblockTypeId) { $iBlock = new \CIBlock(); $CIblockType = new \CIBlockType(); $lang = new \CLanguage(); $return = array(); $dbIblockType = $CIblockType->GetByID($IblockTypeId); if ($arIblockType = $dbIblockType->GetNext()) { $Iblock = new \CIBlock(); $dbIblock = $Iblock->GetList(array(), array('TYPE' => $IblockTypeId, 'CHECK_PERMISSIONS' => 'N')); while ($arIblock = $dbIblock->GetNext()) { $IblockProperty = new \CIBlockProperty(); $dbIblockProperty = $IblockProperty->GetList(array(), array('IBLOCK_CODE' => $arIblock['CODE'], 'CHECK_PERMISSIONS' => 'N')); while ($arIblockProperty = $dbIblockProperty->GetNext()) { $dbPropertyValues = \CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $arIblockProperty['IBLOCK_ID'], "CODE" => $arIblockProperty['CODE'])); while ($arPropertyValues = $dbPropertyValues->Fetch()) { $arIblockProperty['VALUES'][$arPropertyValues['ID']] = $arPropertyValues; } Helper::unsetFields(array('ID', '~ID', 'IBLOCK_ID', '~IBLOCK_ID'), $arIblockProperty); $arIblockProperty['IBLOCK_CODE'] = $arIblock['CODE']; foreach ($arIblockProperty as $k => $v) { if (strstr($k, "~") || is_null($v)) { unset($arIblockProperty[$k]); } } if (isset($arIblockProperty['LINK_IBLOCK_ID'])) { $res = $iBlock->GetList(array(), array("ID" => $arIblockProperty['LINK_IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N')); if ($ar_res = $res->GetNext()) { unset($arIblockProperty['LINK_IBLOCK_ID']); $arIblockProperty['LINK_IBLOCK_CODE'] = $ar_res['CODE']; } } $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockPropertyIntegrate', 'Add', array($arIblockProperty)); } foreach ($arIblock as $k => $v) { if (strstr($k, "~") || $k == 'ID') { unset($arIblock[$k]); } } $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockIntegrate', 'Add', array($arIblock)); } foreach ($arIblockType as $k => $v) { if (strstr($k, "~") || is_null($v)) { unset($arIblockType[$k]); } } $rsLang = $lang->GetList($by = "lid", $order = "desc"); while ($arLang = $rsLang->Fetch()) { $arTypeLang = $CIblockType->GetByIDLang($IblockTypeId, $arLang['LID']); $arIblockType["LANG"][$arLang['LID']] = array('NAME' => $arTypeLang['NAME'], 'SECTION_NAME' => $arTypeLang['SECTION_NAME'], 'ELEMENT_NAME' => $arTypeLang['ELEMENT_NAME']); } $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockTypeIntegrate', 'Add', array($arIblockType)); $return = array_reverse($return); return implode(PHP_EOL, $return); } else { return false; } }
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; }
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; }
/** * @param string $propCode * @param string $userType * @return bool * @throws PropertyAlreadyExistException */ protected function checkExistProperty($propCode, $userType) { $propertyModel = new \CIBlockProperty(); $rsProperty = $propertyModel->GetList([], ['IBLOCK_ID' => $this->getIblockId(), 'CODE' => $propCode]); if ($property = $rsProperty->Fetch()) { if ($property['USER_TYPE'] !== $userType) { throw new PropertyAlreadyExistException($propCode); } else { return true; } } return false; }
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 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 _getPropertiesEx($arParams) { $arFilter = array(); $arProperties = array(); $arPropListIds = array(); if (notEmpty($arParams["type"])) { $arFilter["PROPERTY_TYPE"] = $arParams["type"]; } if (notEmpty($arParams["iblock_id"])) { $arFilter["IBLOCK_ID"] = iblock($arParams["iblock_id"]); } $resProperties = \CIBlockProperty::GetList(array(), $arFilter); while ($arProperty = $resProperties->Fetch()) { $arProperties[$arProperty["CODE"]] = $arProperty; if ($arProperty["PROPERTY_TYPE"] == "L") { $arPropListIds[] = $arProperty["ID"]; } } // В фильтр CIBlockPropertyEnum::GetList() нельзя передать // PROPERTY_ID в виде массива ID, поэтому перебираем // каждое свойство в цикле foreach ($arPropListIds as $propListId) { $resPropValues = \CIBlockPropertyEnum::GetList(array('SORT' => 'ASC', 'VALUE' => 'ASC'), array('PROPERTY_ID' => $propListId)); while ($arPropValue = $resPropValues->Fetch()) { $arProperties[$arPropValue["PROPERTY_CODE"]]["VALUES"][$arPropValue["XML_ID"]] = $arPropValue["ID"]; } } return $arProperties; }
static function onBeforeElementAddHandler($arFields) { $IBLOCK_ID = Config\Option::get("citfact.replaceurl", "IBLOCK_ID", ""); $SECTION_ID = Config\Option::get("citfact.replaceurl", "SECTION_BREND_ID", "BRENDI"); $CODE_PROP = Config\Option::get("citfact.replaceurl", "PROPERTY_CODE_BRENDI", "BRENDI"); if ($IBLOCK_ID == $arFields["IBLOCK_ID"]) { $propertyBrand = \CIBlockProperty::GetByID($CODE_PROP, $arFields["IBLOCK_ID"]); if ($arResultProperty = $propertyBrand->GetNext()) { $propertyBrandValue = \CIBlockPropertyEnum::GetByID($arFields["PROPERTY_VALUES"][$arResultProperty["ID"]][0]["VALUE"]); } $rqParentSection = \CIBlockSection::GetByID($SECTION_ID); if ($arParentSection = $rqParentSection->GetNext()) { $arFilter = array('IBLOCK_ID' => $arParentSection['IBLOCK_ID'], '>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'], '<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'], '>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']); // выберет потомков без учета активности $rqSectChild = \CIBlockSection::GetList(array('left_margin' => 'asc'), $arFilter); while ($arSectChild = $rqSectChild->GetNext()) { $arSections[$arSectChild["NAME"]] = $arSectChild["ID"]; } } if (array_key_exists($propertyBrandValue["VALUE"], $arSections)) { $arFields["IBLOCK_SECTION"][] = $arSections[$propertyBrandValue["VALUE"]]; } else { $arParams = array("replace_space" => "-", "replace_other" => "-"); $trans = \Cutil::translit($propertyBrandValue["VALUE"], "ru", $arParams); $bs = new \CIBlockSection(); $arFieldsNewSection = array("ACTIVE" => "Y", "IBLOCK_SECTION_ID" => $SECTION_ID, "IBLOCK_ID" => $IBLOCK_ID, "NAME" => $propertyBrandValue["VALUE"], "CODE" => $trans); $resultAdd = $bs->Add($arFieldsNewSection); $arFields["IBLOCK_SECTION"][] = $resultAdd; } } return true; }
private static function _init() { if (count(self::$types) == 0) { self::$types = array(); //Element fields self::$types["NAME"] = new CListFieldType("NAME", GetMessage("LISTS_LIST_FIELD_NAME"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["SORT"] = new CListFieldType("SORT", GetMessage("LISTS_LIST_FIELD_SORT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["ACTIVE_FROM"] = new CListFieldType("ACTIVE_FROM", GetMessage("LISTS_LIST_FIELD_ACTIVE_FROM"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["ACTIVE_TO"] = new CListFieldType("ACTIVE_TO", GetMessage("LISTS_LIST_FIELD_ACTIVE_TO"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["PREVIEW_PICTURE"] = new CListFieldType("PREVIEW_PICTURE", GetMessage("LISTS_LIST_FIELD_PREVIEW_PICTURE"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["PREVIEW_TEXT"] = new CListFieldType("PREVIEW_TEXT", GetMessage("LISTS_LIST_FIELD_PREVIEW_TEXT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["DETAIL_PICTURE"] = new CListFieldType("DETAIL_PICTURE", GetMessage("LISTS_LIST_FIELD_DETAIL_PICTURE"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["DETAIL_TEXT"] = new CListFieldType("DETAIL_TEXT", GetMessage("LISTS_LIST_FIELD_DETAIL_TEXT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["DATE_CREATE"] = new CListFieldType("DATE_CREATE", GetMessage("LISTS_LIST_FIELD_DATE_CREATE"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); self::$types["CREATED_BY"] = new CListFieldType("CREATED_BY", GetMessage("LISTS_LIST_FIELD_CREATED_BY"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); self::$types["TIMESTAMP_X"] = new CListFieldType("TIMESTAMP_X", GetMessage("LISTS_LIST_FIELD_TIMESTAMP_X"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); self::$types["MODIFIED_BY"] = new CListFieldType("MODIFIED_BY", GetMessage("LISTS_LIST_FIELD_MODIFIED_BY"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); //Property types self::$types["S"] = new CListFieldType("S", GetMessage("LISTS_LIST_FIELD_S"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["N"] = new CListFieldType("N", GetMessage("LISTS_LIST_FIELD_N"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["L"] = new CListFieldType("L", GetMessage("LISTS_LIST_FIELD_L"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["F"] = new CListFieldType("F", GetMessage("LISTS_LIST_FIELD_F"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["G"] = new CListFieldType("G", GetMessage("LISTS_LIST_FIELD_G"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["E"] = new CListFieldType("E", GetMessage("LISTS_LIST_FIELD_E"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); //User types foreach (CIBlockProperty::GetUserType() as $ar) { if (array_key_exists("GetPublicEditHTML", $ar)) { self::$types[$ar["PROPERTY_TYPE"] . ":" . $ar["USER_TYPE"]] = new CListFieldType($ar["PROPERTY_TYPE"] . ":" . $ar["USER_TYPE"], $ar["DESCRIPTION"], CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); } } } }
public function testAdd() { /** @var $dbList \CDBResult */ $dbList = \CIBlock::GetList(); $ibCountBefore = $dbList->SelectedRowsCount(); $beforeIds = array(); while ($arIblock = $dbList->Fetch()) { $beforeIds[] = $arIblock['ID']; } $this->_applyFixtures(self::FIXTURE_TYPE_ADD); $dbList = \CIBlock::GetList(); $ibCountAfter = $dbList->SelectedRowsCount(); $afterIds = array(); while ($arIblock = $dbList->Fetch()) { $afterIds[] = $arIblock['ID']; } $aAddedId = array_diff($afterIds, $beforeIds); $this->_processIblockId = array_shift($aAddedId); $this->assertNotEmpty($ibCountAfter, $this->errorMessage('record IB must be present')); $this->assertNotEquals($ibCountAfter, $ibCountBefore, $this->errorMessage('not also recording information block')); $this->assertNotEmpty($this->_processIblockId, $this->errorMessage('unavailable identifier of the new information block')); $rsProps = \CIBlockProperty::GetList(null, array('IBLOCK_ID' => $this->_processIblockId)); $this->assertNotEmpty($rsProps->AffectedRowsCount(), $this->errorMessage('added properties not available information block', array(':iblockId' => $this->_processIblockId))); $rsSections = \CIBlockSection::getList(null, array('IBLOCK_ID' => $this->_processIblockId), false, array('ID')); $this->assertNotEmpty($rsSections->AffectedRowsCount(), $this->errorMessage('added sections not available information block')); $registerRef = (bool) DbVersionReferencesTable::getList(array('filter' => array('=DB_VERSION' => Module::getInstance()->getDbVersion(), '=GROUP' => ReferenceController::GROUP_IBLOCK, '=ITEM_ID' => $this->_processIblockId)))->fetch(); $this->assertTrue($registerRef, $this->errorMessage('In added apply not created iblock reference ' . $this->_processIblockId)); }
function getIBlockProperties($IBlockId) { $Props = array(); $rsProperty = CIBlockProperty::GetList(array('sort' => 'asc'), array('ACTIVE' => 'Y', 'IBLOCK_ID' => $IBlockId)); while ($arProperty = $rsProperty->Fetch()) { $Props[] = 'PROPERTY_' . $arProperty['CODE']; } return $Props; }
public function getOptions() { if (!isset($this->options)) { $res = \CIBlockProperty::GetPropertyEnum($this->data['ID'], array("SORT" => "asc"), array()); while ($row = $res->Fetch()) { $this->options[] = $row; } } return $this->options; }
function findId($code) { if (CModule::IncludeModule("iblock")) { $properties = CIBlockProperty::GetList(array("sort" => "asc", "name" => "asc"), array("ACTIVE" => "Y", 'CODE' => $code)); while ($prop_fields = $properties->GetNext()) { $temp = $prop_fields['ID']; } return $temp; } else { return false; } }
/** * Delete * @param $sIBlockCode * @param $sPropertyCode * @return array * @throws \Exception */ public static function Delete($sIBlockCode, $sPropertyCode) { $rsProperty = \CIBlockProperty::GetList(array(), array('IBLOCK_CODE' => $sIBlockCode, 'CODE' => $sPropertyCode)); if ($arProperty = $rsProperty->Fetch()) { if (\CIBlockProperty::Delete($arProperty['ID'])) { return true; } else { throw new BimException(__METHOD__ . "Iblock property delete error!"); } } else { throw new BimException(__METHOD__ . 'Not find property with code ' . $sPropertyCode); } }
/** * Получить ID значения свойства типа "список" у инфоблока * * @param string $iblockCode * @param string $propertyCode * @param string $enumCode * @return int|bool */ public static function getIblockPropertyEnumId($iblockCode, $propertyCode, $enumCode) { if (!empty(self::$iblockPropertyEnumId[$iblockCode][$propertyCode][$enumCode])) { return self::$iblockPropertyEnumId[$iblockCode][$propertyCode][$enumCode]; } if (!($iblockId = self::getIblockId($iblockCode))) { return false; } if ($enum = \CIBlockProperty::GetPropertyEnum($propertyCode, [], ['IBLOCK_ID' => $iblockId, 'EXTERNAL_ID' => $enumCode])->fetch()) { self::$iblockPropertyEnumId[$iblockCode][$propertyCode][$enumCode] = $enum['ID']; return $enum['ID']; } return false; }
protected function getOffers() { $arPropertyMap = array(); $arSelectedPropTypes = array('S', 'N', 'L', 'E', 'G'); $this->arSelectOfferProps = array(); $arOffers = \CCatalogSKU::GetInfoByProductIBlock($this->iBlockId); if (empty($arOffers['IBLOCK_ID'])) { return array(); } $this->intOfferIBlockID = $arOffers['IBLOCK_ID']; $rsOfferIBlocks = \CIBlock::GetByID($this->intOfferIBlockID); if (!($this->arOfferIBlock = $rsOfferIBlocks->Fetch())) { throw new SystemException("Bad offers iBlock ID (" . __CLASS__ . "::" . __METHOD__ . ")"); } $rsProps = \CIBlockProperty::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('IBLOCK_ID' => $this->intOfferIBlockID, 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N')); while ($arProp = $rsProps->Fetch()) { $arProp['ID'] = (int) $arProp['ID']; if ($arOffers['SKU_PROPERTY_ID'] != $arProp['ID']) { $arProp['USER_TYPE'] = (string) $arProp['USER_TYPE']; $arProp['CODE'] = (string) $arProp['CODE']; $this->arIblock['OFFERS_PROPERTY'][$arProp['ID']] = $arProp; $this->arProperties[$arProp['ID']] = $arProp; if (in_array($arProp['PROPERTY_TYPE'], $arSelectedPropTypes)) { $this->arSelectOfferProps[] = $arProp['ID']; } if ($arProp['CODE'] !== '') { foreach ($this->arIblock['PROPERTY'] as &$arMainProp) { if ($arMainProp['CODE'] == $arProp['CODE']) { $arPropertyMap[$arProp['ID']] = $arMainProp['CODE']; break; } } if (isset($arMainProp)) { unset($arMainProp); } } } } $this->arOfferIBlock['LID'] = $this->arIblock['LID']; $this->arOfferIBlock['PROPERTY'] = array(); $rsProps = \CIBlockProperty::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('IBLOCK_ID' => $this->intOfferIBlockID, 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N')); while ($arProp = $rsProps->Fetch()) { $arProp['ID'] = (int) $arProp['ID']; $arProp['USER_TYPE'] = (string) $arProp['USER_TYPE']; $arProp['CODE'] = (string) $arProp['CODE']; $this->arOfferIBlock['PROPERTY'][$arProp['ID']] = $arProp; } return $arOffers; }
function getPropName($code,$iblock_id){ $properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$iblock_id, "CODE"=>$code)); while ($prop_fields = $properties->GetNext()) { $res=$prop_fields["NAME"]; } /* foreach( $arResult["NAV_RESULT"]->arIBlockAllProps as $i=>$arPropFields){ if( $arPropFields["CODE"] == $code ){ return $arPropFields["NAME"]; } }*/ if ($res) return $res; return false; }
private function GetFilterData($IBLOCK_ID, $arFields = array()) { $filter_name = $this->sk_filter_name; global ${$filter_name}; $arPROPERTIES = array(); foreach ($arFields as $i => $PROP_ID) { $arSort = array(); $arFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => $IBLOCK_ID); if (intval($PROP_ID) > 0) { $arFilter["ID"] = $PROP_ID; } else { $arFilter["CODE"] = $PROP_ID; } $properties = CIBlockProperty::GetList($arSort, $arFilter); while ($prop_fields = $properties->GetNext()) { switch ($prop_fields["PROPERTY_TYPE"]) { case "L": $PROP_ENUM_VALUES = array(); $arPropSort = array("value" => "asc"); $arPropFilter = array("PROPERTY_ID" => $prop_fields["ID"], "IBLOCK_ID" => $IBLOCK_ID); $prop_enums = CIBlockPropertyEnum::GetList($arPropSort, $arPropFilter); while ($enum_fields = $prop_enums->GetNext()) { $PROP_ENUM_VALUES[] = $enum_fields; } $prop_fields["VALUES"] = $PROP_ENUM_VALUES; break; case "E": $PROP_ENUM_VALUES = array(); $arPropSort = array("NAME" => "asc"); $arPropFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => $prop_fields["LINK_IBLOCK_ID"]); $arSelFields = array("IBLOCK_ID", "ID", "NAME", "PROPERTY_*"); $db_vals = CIBlockElement::GetList($arPropSort, $arPropFilter, false, false, $arSelFields); while ($obElement = $db_vals->GetNextElement()) { $tmp = array(); $tmp = $obElement->GetFields(); $tmp["PROPERTIES"] = $obElement->GetProperties(); $PROP_ENUM_VALUES[$tmp["ID"]] = $tmp; } $prop_fields["VALUES"] = $PROP_ENUM_VALUES; break; } $arPROPERTIES[$prop_fields["ID"]] = $prop_fields; } } // // print_r( $arPROPERTIES ); return $arPROPERTIES; }
/** * Тип свойства - список * По коду и значению свойства получить id этого значения * В случае отсутствия, значение будет создано и будет возвращен его id * * <code> * $propertyCountryValue = getPropertyEnumValueId($IBLOCK_ID, 'COUNTRIES', 'Япония'); * $be = new CIBlockElement; * $be->Add(array( * "ACTIVE" => 'Y', * "IBLOCK_ID" => $IBLOCK_ID, * "NAME" => $name, * "PROPERTY_VALUES" => array( * 'COUNTRIES' => $propertyCountryValue, * ) * ); * </code> * @param $IBLOCK_ID int id инфоблока, в котором находится данное свойство * @param $prop string код свойства * @param $value string значение свойства * @return bool|int ID значения свойства или false, если не удалось найти свойство с таким кодом или не удалось создать запись с данным значением */ function getPropertyEnumValueId($IBLOCK_ID, $prop, $value) { $property = CIBlockProperty::GetByID($prop, $IBLOCK_ID)->Fetch(); if (!$property) { return false; } $ar_enum_list = CIBlockProperty::GetPropertyEnum($prop, array("SORT" => "asc"), array("IBLOCK_ID" => $IBLOCK_ID, 'VALUE' => $value))->Fetch(); if (!$ar_enum_list) { $ibpenum = new CIBlockPropertyEnum(); if ($PropID = $ibpenum->Add(array('PROPERTY_ID' => $property['ID'], 'VALUE' => $value))) { $ar_enum_list['ID'] = $PropID; } else { return false; } } return $ar_enum_list['ID']; }
function findCode($id, $val) { if (CModule::IncludeModule("iblock")) { $properties = CIBlockProperty::GetList(array("sort" => "asc", "name" => "asc"), array("ACTIVE" => "Y", 'ID' => $id)); while ($prop_fields = $properties->GetNext()) { $temp['CODE'] = $prop_fields['CODE']; if ($prop_fields['PROPERTY_TYPE'] == 'L') { $property_enums = CIBlockPropertyEnum::GetList(array("DEF" => "DESC", "SORT" => "ASC"), array("CODE" => $prop_fields['CODE'], 'ID' => $val)); while ($enum_fields = $property_enums->GetNext()) { $temp['VALUE'] = $enum_fields["VALUE"]; } } } return $temp; } else { return false; } }
public function getIBlockItems($IBLOCK_ID) { $items = array(); foreach (CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, $this->SECTION_ID) as $PID => $arLink) { if ($arLink["SMART_FILTER"] !== "Y") { continue; } $rsProperty = CIBlockProperty::GetByID($PID); $arProperty = $rsProperty->Fetch(); if ($arProperty) { $items[$arProperty["ID"]] = array("ID" => $arProperty["ID"], "IBLOCK_ID" => $arProperty["IBLOCK_ID"], "CODE" => $arProperty["CODE"], "NAME" => $arProperty["NAME"], "PROPERTY_TYPE" => $arProperty["PROPERTY_TYPE"], "VALUES" => array()); if ($arProperty["PROPERTY_TYPE"] == "N") { $items[$arProperty["ID"]]["VALUES"] = array("MIN" => array("CONTROL_ID" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MIN"), "CONTROL_NAME" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MIN")), "MAX" => array("CONTROL_ID" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MAX"), "CONTROL_NAME" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MAX"))); } } } return $items; }
/** * [getPropertyIblock description] * @return array all products on iblock */ protected function getPropertyIblock(){ if (!CModule::IncludeModule("iblock")): return false; endif; $properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$this->getIblockId())); while ($prop_fields = $properties->GetNext()) { if ($prop_fields["PROPERTY_TYPE"] == "L"): $property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>$this->getIblockId(), "CODE"=>$prop_fields["CODE"])); while($enum_fields = $property_enums->GetNext()) { $prop_fields["ENUM_LIST"][] = $enum_fields; } endif; $arProperties[] = $prop_fields; } return $arProperties; }
function getProductByProps($iblockID, $arSkuProps) { $result = false; $arSelect = array(); $arOfFilter = array( "IBLOCK_ID" => $iblockID, ); $rsProps = CIBlockProperty::GetList( array('SORT' => 'ASC', 'ID' => 'ASC'), array('IBLOCK_ID' => $iblockID, 'ACTIVE' => 'Y') ); while ($arProp = $rsProps->Fetch()) { if (!$arProp['CODE']) $arProp['CODE'] = $arProp['ID']; if (isset($arSkuProps[$arProp["CODE"]])) { if ($arProp["CODE"] == "CML2_LINK" || $arProp['PROPERTY_TYPE'] == 'E' || ($arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory')) { $arOfFilter["PROPERTY_".$arProp["CODE"]] = $arSkuProps[$arProp["CODE"]]; } elseif ($arProp["PROPERTY_TYPE"] == "L") { $arOfFilter["PROPERTY_".$arProp["CODE"]."_VALUE"] = $arSkuProps[$arProp["CODE"]]; } $arSelect[] = "PROPERTY_".$arProp["CODE"]; } } $rsOffers = CIBlockElement::GetList( array(), $arOfFilter, false, false, array_merge(array("ID"), $arSelect) ); if ($arOffer = $rsOffers->GetNext()) $result = $arOffer["ID"]; return $result; }
protected static function addIBlock2PropCache($IBLOCK_ID) { if (!is_numeric($IBLOCK_ID)) { return; } $IBLOCK_ID = intval($IBLOCK_ID); if (!array_key_exists($IBLOCK_ID, self::$arIBlockPropCache)) { self::$arIBlockPropCache[$IBLOCK_ID] = array(); self::$arIBlockPropCodeIndex[$IBLOCK_ID] = array(); } if (count(self::$arIBlockPropCache[$IBLOCK_ID]) < 1) { $properties = \CIBlockProperty::GetList(array('sort' => 'asc', 'name' => 'asc'), array('ACTIVE' => 'Y', 'IBLOCK_ID' => $IBLOCK_ID)); while ($prop_fields = $properties->GetNext()) { self::$arIBlockPropCache[$IBLOCK_ID][$prop_fields['ID']] = $prop_fields; $prop_fields['CODE'] = trim($prop_fields['CODE']); if (!empty($prop_fields['CODE'])) { self::$arIBlockPropCodeIndex[$IBLOCK_ID][$prop_fields['CODE']] =& self::$arIBlockPropCache[$IBLOCK_ID][$prop_fields['ID']]; } } } }
function GetCatalogPrices($IBLOCK_ID, $arPriceCode) { global $USER; $arCatalogPrices = array(); if (CModule::IncludeModule("catalog")) { $bFromCatalog = true; $arCatalogGroupCodesFilter = array(); foreach ($arPriceCode as $key => $value) { $t_value = trim($value); if (strlen($t_value) > 0) { $arCatalogGroupCodesFilter[$value] = true; } } $arCatalogGroupsFilter = array(); $arCatalogGroups = CCatalogGroup::GetListArray(); foreach ($arCatalogGroups as $key => $value) { if (array_key_exists($value["NAME"], $arCatalogGroupCodesFilter)) { $arCatalogGroupsFilter[] = $key; $arCatalogPrices[$value["NAME"]] = array("ID" => htmlspecialcharsbx($value["ID"]), "TITLE" => htmlspecialcharsbx($value["NAME_LANG"]), "SELECT" => "CATALOG_GROUP_" . $value["ID"]); } } $arPriceGroups = CCatalogGroup::GetGroupsPerms($USER->GetUserGroupArray(), $arCatalogGroupsFilter); foreach ($arCatalogPrices as $name => $value) { $arCatalogPrices[$name]["CAN_VIEW"] = in_array($value["ID"], $arPriceGroups["view"]); $arCatalogPrices[$name]["CAN_BUY"] = in_array($value["ID"], $arPriceGroups["buy"]); } } else { $bFromCatalog = false; $arPriceGroups = array("view" => array()); $rsProperties = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "CHECK_PERMISSIONS" => "N", "PROPERTY_TYPE" => "N")); while ($arProperty = $rsProperties->Fetch()) { if ($arProperty["MULTIPLE"] == "N" && in_array($arProperty["CODE"], $arPriceCode)) { $arPriceGroups["view"][] = htmlspecialcharsbx("PROPERTY_" . $arProperty["CODE"]); $arCatalogPrices[$arProperty["CODE"]] = array("ID" => htmlspecialcharsbx($arProperty["ID"]), "TITLE" => htmlspecialcharsbx($arProperty["NAME"]), "SELECT" => "PROPERTY_" . $arProperty["ID"], "CAN_VIEW" => true, "CAN_BUY" => false); } } } return $arCatalogPrices; }
/** * Получает значиния свойства типа Список * * @param $code * @param string $iblockID * @param string $valueID * @return array */ public static function getPropertyEnum($code, $iblockID = '', $valueID = '') { if (intval($iblockID) > 0) { $arFilter = array('IBLOCK_ID' => $iblockID); } if (intval($iblockID) > 0) { $arFilter['ID'] = $valueID; } $result = array(); $rsPropertyEnum = CIBlockProperty::GetPropertyEnum( $code, array('sort' => 'asc'), $arFilter ); while($arPropertyEnum = $rsPropertyEnum->GetNext()) { $result[] = $arPropertyEnum; } return $result; }
function Fetch() { $res = parent::Fetch(); if ($res && $res["USER_TYPE"] != "") { $arUserType = CIBlockProperty::GetUserType($res["USER_TYPE"]); if (array_key_exists("ConvertFromDB", $arUserType)) { if (array_key_exists("VALUE", $res)) { $value = array("VALUE" => $res["VALUE"], "DESCRIPTION" => ""); $value = call_user_func_array($arUserType["ConvertFromDB"], array($res, $value)); $res["VALUE"] = $value["VALUE"]; } if (array_key_exists("DEFAULT_VALUE", $res)) { $value = array("VALUE" => $res["DEFAULT_VALUE"], "DESCRIPTION" => ""); $value = call_user_func_array($arUserType["ConvertFromDB"], array($res, $value)); $res["DEFAULT_VALUE"] = $value["VALUE"]; } } if (strlen($res["USER_TYPE_SETTINGS"])) { $res["USER_TYPE_SETTINGS"] = unserialize($res["USER_TYPE_SETTINGS"]); } } return $res; }
protected function initializeVars($iblockId) { $this->iblock = \CIBlock::GetList(array('SORT' => 'ASC'), array('ID' => $iblockId))->Fetch(); if (!$this->iblock) { $this->throwException(__METHOD__, 'Iblock %d not found', $iblockId); } $dbResult = \CIBlockProperty::GetList(array("sort" => "asc"), array("IBLOCK_ID" => $iblockId, "CHECK_PERMISSIONS" => "N")); while ($aItem = $dbResult->Fetch()) { if (!empty($aItem['CODE'])) { $this->titles['PROPERTY_' . $aItem['ID']] = $aItem['NAME']; $this->props[$aItem['CODE']] = $aItem; } } $iblockMess = \IncludeModuleLangFile('/bitrix/modules/iblock/iblock.php', 'ru', true); $iblockMess['IBLOCK_FIELD_ACTIVE_FROM'] = $iblockMess['IBLOCK_FIELD_ACTIVE_PERIOD_FROM']; $iblockMess['IBLOCK_FIELD_ACTIVE_TO'] = $iblockMess['IBLOCK_FIELD_ACTIVE_PERIOD_TO']; foreach ($iblockMess as $code => $value) { if (false !== strpos($code, 'IBLOCK_FIELD_')) { $fcode = str_replace('IBLOCK_FIELD_', '', $code); $this->titles[$fcode] = $value; } } }