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; }
/** * Тип свойства - список * По коду и значению свойства получить 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']; }
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; }
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"], "USER_TYPE" => $arProperty["USER_TYPE"], "USER_TYPE_SETTINGS" => $arProperty["USER_TYPE_SETTINGS"], "VALUES" => array(), ); if($arProperty["PROPERTY_TYPE"] == "N") { $minID = $this->SAFE_FILTER_NAME.'_'.$arProperty['ID'].'_MIN'; $maxID = $this->SAFE_FILTER_NAME.'_'.$arProperty['ID'].'_MAX'; $items[$arProperty["ID"]]["VALUES"] = array( "MIN" => array( "CONTROL_ID" => $minID, "CONTROL_NAME" => $minID, ), "MAX" => array( "CONTROL_ID" => $maxID, "CONTROL_NAME" => $maxID, ), ); } } } return $items; }
} ?> <?php } ?> <?php foreach ($arResult["ITEMS"] as $arItem) { if (!isset($arItem["PRICE"]) && ($arItem["PROPERTY_TYPE"] == "N" && !empty($arItem["VALUES"]["MIN"]["VALUE"]) || $arItem["PROPERTY_TYPE"] != "N" && !empty($arItem["VALUES"])) && !($arItem["PROPERTY_TYPE"] == "N" && $arItem["VALUES"]["MIN"]["VALUE"] == $arItem["VALUES"]["MAX"]["VALUE"])) { ?> <?php if ($arItem["CODE"] != "HIT" && $arItem["CODE"] != "RECOMMEND" && $arItem["CODE"] != "NEW" && $arItem["CODE"] != "STOCK") { ?> <?php $prop = CIBlockProperty::GetByID($arItem["ID"], $arParams["IBLOCK_ID"])->GetNext(); ?> <span class="filter-name"><?php echo $arItem["NAME"]; if ($prop["HINT"]) { ?> <span class="hint"><span class="icon"><i>i</i></span><div class="tooltip"><?php echo $prop["HINT"]; ?> </div></span><?php } ?> </span> <?php } elseif (!$specialtitle) { ?>
include_once $cPrologPath; } } if ($this->StartResultCache(36000, false)) { $arResult["FIELDS"] = array(); $arResult["BASE_FIELDS"] = array(); $sort = 10; foreach ($showBaseFields as $baseField) { $msgName = "BRSOFT_FC_" . $baseField; $arField = array("CODE" => $baseField, "REQUIRED" => in_array($baseField, $reqBaseFields) ? true : false, "NAME" => GetMessage($msgName), "SORT" => $sort, "TYPE" => "BASE", "HINT" => GetMessage($msgName), "INPUT_TYPE" => $baseField == "NAME" ? "S" : "T"); $arResult["FIELDS"][] = $arField; $sort += 100; } foreach ($showFields as $field) { $arField = array("TYPE" => "PROPERTY"); $dbField = CIBlockProperty::GetByID($field, $iblock_id); if ($rsField = $dbField->GetNext()) { $input_type = "S"; //default value switch ($rsField["PROPERTY_TYPE"]) { case 'S': switch ($rsField["USER_TYPE"]) { case 'DateTime': $input_type = "D"; break; case 'HTML': $input_type = "H"; break; // html/text usertype // html/text usertype default:
/** * @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']]; }
} $res = CIBlockProperty::GetByID("MANUFACTURER", $IBLOCK_CATALOG_ID, false); if ($ar_res = $res->GetNext()) { $arFields1 = array('LINK_IBLOCK_ID' => $_SESSION['YOUSTORE_BRAND_IBLOCKID']); $ibp = new CIBlockProperty(); $ibp->Update($ar_res['ID'], $arFields1); } unset($_SESSION['YOUSTORE_BRAND_IBLOCKID']); $res = CIBlockProperty::GetByID("ACCESSORIES", $IBLOCK_CATALOG_ID, false); if ($ar_res = $res->GetNext()) { $arFields1 = array('LINK_IBLOCK_ID' => $IBLOCK_CATALOG_ID); $ibp = new CIBlockProperty(); $ibp->Update($ar_res['ID'], $arFields1); } if ($IBLOCK_OFFERS_ID) { $res = CIBlockProperty::GetByID("COLOR", $IBLOCK_OFFERS_ID, false); if ($ar_res = $res->GetNext()) { $arFields2 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'b_color'), 'USER_TYPE' => 'directory'); $ibp = new CIBlockProperty(); $ibp->Update($ar_res['ID'], $arFields2); } } WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("OFFERS_IBLOCK_ID" => $IBLOCK_OFFERS_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "ajax/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "auth/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "brands/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "include/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "personal/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "news/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
public static function GetProp($strProp) { $prop = ''; $propert = array("ID", "CODE", "NAME", "ACTIVE", "DATE_CREATE", "CREATED_BY", "DETAIL_PAGE_URL", "SHOW_COUNTER", "QUANTITY"); if (in_array($strProp, $propert)) { $prop = $strProp; } else { $res = CIBlockProperty::GetByID(intval($strProp)); if ($ar_res = $res->GetNext()) { if ($ar_res['PROPERTY_TYPE'] == "L") { $prop = "PROPERTY_" . $ar_res['CODE']; } else { $prop = "PROPERTY_" . $ar_res['CODE']; } } } return $prop; }
} $arProductGroups[$PRODUCT_ID][] = $LAST_GROUP_CODE > 0 ? $LAST_GROUP_CODE : false; } $res = $PRODUCT_ID > 0; } if (!$res) { $strErrorR .= GetMessage("CATI_LINE_NO") . " " . $line_num . ". " . GetMessage("CATI_ERROR_LOADING") . " " . $el->LAST_ERROR . "<br>"; } } if ('' === $strErrorR) { $PROP = array(); for ($i = 0; $i < $NUM_FIELDS; $i++) { if (0 == strncmp(${"field_" . $i}, "IP_PROP", 7)) { $cur_prop_id = intval(substr(${"field_" . $i}, 7)); if (!isset($arIBlockProperty[$cur_prop_id])) { $res1 = CIBlockProperty::GetByID($cur_prop_id, $IBLOCK_ID); if ($arRes1 = $res1->Fetch()) { $arIBlockProperty[$cur_prop_id] = $arRes1; } else { $arIBlockProperty[$cur_prop_id] = array(); } } if (!empty($arIBlockProperty[$cur_prop_id]) && is_array($arIBlockProperty[$cur_prop_id])) { if ('Y' == $CML2_LINK_IS_XML && $cur_prop_id == $arSku['SKU_PROPERTY_ID']) { $arRes[$i] = trim($arRes[$i]); if ('' != $arRes[$i]) { if (!isset($arProductCache[$arRes[$i]])) { $rsProducts = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $arSku['PRODUCT_IBLOCK_ID'], '=XML_ID' => $arRes[$i]), false, false, array('ID')); if ($arParentProduct = $rsProducts->Fetch()) { $arProductCache[$arRes[$i]] = $arParentProduct['ID']; }
/** * <p>Метод устанавливает значения перечислений свойства типа "список". Метод динамичный.</p> * * * @param int $ID Код свойства. * * @param array $arVALUES Массив всех значений в формате Array("код существующего * значения"=>"массив полей значения", ..., "массив полей нового * значения", ...). Где массив полей имеет вид: Array("VALUE"=>"значение"[, * "SORT"=>"порядок сортировки"][, "DEF"=>"является значением по * умолчанию (Y|N)"][, "XML_ID"=>"внешний код"]). * * @param bool $bForceDelete = true Если принимает значение <i>true</i>, то удаляются варианты значений, у * которых <i>VALUE</i> пустой. Значение <i>false</i> позволяет сохранить * значения, использованные хотя бы у одного элемента. * Необязательный параметр. * * @return mixed * * <h4>Example</h4> * <pre> * <? * $cnt = 0;<br>$ar_all_values = Array();<br>$db_enum_list = CIBlockProperty::GetPropertyEnum($PROP_ID, Array('SORT'=>'ASC'));<br>while($ar_enum = $db_enum_list->Fetch())<br>{<br> $cnt++;<br> $ar_all_values[$ar_enum['ID']] = Array('SORT'=>$cnt, 'VALUE'=>$ar_enum['VALUE']);<br>}<br>$CIBlockProp = new CIBlockProperty; * $CIBlockProp->UpdateEnum($PROP_ID, $ar_all_values); ?> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/iblock/fields.php#fiblockpropertyenum">Поля значений * свойства типа "список</a><a * href="http://dev.1c-bitrix.ru/api_help/main/reference/ceventmessage/index.php#flds">" </a> </li> <li> <a * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/index.php">CIBlockPropetyEnum</a>::<a * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/update.php">Update()</a> </li> <li> <a * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/index.php">CIBlockPropetyEnum</a>::<a * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/add.php">Add()</a> </li> </ul> <a * name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/updateenum.php * @author Bitrix */ public function UpdateEnum($ID, $arVALUES, $bForceDelete = true) { global $DB, $CACHE_MANAGER; $ID = IntVal($ID); if (!is_array($arVALUES) || empty($arVALUES) && $bForceDelete) { CIBlockPropertyEnum::DeleteByPropertyID($ID); return true; } $ar_XML_ID = array(); $db_res = $this->GetPropertyEnum($ID); while ($res = $db_res->Fetch()) { $ar_XML_ID[$res["XML_ID"]] = $res["ID"]; } $sqlWhere = ""; if (!$bForceDelete) { $rsProp = CIBlockProperty::GetByID($ID); if ($arProp = $rsProp->Fetch()) { if ($arProp["VERSION"] == 1) { $sqlWhere = "AND NOT EXISTS (\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM b_iblock_element_property\n\t\t\t\t\t\tWHERE b_iblock_element_property.IBLOCK_PROPERTY_ID = b_iblock_property_enum.PROPERTY_ID\n\t\t\t\t\t\tAND b_iblock_element_property.VALUE_ENUM = b_iblock_property_enum.ID\n\t\t\t\t\t)"; } elseif ($arProp["MULTIPLE"] == "N") { $sqlWhere = "AND NOT EXISTS (\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM b_iblock_element_prop_s" . $arProp["IBLOCK_ID"] . "\n\t\t\t\t\t\tWHERE b_iblock_element_prop_s" . $arProp["IBLOCK_ID"] . ".PROPERTY_" . $arProp["ID"] . " = b_iblock_property_enum.ID\n\t\t\t\t\t)"; } else { $sqlWhere = "AND NOT EXISTS (\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM b_iblock_element_prop_m" . $arProp["IBLOCK_ID"] . "\n\t\t\t\t\t\tWHERE b_iblock_element_prop_m" . $arProp["IBLOCK_ID"] . ".IBLOCK_PROPERTY_ID = b_iblock_property_enum.PROPERTY_ID\n\t\t\t\t\t\tAND b_iblock_element_prop_m" . $arProp["IBLOCK_ID"] . ".VALUE_ENUM = b_iblock_property_enum.ID\n\t\t\t\t\t)"; } } } $db_res = $this->GetPropertyEnum($ID); while ($res = $db_res->Fetch()) { $VALUE = $arVALUES[$res["ID"]]; $VAL = is_array($VALUE) ? $VALUE["VALUE"] : $VALUE; unset($arVALUES[$res["ID"]]); if (strlen($VAL) <= 0) { unset($ar_XML_ID[$res["XML_ID"]]); $strSql = "\n\t\t\t\t\tDELETE FROM b_iblock_property_enum\n\t\t\t\t\tWHERE ID=" . $res["ID"] . "\n\t\t\t\t\t" . $sqlWhere . "\n\t\t\t\t"; $DB->Query($strSql); } else { $DEF = ""; $SORT = 0; $XML_ID = ""; if (is_array($VALUE)) { if (array_key_exists("DEF", $VALUE)) { $DEF = $VALUE["DEF"] == "Y" ? "Y" : "N"; } if (array_key_exists("SORT", $VALUE)) { $SORT = intval($VALUE["SORT"]); } if ($SORT < 0) { $SORT = 0; } if (array_key_exists("XML_ID", $VALUE) && strlen($VALUE["XML_ID"])) { $XML_ID = substr($VALUE["XML_ID"], 0, 200); } elseif (array_key_exists("EXTERNAL_ID", $VALUE) && strlen($VALUE["EXTERNAL_ID"])) { $XML_ID = substr($VALUE["EXTERNAL_ID"], 0, 200); } } if ($XML_ID) { unset($ar_XML_ID[$res["XML_ID"]]); if (array_key_exists($XML_ID, $ar_XML_ID)) { $XML_ID = md5(uniqid("")); } $ar_XML_ID[$XML_ID] = $res["ID"]; } $strSql = "\n\t\t\t\t\tUPDATE b_iblock_property_enum\n\t\t\t\t\tSET\n\t\t\t\t\t\t" . ($DEF ? " DEF = '" . $DEF . "', " : "") . "\n\t\t\t\t\t\t" . ($SORT ? " SORT = " . $SORT . ", " : "") . "\n\t\t\t\t\t\t" . ($XML_ID ? " XML_ID = '" . $DB->ForSQL($XML_ID, 200) . "', " : "") . "\n\t\t\t\t\t\tVALUE = '" . $DB->ForSQL($VAL, 255) . "'\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tID = " . $res["ID"] . "\n\t\t\t\t"; $DB->Query($strSql); } } foreach ($arVALUES as $id => $VALUE) { $VAL = is_array($VALUE) ? $VALUE["VALUE"] : $VALUE; if (strlen($id) > 0 && strlen($VAL) > 0) { $DEF = ""; $SORT = 0; $XML_ID = ""; if (is_array($VALUE)) { if (array_key_exists("DEF", $VALUE)) { $DEF = $VALUE["DEF"] == "Y" ? "Y" : "N"; } if (array_key_exists("SORT", $VALUE)) { $SORT = intval($VALUE["SORT"]); } if ($SORT < 0) { $SORT = 0; } if (array_key_exists("XML_ID", $VALUE) && strlen($VALUE["XML_ID"])) { $XML_ID = substr($VALUE["XML_ID"], 0, 200); } elseif (array_key_exists("EXTERNAL_ID", $VALUE) && strlen($VALUE["EXTERNAL_ID"])) { $XML_ID = substr($VALUE["EXTERNAL_ID"], 0, 200); } } if ($XML_ID) { if (array_key_exists($XML_ID, $ar_XML_ID)) { $XML_ID = md5(uniqid("", true)); } $ar_XML_ID[$XML_ID] = 0; } else { $XML_ID = md5(uniqid("", true)); $ar_XML_ID[$XML_ID] = 0; } $strSql = "\n\t\t\t\t\tINSERT INTO b_iblock_property_enum\n\t\t\t\t\t(\n\t\t\t\t\t\tPROPERTY_ID\n\t\t\t\t\t\t" . ($DEF ? ",DEF" : "") . "\n\t\t\t\t\t\t" . ($SORT ? ",SORT" : "") . "\n\t\t\t\t\t\t,VALUE\n\t\t\t\t\t\t,XML_ID\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t" . $ID . "\n\t\t\t\t\t\t" . ($DEF ? ",'" . $DEF . "'" : "") . "\n\t\t\t\t\t\t" . ($SORT ? "," . $SORT . "" : "") . "\n\t\t\t\t\t\t,'" . $DB->ForSQL($VAL, 255) . "'\n\t\t\t\t\t\t,'" . $DB->ForSQL($XML_ID, 200) . "'\n\t\t\t\t\t)\n\t\t\t\t"; $DB->Query($strSql); } } if (CACHED_b_iblock_property_enum !== false) { $CACHE_MANAGER->CleanDir("b_iblock_property_enum"); } if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->ClearByTag("iblock_property_enum_" . $ID); } return true; }
$arFields = array("ACTIVE" => "Y", "FIELDS" => array('CODE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y'))), "CODE" => $iblockCode, "XML_ID" => $iblockCode); $iblock->Update($iblockID, $arFields); } else { $arSites = array(); $db_res = CIBlock::GetSite($iblockID); while ($res = $db_res->Fetch()) { $arSites[] = $res["LID"]; } if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iblock = new CIBlock(); $iblock->Update($iblockID, array("LID" => $arSites)); } } for ($t = 1; $t <= 7; $t++) { $res = CIBlockProperty::GetByID("TAB_" . $t . "_TYPE", $iblockID, false); if ($ar_res = $res->GetNext()) { $arFields2 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'tab'), 'USER_TYPE' => 'directory'); $ibp = new CIBlockProperty(); $ibp->Update($ar_res['ID'], $arFields2); } } WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/obzor/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "ajax/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "auth/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "brands/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "include/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "personal/", array("REVIEWS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "news/", array("REVIEWS_IBLOCK_ID" => $iblockID));
public function getIBlockItems($IBLOCK_ID) { $items = array(); foreach (CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, $this->SECTION_ID) as $PID => $arLink) { if ($arLink["SMART_FILTER"] !== "Y") { continue; } if ($arLink['FILTER_HINT'] != '') { $arLink['FILTER_HINT'] = CTextParser::closeTags($arLink['FILTER_HINT']); } $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"], "USER_TYPE" => $arProperty["USER_TYPE"], "USER_TYPE_SETTINGS" => $arProperty["USER_TYPE_SETTINGS"], "DISPLAY_TYPE" => $arLink["DISPLAY_TYPE"], "DISPLAY_EXPANDED" => $arLink["DISPLAY_EXPANDED"], "FILTER_HINT" => $arLink["FILTER_HINT"], "VALUES" => array()); if ($arProperty["PROPERTY_TYPE"] == "N" || $arLink["DISPLAY_TYPE"] == "U") { $minID = $this->SAFE_FILTER_NAME . '_' . $arProperty['ID'] . '_MIN'; $maxID = $this->SAFE_FILTER_NAME . '_' . $arProperty['ID'] . '_MAX'; $items[$arProperty["ID"]]["VALUES"] = array("MIN" => array("CONTROL_ID" => $minID, "CONTROL_NAME" => $minID), "MAX" => array("CONTROL_ID" => $maxID, "CONTROL_NAME" => $maxID)); } } } return $items; }
ShowError(GetMessage('CRM_IBLOCK_MODULE_NOT_INSTALLED')); return; } global $USER, $APPLICATION; $arParams['PATH_TO_PRODUCTPROPS_LIST'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_LIST', $arParams['PATH_TO_PRODUCTPROPS_LIST'], ''); $arParams['PATH_TO_PRODUCTPROPS_ADD'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_ADD', $arParams['PATH_TO_PRODUCTPROPS_ADD'], '?add'); $arParams['PATH_TO_PRODUCTPROPS_EDIT'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_EDIT', $arParams['PATH_TO_PRODUCTPROPS_EDIT'], '?prop_id=#prop_id#&edit'); if (!isset($arParams['TYPE'])) { $arParams['TYPE'] = 'list'; } $arResult['BUTTONS'] = array(); $propID = isset($arParams['PROP_ID']) ? intval($arParams['PROP_ID']) : 0; $CrmPerms = new CCrmPerms($USER->GetID()); $propAdd = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE'); $arProp = null; if ($propID > 0) { $iblockID = intval(CCrmCatalog::EnsureDefaultExists()); $dbRes = CIBlockProperty::GetByID($propID, $iblockID); if (is_object($dbRes)) { $arProp = $dbRes->Fetch(); } unset($dbRes); } $exists = intval($propID > 0) && is_array($arProp); if ($arParams['TYPE'] !== 'list') { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_PRODUCTPROP_LIST'), 'TITLE' => GetMessage('CRM_PRODUCTPROP_LIST_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCTPROPS_LIST'], array()), 'ICON' => 'btn-list'); } if ($arParams['TYPE'] === 'list' && $propAdd) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_PRODUCTPROP_ADD'), 'TITLE' => GetMessage('CRM_PRODUCTPROP_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCTPROPS_ADD'], array()), 'ICON' => 'btn-new'); } $this->IncludeComponentTemplate();
function DoIBlockAfterSave($arg1, $arg2 = false) { $ELEMENT_ID = false; $IBLOCK_ID = false; $OFFERS_IBLOCK_ID = false; $OFFERS_PROPERTY_ID = false; if (CModule::IncludeModule('currency')) { $strDefaultCurrency = CCurrency::GetBaseCurrency(); } //Check for catalog event if (is_array($arg2) && $arg2["PRODUCT_ID"] > 0) { //Get iblock element $rsPriceElement = CIBlockElement::GetList(array(), array("ID" => $arg2["PRODUCT_ID"]), false, false, array("ID", "IBLOCK_ID")); if ($arPriceElement = $rsPriceElement->Fetch()) { $arCatalog = CCatalog::GetByID($arPriceElement["IBLOCK_ID"]); if (is_array($arCatalog)) { //Check if it is offers iblock if ($arCatalog["OFFERS"] == "Y") { //Find product element $rsElement = CIBlockElement::GetProperty($arPriceElement["IBLOCK_ID"], $arPriceElement["ID"], "sort", "asc", array("ID" => $arCatalog["SKU_PROPERTY_ID"])); $arElement = $rsElement->Fetch(); if ($arElement && $arElement["VALUE"] > 0) { $ELEMENT_ID = $arElement["VALUE"]; $IBLOCK_ID = $arCatalog["PRODUCT_IBLOCK_ID"]; $OFFERS_IBLOCK_ID = $arCatalog["IBLOCK_ID"]; $OFFERS_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"]; } } elseif ($arCatalog["OFFERS_IBLOCK_ID"] > 0) { $ELEMENT_ID = $arPriceElement["ID"]; $IBLOCK_ID = $arPriceElement["IBLOCK_ID"]; $OFFERS_IBLOCK_ID = $arCatalog["OFFERS_IBLOCK_ID"]; $OFFERS_PROPERTY_ID = $arCatalog["OFFERS_PROPERTY_ID"]; } else { $ELEMENT_ID = $arPriceElement["ID"]; $IBLOCK_ID = $arPriceElement["IBLOCK_ID"]; $OFFERS_IBLOCK_ID = false; $OFFERS_PROPERTY_ID = false; } } } } elseif (is_array($arg1) && $arg1["ID"] > 0 && $arg1["IBLOCK_ID"] > 0) { //Check if iblock has offers $arOffers = CIBlockPriceTools::GetOffersIBlock($arg1["IBLOCK_ID"]); if (is_array($arOffers)) { $ELEMENT_ID = $arg1["ID"]; $IBLOCK_ID = $arg1["IBLOCK_ID"]; $OFFERS_IBLOCK_ID = $arOffers["OFFERS_IBLOCK_ID"]; $OFFERS_PROPERTY_ID = $arOffers["OFFERS_PROPERTY_ID"]; } } if ($ELEMENT_ID) { static $arPropCache = array(); if (!array_key_exists($IBLOCK_ID, $arPropCache)) { //Check for MINIMAL_PRICE property $rsProperty = CIBlockProperty::GetByID("MINIMUM_PRICE", $IBLOCK_ID); $arProperty = $rsProperty->Fetch(); if ($arProperty) { $arPropCache[$IBLOCK_ID] = $arProperty["ID"]; } else { $arPropCache[$IBLOCK_ID] = false; } } if ($arPropCache[$IBLOCK_ID]) { //Compose elements filter if ($OFFERS_IBLOCK_ID) { $rsOffers = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $OFFERS_IBLOCK_ID, "PROPERTY_" . $OFFERS_PROPERTY_ID => $ELEMENT_ID), false, false, array("ID")); while ($arOffer = $rsOffers->Fetch()) { $arProductID[] = $arOffer["ID"]; } if (!is_array($arProductID)) { $arProductID = array($ELEMENT_ID); } } else { $arProductID = array($ELEMENT_ID); } $minPrice = false; $maxPrice = false; //Get prices $rsPrices = CPrice::GetList(array(), array("PRODUCT_ID" => $arProductID)); while ($arPrice = $rsPrices->Fetch()) { if (CModule::IncludeModule('currency') && $strDefaultCurrency != $arPrice['CURRENCY']) { $arPrice["PRICE"] = CCurrencyRates::ConvertCurrency($arPrice["PRICE"], $arPrice["CURRENCY"], $strDefaultCurrency); } $PRICE = $arPrice["PRICE"]; if ($minPrice === false || $minPrice > $PRICE) { $minPrice = $PRICE; } if ($maxPrice === false || $maxPrice < $PRICE) { $maxPrice = $PRICE; } } //Save found minimal price into property if ($minPrice !== false) { CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, $IBLOCK_ID, array("MINIMUM_PRICE" => $minPrice, "MAXIMUM_PRICE" => $maxPrice)); } } } }
while ($res = $db_res->Fetch()) { $arSites[] = $res["LID"]; } if (!in_array(WIZARD_SITE_ID, $arSites)) { $arSites[] = WIZARD_SITE_ID; $iblock = new CIBlock(); $iblock->Update($iblockID, array("LID" => $arSites)); } } $res = CIBlockProperty::GetByID("BG", $iblockID, false); if ($ar_res = $res->GetNext()) { $arFields1 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'background'), 'USER_TYPE' => 'directory'); $ibp = new CIBlockProperty(); $ibp->Update($ar_res['ID'], $arFields1); } $res = CIBlockProperty::GetByID("BG_DET", $iblockID, false); if ($ar_res = $res->GetNext()) { $arFields2 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'backgrounddet'), 'USER_TYPE' => 'directory'); $ibp = new CIBlockProperty(); $ibp->Update($ar_res['ID'], $arFields2); } WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "ajax/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "auth/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "brands/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "include/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "personal/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "news/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "sales/", array("ACTIONS_IBLOCK_ID" => $iblockID)); WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "search/", array("ACTIONS_IBLOCK_ID" => $iblockID));
/** * Метод подготовки данных * Применяется в $this->add() и $this->update() * Использует атрибуты полей из массива $this->_arTableFieldsCheck для проверки входных параметров метода * @param int $prepareType - может принимать для зачения self::PREPARE_ADD или self::PREPARE_UPDATE * @param array $arFields - значения полей основной таблицы сущности * @param null|array $arTableFieldsCheck - если задан, то переопределяет штатный $this->_arTableFieldsCheck * @param null|array $arTableFieldsDefault - если задан, то переопределяет штатный $this->_arTableFieldsDefault * @return array */ protected function prepareFieldsData($prepareType, &$arFields, $arTableFieldsCheck = null, $arTableFieldsDefault = null) { global $DB; $arFieldsPrepared = array(); if ($arTableFieldsDefault == null) { $arTableFieldsDefault = $this->_arTableFieldsDefault; } else { $arTableFieldsDefault = array_merge($this->_arTableFieldsDefault, $arTableFieldsDefault); } if ($arTableFieldsCheck == null) { $arTableFieldsCheck = $this->_arTableFieldsCheck; } else { $arTableFieldsCheck = array_merge($this->_arTableFieldsCheck, $arTableFieldsCheck); } $arCheckResult = array('__BREAK' => false, '__MAGIC_WORD' => false); if (array_key_exists(OBX_MAGIC_WORD, $arFields)) { $arCheckResult['__MAGIC_WORD'] = true; unset($arFields[OBX_MAGIC_WORD]); } foreach ($arFields as $fieldName => &$fieldValue) { $arCheckResult[$fieldName] = null; if (array_key_exists($fieldName, $arTableFieldsCheck)) { $arCheckResult[$fieldName] = array('RAW_VALUE' => $fieldValue, 'FIELD_TYPE' => null, 'FIELD_TYPE_MASK' => 0, 'FIELD_ATTR' => array(), 'IS_EMPTY' => false, 'IS_NULL' => false, 'IS_CORRECT' => false, 'FROM_DEFAULTS' => false, 'CHECK_DATA' => array()); $fieldType = $arTableFieldsCheck[$fieldName]; $bValueIsCorrect = false; $bNotNull = false; $bNotZero = false; $bDefaultIfNull = false; $bUnsignedType = false; if ($fieldType & self::FLD_UNSIGNED) { $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_UNSIGNED'] = self::FLD_UNSIGNED; $bUnsignedType = true; } if ($fieldType & self::FLD_NOT_NULL) { $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_NOT_NULL'] = self::FLD_NOT_NULL; $bNotNull = true; } $bPassNull = !$bNotNull; if ($fieldType & self::FLD_NOT_ZERO) { $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_NOT_ZERO'] = self::FLD_NOT_ZERO; $bNotZero = true; } $bPassZero = !$bNotZero; if ($fieldType & self::FLD_DEFAULT) { $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_DEFAULT'] = self::FLD_DEFAULT; if ($prepareType == self::PREPARE_ADD) { $bDefaultIfNull = true; } } if ($fieldType & self::FLD_REQUIRED) { $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_REQUIRED'] = self::FLD_REQUIRED; } $bValueIsEmpty = empty($fieldValue); if ($bValueIsEmpty) { $arCheckResult[$fieldName]['IS_EMPTY'] = true; } if ($fieldValue === null && $bPassNull) { $bValueIsCorrect = true; $bValueIsEmpty = true; $arCheckResult[$fieldName]['IS_NULL'] = true; $arCheckResult[$fieldName]['IS_EMPTY'] = true; $arCheckResult[$fieldName]['IS_CORRECT'] = true; } else { switch ($fieldType & ~self::FLD_ATTR_ALL) { case self::FLD_T_NO_CHECK: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_NO_CHECK'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_NO_CHECK; $bValueIsCorrect = true; break; case self::FLD_T_CHAR: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_CHAR'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_CHAR; if ($bPassNull && $bValueIsEmpty) { $fieldValue = null; } elseif (!$bValueIsEmpty) { $fieldValue = substr($fieldValue, 0, 1); $bValueIsCorrect = true; } break; case self::FLD_T_INT: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_INT'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_INT; $bValueIsCorrect = $this->__checkNumericField(false, $fieldValue, $bUnsignedType, $bNotNull, $bNotZero); break; case self::FLD_T_STRING: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_STRING'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_STRING; $valStrLen = strlen($fieldValue); if ($valStrLen > 0) { $fieldValue = $DB->ForSql(htmlspecialcharsEx($fieldValue)); $bValueIsCorrect = true; } elseif ($bPassZero) { $fieldValue = ''; $bValueIsCorrect = true; } break; case self::FLD_T_CODE: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_CODE'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_CODE; $fieldValue = trim($fieldValue); if (preg_match('~^[a-zA-Z\\_][a-z0-9A-Z\\_]{0,15}$~', $fieldValue)) { $bValueIsCorrect = true; } break; case self::FLD_T_BCHAR: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_BCHAR'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_BCHAR; $fieldValue = strtoupper(substr($fieldValue, 0, 1)); if ($fieldValue == 'Y' || !$bUnsignedType && $fieldValue == 'N') { $bValueIsCorrect = true; } break; case self::FLD_T_FLOAT: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_FLOAT'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_FLOAT; $bValueIsCorrect = $this->__checkNumericField(true, $fieldValue, $bUnsignedType, $bNotNull, $bNotZero); break; case self::FLD_T_IDENT: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IDENT'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IDENT; $fieldValue = trim($fieldValue); if (is_numeric($fieldValue) && ($fieldValue = intval($fieldValue)) > 0 || preg_match('~^[a-z0-9A-Z\\_]{1,255}$~', $fieldValue)) { $bValueIsCorrect = true; } break; case self::FLD_T_DATETIME: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_DATETIME'; $arCheckResult[$fieldName]['FIELD_TYPE'] = self::FLD_T_DATETIME; $fieldValue = trim($fieldValue); $bValueIsCorrect = true; // TODO: Тут надо дописать обработку дат и времени break; case self::FLD_T_BX_LANG_ID: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_BX_LANG_ID'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_BX_LANG_ID; $fieldValue = trim($fieldValue); if (strlen($fieldValue) > 0 && preg_match('~^[a-zA-Z\\_][a-z0-9A-Z\\_]?$~', $fieldValue)) { $bValueIsCorrect = true; } break; case self::FLD_T_IBLOCK_ID: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_ID'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_ID; $fieldValue = intval($fieldValue); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $rs = \CIBlock::GetByID($fieldValue); if ($arData = $rs->GetNext()) { $arCheckResult[$fieldName]['CHECK_DATA'] = $arData; $bValueIsCorrect = true; } break; case self::FLD_T_IBLOCK_PROP_ID: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_PROP_ID'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_PROP_ID; $rs = \CIBlockProperty::GetByID($fieldValue); if ($arData = $rs->GetNext()) { $arCheckResult[$fieldName]['CHECK_DATA'] = $arData; $bValueIsCorrect = true; } break; case self::FLD_T_IBLOCK_ELEMENT_ID: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_ELEMENT_ID'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_ELEMENT_ID; $rs = \CIBlockElement::GetByID($fieldValue); if ($arData = $rs->GetNext()) { $arCheckResult[$fieldName]['CHECK_DATA'] = $arData; $bValueIsCorrect = true; } break; case self::FLD_T_IBLOCK_SECTION_ID: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_SECTION_ID'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_SECTION_ID; $rs = \CIBlockSection::GetByID($fieldValue); if ($arData = $rs->GetNext()) { $arCheckResult[$fieldName]['CHECK_DATA'] = $arData; $bValueIsCorrect = true; } break; case self::FLD_T_USER_ID: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_USER_ID'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_USER_ID; /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $rs = \CUser::GetByID($fieldValue); if ($arData = $rs->GetNext()) { $arCheckResult[$fieldName]['CHECK_DATA'] = $arData; $bValueIsCorrect = true; } break; case self::FLD_T_GROUP_ID: $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_GROUP_ID'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_GROUP_ID; /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $rs = \CGroup::GetByID($fieldValue); if ($arData = $rs->GetNext()) { $arCheckResult[$fieldName]['CHECK_DATA'] = $arData; $bValueIsCorrect = true; } break; } } if ($fieldType & self::FLD_CUSTOM_CK) { $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_CUSTOM_CK'; $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_CUSTOM_CK; if ($bValueIsCorrect) { $customCheckFunc = '__check_' . $fieldName; if (is_callable(array($this, $customCheckFunc))) { //$bValueIsCorrect = call_user_func($customCheckFunc, $fieldValue, $arCheckResult[$fieldName]['CHECK_DATA']); $bValueIsCorrect = $this->{$customCheckFunc}($fieldValue, $arCheckResult[$fieldName]['CHECK_DATA']); } } } if (!$bValueIsCorrect && $fieldType & self::FLD_BRK_INCORR) { $arCheckResult['__BREAK'] = true; } if ($bValueIsEmpty && $bDefaultIfNull) { if (array_key_exists($fieldName, $arTableFieldsDefault)) { $arCheckResult[$fieldName]['FROM_DEFAULTS'] = true; $arFieldsPrepared[$fieldName] = $arTableFieldsDefault[$fieldName]; } } elseif ($bValueIsCorrect) { $arCheckResult[$fieldName]['IS_CORRECT'] = true; $arCheckResult[$fieldName]['VALUE'] = $fieldValue; $arFieldsPrepared[$fieldName] = $fieldValue; } } } $arFields = $arFieldsPrepared; return $arCheckResult; }
/** * checkParams * @param array $params * @return mixed|void * @throws \Exception */ public function checkParams($params) { $iBlock = new \CIBlock(); if (!isset($params['iblockId']) || !strlen($params['iblockId'])) { throw new BimException('В параметрах не найден iblockId'); } if (!isset($params['propertyId']) || empty($params['propertyId'])) { throw new BimException('В параметрах не найден propertyId'); } $iblockDbRes = $iBlock->GetByID($params['iblockId']); if ($iblockDbRes === false || !$iblockDbRes->SelectedRowsCount()) { throw new BimException('Не найден инфоблок с iblockId = ' . $params['iblockId']); } $iblockData = $iblockDbRes->Fetch(); if (!strlen($iblockData['CODE'])) { throw new BimException('В инфоблоке не указан символьный код'); } $this->ownerItemDbData['iblockData'] = $iblockData; $this->ownerItemDbData['propertyData'] = array(); foreach ($params['propertyId'] as $propertyId) { $propertyDbRes = \CIBlockProperty::GetByID($propertyId); if ($propertyDbRes === false || !$propertyDbRes->SelectedRowsCount()) { throw new BimException('Не найдено св-во с id = ' . $propertyId); } $propertyData = $propertyDbRes->Fetch(); if (!strlen($propertyData['CODE'])) { throw new BimException('В свойстве c id =' . $propertyData['ID'] . ' не указан символьный код.'); } $this->ownerItemDbData['propertyData'][] = $propertyData; } }
function UpdateActivityIBlock(&$arFields) { if ($arFields['RESULT']) { // absence $iblock = COption::GetOptionInt('intranet', 'iblock_absence'); if (!$iblock) { $iblock = array(); $dbRes = CSite::GetList($b = 'SORT', $o = 'ASC'); while ($arRes = $dbRes->Fetch()) { if ($ib = COption::GetOptionInt('intranet', 'iblock_absence', false, $arRes['ID'])) { $iblock[] = $ib; } } } else { $iblock = array($iblock); } if (count($iblock) > 0) { foreach ($iblock as $ib) { if ($arFields['IBLOCK_ID'] == $ib) { static $PROPERTY_USER = 0; if ($PROPERTY_USER <= 0) { $dbRes = CIBlockProperty::GetByID('USER', $arFields['IBLOCK_ID']); if ($arRes = $dbRes->Fetch()) { $PROPERTY_USER = $arRes['ID']; } } if ($PROPERTY_USER > 0) { // $arPropertyValue = array_values($arFields['PROPERTY_VALUES']); // $USER_ID = $arPropertyValue[0]; $USER_ID = $arFields['PROPERTY_VALUES']['USER']; $dbRes = CUser::GetByID($USER_ID); if ($arUser = $dbRes->Fetch()) { CIBlockElement::SetPropertyValues($arFields['ID'], $arFields['IBLOCK_ID'], $arUser['ACTIVE'], 'USER_ACTIVE'); } } } } } // -- absence // news if (intval($arFields["IBLOCK_ID"]) > 0) { $rsIBlock = CIBlock::GetByID($arFields["IBLOCK_ID"]); if ($arIBlock = $rsIBlock->Fetch()) { if ($arIBlock["IBLOCK_TYPE_ID"] == "news" && CModule::IncludeModule("socialnetwork")) { CSocNetAllowed::GetAllowedEntityTypes(); $dbLog = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "news", "SOURCE_ID" => $arFields["ID"])); if ($arLog = $dbLog->Fetch()) { if ($arFields["ACTIVE"] == "Y" && (strlen($arFields["PREVIEW_TEXT"]) > 0 || strlen($arFields["DETAIL_TEXT"]) > 0) && (!array_key_exists("WF", $arFields) || $arFields["WF"] == "N" || $arFields["WF_STATUS_ID"] == 1 && $arFields["WF_PARENT_ELEMENT_ID"] == $arFields["ID"])) { $arSoFields = array("=LOG_DATE" => strlen($arFields["ACTIVE_FROM"]) > 0 ? MakeTimeStamp($arFields["ACTIVE_FROM"], CSite::GetDateFormat("FULL", $site_id)) > time() ? $GLOBALS["DB"]->CharToDateFunction($arFields["ACTIVE_FROM"], "FULL", $site_id) : $GLOBALS["DB"]->CurrentTimeFunction() : $GLOBALS["DB"]->CurrentTimeFunction(), "=LOG_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "TITLE" => $arFields["NAME"], "MESSAGE" => strlen($arFields["DETAIL_TEXT"]) > 0 ? $arFields["DETAIL_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["DETAIL_TEXT"]) : $arFields["DETAIL_TEXT"] : ($arFields["PREVIEW_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["PREVIEW_TEXT"]) : $arFields["PREVIEW_TEXT"])); $logID = CSocNetLog::Update($arLog["ID"], $arSoFields); if (intval($logID) > 0) { $rsRights = CSocNetLogRights::GetList(array(), array("LOG_ID" => $logID)); $arRights = $rsRights->Fetch(); if (!$arRights) { CSocNetLogRights::Add($logID, "G2"); } CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT"); } } else { CSocNetLog::Delete($arLog["ID"]); } } else { if ($arFields["ACTIVE"] == "Y" && (strlen($arFields["PREVIEW_TEXT"]) > 0 || strlen($arFields["DETAIL_TEXT"]) > 0) && (!array_key_exists("WF", $arFields) || $arFields["WF"] == "N" || $arFields["WF_STATUS_ID"] == 1 && $arFields["WF_PARENT_ELEMENT_ID"] == $arFields["ID"])) { $dbIBlock = CIBlock::GetByID($arFields["IBLOCK_ID"]); if ($arIBlock = $dbIBlock->Fetch()) { $rsSite = CIBlock::GetSite($arFields["IBLOCK_ID"]); if ($arSite = $rsSite->Fetch()) { $site_id = $arSite["SITE_ID"]; } $val = COption::GetOptionString("intranet", "sonet_log_news_iblock", "", $site_id); if (strlen($val) > 0) { $arIBCode = unserialize($val); if (!is_array($arIBCode) || count($arIBCode) <= 0) { $arIBCode = array(); } } else { $arIBCode = array(); } if (in_array($arIBlock["CODE"], $arIBCode)) { $entity_url = str_replace("#SITE_DIR#", $arSite["DIR"], $arIBlock["LIST_PAGE_URL"]); if (strpos($entity_url, "/") === 0) { $entity_url = "/" . ltrim($entity_url, "/"); } $url = str_replace(array("#SITE_DIR#", "#ID#", "#CODE#"), array($arSite["DIR"], $arFields["ID"], $arFields["CODE"]), $arIBlock["DETAIL_PAGE_URL"]); if (strpos($url, "/") === 0) { $url = "/" . ltrim($url, "/"); } $val = COption::GetOptionString("intranet", "sonet_log_news_iblock_forum"); if (strlen($val) > 0) { $arIBlockForum = unserialize($val); } else { $arIBlockForum = array(); } $strMessage = strlen($arFields["DETAIL_TEXT"]) > 0 ? $arFields["DETAIL_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["DETAIL_TEXT"]) : $arFields["DETAIL_TEXT"] : ($arFields["PREVIEW_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["PREVIEW_TEXT"]) : $arFields["PREVIEW_TEXT"]); $dtFormatSite = defined("ADMIN_SECTION") && ADMIN_SECTION === true ? SITE_ID : $site_id; $dtValue = strlen($arFields["ACTIVE_FROM"]) > 0 ? MakeTimeStamp($arFields["ACTIVE_FROM"], CSite::GetDateFormat("FULL", $dtFormatSite)) > time() ? $GLOBALS["DB"]->CharToDateFunction($arFields["ACTIVE_FROM"], "FULL", $dtFormatSite) : $GLOBALS["DB"]->CurrentTimeFunction() : $GLOBALS["DB"]->CurrentTimeFunction(); $arSoFields = array("SITE_ID" => $site_id, "ENTITY_TYPE" => SONET_SUBSCRIBE_ENTITY_NEWS, "ENTITY_ID" => $arIBlock["ID"], "EVENT_ID" => "news", "USER_ID" => $GLOBALS["USER"]->GetID(), "=LOG_DATE" => $dtValue, "=LOG_UPDATE" => $dtValue, "TITLE_TEMPLATE" => GetMessage("INTR_SOCNET_LOG_NEWS_TITLE"), "TITLE" => $arFields["NAME"], "MESSAGE" => $strMessage, "TEXT_MESSAGE" => "", "URL" => $url, "MODULE_ID" => "intranet", "CALLBACK_FUNC" => false, "TMP_ID" => false, "PARAMS" => serialize(array("ENTITY_NAME" => $arIBlock["NAME"], "ENTITY_URL" => $entity_url)), "SOURCE_ID" => $arFields["ID"], "ENABLE_COMMENTS" => array_key_exists($arIBlock["ID"], $arIBlockForum) ? "Y" : "N"); $logID = CSocNetLog::Add($arSoFields, false); if (intval($logID) > 0) { CSocNetLog::Update($logID, array("TMP_ID" => $logID)); CSocNetLogRights::Add($logID, "G2"); CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT"); } } } } } if ($logID > 0 && strlen($arFields["ACTIVE_TO"]) > 0) { $agent = "CIntranetEventHandlers::DeleteLogEntry(" . $arFields["ID"] . ");"; CAgent::RemoveAgent($agent, "intranet"); CAgent::AddAgent($agent, "intranet", "N", 0, $arFields["ACTIVE_TO"], "Y", $arFields["ACTIVE_TO"]); } } } } // --news } }
$item['BASE_PRICE'] = CPrice::GetBasePrice($item['PRODUCT_ID']); $item["BASE_PRICE"]['PRICE'] = ceil($item["BASE_PRICE"]['PRICE']); $item['PRICE'] = ceil($item['PRICE']); if($ar_res['IBLOCK_CODE']=='tyres'){ $rsProp = CIBlockProperty::GetByID('model', false, 'tyres'); if($arProp = $rsProp->GetNext()){ $rsElement = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>$arProp['LINK_IBLOCK_ID'], 'ID'=>$ar_res['PROPERTIES']['model']['VALUE'], 'ACTIVE'=>'Y'), false, array('nTopCount'=>1), array('ID', 'IBLOCK_ID', 'PREVIEW_PICTURE')); if ($obElement = $rsElement->GetNextElement()) { $arFields = $obElement->GetFields(); $arProps = $obElement->GetProperties(false, array('CODE'=>array('model_season', 'model_type', 'model_pin'))); $item['IBLOCK_CODE']='tyres'; $item['PREVIEW_PICTURE'] = CFile::ResizeImageGet($arFields['PREVIEW_PICTURE'], array('width'=>43, 'height'=>60), BX_RESIZE_IMAGE_PROPORTIONAL, true); $item['PROPERTIES'] = $arProps; } } }elseif($ar_res['IBLOCK_CODE']=='wheels'){ $rsProp = CIBlockProperty::GetByID('model', false, 'wheels'); if($arProp = $rsProp->GetNext()){ $rsElement = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>$arProp['LINK_IBLOCK_ID'], 'ID'=>$ar_res['PROPERTIES']['model']['VALUE'], 'ACTIVE'=>'Y'), false, array('nTopCount'=>1), array('ID', 'IBLOCK_ID', 'PREVIEW_PICTURE')); if ($obElement = $rsElement->GetNextElement()) { $arFields = $obElement->GetFields(); $item['IBLOCK_CODE']='wheels'; $item['PREVIEW_PICTURE'] = CFile::ResizeImageGet($arFields['PREVIEW_PICTURE'], array('width'=>43, 'height'=>60), BX_RESIZE_IMAGE_PROPORTIONAL, true); } } } } ?>
protected function _SyncGetValueByType($FIELD, &$arQueue) { $fld = $FIELD['FIELD']; $bProperty = ($prop = self::__prop($fld['FIELD_ID'])) != null; $value = $FIELD['VALUE']; switch ($fld['SP_FIELD_TYPE']) { case 'DateTime': $ts = strtotime($value); if ($ts) { $value = ConvertTimeStamp($ts, 'FULL'); } break; case 'Counter': case 'Integer': $value = intval($value); break; case 'Number': $value = doubleval($value); break; case 'User': $bParseAsUser = false; if ($bProperty) { $dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID); if ($arRes = $dbRes->Fetch()) { if ($arRes['USER_TYPE'] == 'UserID' || $arRes['USER_TYPE'] == 'employee') { $bParseAsUser = true; } } } elseif ($fld['FIELD_ID'] == 'MODIFIED_BY' || $fld['FIELD_ID'] == 'CREATED_BY') { $bParseAsUser = true; } //var_dump($value); if ($bParseAsUser) { $value = self::_SyncGetUser($value); } break; case 'Choice': if ($bProperty) { $dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID); if ($arRes = $dbRes->Fetch()) { if ($arRes['PROPERTY_TYPE'] == 'L') { $dbRes = CIBlockProperty::GetPropertyEnum($prop, array(), array('VALUE' => $value)); if ($arRes = $dbRes->Fetch()) { $value = $arRes['ID']; } } } } break; case 'Attachments': $value = intval($value); if ($value > 0) { $arQueue[] = array('SP_METHOD' => 'GetAttachmentCollection', 'SP_METHOD_PARAMS' => array('SP_ID' => $FIELD['ROW']['ID']), 'CALLBACK' => array('CIntranetSharepoint', 'SetPropertyValue', array($FIELD['ROW']['UniqueId'], $fld['FIELD_ID']))); } $value = null; break; case 'ContentTypeId': case 'Lookup': case 'Computed': case 'Text': default: $bParseAsFile = false; if ($bProperty) { $dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID); if ($arRes = $dbRes->Fetch()) { if ($arRes['PROPERTY_TYPE'] == 'F') { $bParseAsFile = true; } } } elseif ($fld['FIELD_ID'] == 'PREVIEW_PICTURE' || $fld['FIELD_ID'] == 'DETAIL_PICTURE') { $bParseAsFile = true; } if ($bParseAsFile) { $arQueue[] = array('SP_METHOD' => 'LoadFile', 'SP_METHOD_PARAMS' => array('URL' => $value), 'CALLBACK' => array('CIntranetSharepoint', 'SetPropertyValue', array($FIELD['ROW']['UniqueId'], $fld['FIELD_ID']))); $value = null; } } if ($bProperty) { return array('VALUE' => $value, 'PROPERTY' => $prop); } else { return array('VALUE' => $value, 'FIELD' => $fld['FIELD_ID']); } }
if ($iblockId > 0) { $arIBlockIDs[] = $iblockId; } } $arIBlockIDs = array_values(array_unique($arIBlockIDs)); for ($i = $IBN; $i < sizeof($arIBlockIDs); $i++) { $dbTasksList = GetTasksList($arIBlockIDs[$i], array("ID" => "ASC"), array(">ID" => $ID)); $start_time = microtime(true); while ($task = $dbTasksList->Fetch()) { $ID = $task["ID"]; $newTask = array("SITE_ID" => $task["LID"], "TITLE" => htmlspecialchars_decode($task["NAME"]), "DESCRIPTION" => $task["DETAIL_TEXT"], "RESPONSIBLE_ID" => $task["PROPERTY_TaskAssignedTo"], "CREATED_BY" => $task["CREATED_BY"], "CREATED_DATE" => $task["DATE_CREATE"], "CHANGED_BY" => $task["MODIFIED_BY"], "CHANGED_DATE" => $task["TIMESTAMP_X"], "XML_ID" => $task["XML_ID"], "PRIORITY" => 0, "STATUS" => 1, "DURATION_PLAN" => intval($task["PROPERTY_TaskSize"]), "DURATION_FACT" => intval($task["PROPERTY_TaskSizeReal"]), "DURATION_TYPE" => "hours", "TAGS" => $task["TAGS"]); if ($task["DATE_ACTIVE_TO"]) { $newTask["DEADLINE"] = $task["DATE_ACTIVE_TO"]; } if (is_array($task["PROPERTY_TaskPriority"]) && sizeof($task["PROPERTY_TaskPriority"]) > 0) { $rsProperty = CIBlockProperty::GetByID(key($task["PROPERTY_TaskPriority"])); if ($arProperty = $rsProperty->Fetch()) { if (in_array($arProperty["XML_ID"], array(1, 2, 3))) { $newTask["PRIORITY"] = $arProperty["XML_ID"] - 1; } } } if (isset($task["DocumentState"]["STATE_NAME"]) && array_key_exists($task["DocumentState"]["STATE_NAME"], $arStatusMappings)) { $newTask["STATUS"] = $arStatusMappings[$task["DocumentState"]["STATE_NAME"]]; } elseif ($newTask["STATUS"] == 1 && $newTask["RESPONSIBLE_ID"] == $newTask["CREATED_BY"]) { $newTask["STATUS"] = 2; } elseif ($newTask["STATUS"] == 4 && $newTask["RESPONSIBLE_ID"] == $newTask["CREATED_BY"]) { $newTask["STATUS"] = 5; } if (is_array($task["PROPERTY_TaskFiles"]) && sizeof($task["PROPERTY_TaskFiles"]) > 0) { $newTask["FILES"] = $task["PROPERTY_TaskFiles"];
$BX_TV_PREFIX = intval($BX_TV_PREFIX)+1; $arResult['FIRST_FLV_ITEM'] = false; $arResult['FIRST_WMV_ITEM'] = false; if($this->StartResultCache(false, array(($arParams["CACHE_GROUPS"]==="N"? false: $USER->GetGroups()), $BX_TV_PREFIX))) { if(!CModule::IncludeModule("iblock")) { $this->AbortResultCache(); ShowError(GetMessage("CC_BIT_MODULE_NOT_INSTALLED")); return; } $rsProperty = CIBlockProperty::GetByID( $arParams["PATH_TO_FILE"], $arParams["IBLOCK_ID"] ); if(!$arProperty = $rsProperty->Fetch()) { $this->AbortResultCache(); return false; } $arResult = array( "RAW_SECTIONS" => array(), "RAW_ELEMENTS" => array(), "RAW_FILES" => array(), "PREFIX" => $BX_TV_PREFIX, "ELEMENT_CNT" => 0, "IBLOCK_TYPE_ID" => false,
$conversionProperty = function ($idProperty, $idIBlock, $type) { $propertyValues = array(); $result = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $idIBlock), null, null, array('ID')); $variants = array(); while ($element = $result->Fetch()) { $propResult = CIBlockElement::GetProperty($idIBlock, $element['ID'], '', '', array('ID' => $idProperty)); while ($property = $propResult->Fetch()) { $propertyValues[] = array('id_element' => (int) $element['ID'], 'id_property' => (int) $property['ID'], 'value' => $property['VALUE']); $variants[] = $property['VALUE']; } } $variants = array_filter(array_unique($variants)); asort($variants); $prop = new CIBlockProperty(); $prop->Update($idProperty, array('PROPERTY_TYPE' => $type)); $propertyData = CIBlockProperty::GetByID($idProperty, $idIBlock)->Fetch(); $list = array(); switch ($type) { case "L": // list /** @var CDatabase $DB */ global $DB; foreach ($variants as $variant) { $lastId = $list[$variant] = CIBlockPropertyEnum::Add(array('PROPERTY_ID' => $idProperty, 'VALUE' => $variant)); if (!$lastId) { throw new Exception($DB->db_Error); } } break; case "E": // Привязка к элементу
if (0 >= intval($key)) { $intNewKey++; } } } if (1 != preg_match('/^n\\d+$/', $str_PROPERTY_ID)) { $str_PROPERTY_IDCheck = intval($str_PROPERTY_ID); if (0 == $intIBlockID || $str_PROPERTY_IDCheck . '|' != $str_PROPERTY_ID . '|' || 0 >= $str_PROPERTY_IDCheck) { require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; ShowError(GetMessage("BT_ADM_IEP_PROPERTY_ID_IS_ABSENT")); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php"; die; } else { $str_PROPERTY_ID = $str_PROPERTY_IDCheck; unset($str_PROPERTY_IDCheck); $rsProps = CIBlockProperty::GetByID($str_PROPERTY_ID, $intIBlockID); if (!($arPropCheck = $rsProps->Fetch())) { require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; ShowError(str_replace('#ID#', $str_PROPERTY_ID, GetMessage("BT_ADM_IEP_PROPERTY_IS_NOT_EXISTS"))); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php"; die; } } } $bVarsFromForm = $bReload; $message = false; $strWarning = ""; if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["action"]) && $_POST["action"] === "delete") { CIBlockProperty::Delete($str_PROPERTY_ID); if (strlen($return_url) > 0) { LocalRedirect($return_url);
protected function innerDelete($id, &$errors) { /** @global CMain $APPLICATION */ global $APPLICATION; if (!CModule::IncludeModule('iblock')) { throw new RestException('Could not load iblock module.'); } /** @var CCrmPerms $userPerms */ $userPerms = CCrmPerms::GetCurrentUserPermissions(); if (!$userPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE')) { $errors[] = 'Access denied.'; return false; } $iblockId = intval(CCrmCatalog::EnsureDefaultExists()); $userTypes = CCrmProductPropsHelper::GetPropsTypesByOperations(false, 'rest'); $res = CIBlockProperty::GetByID($id, $iblockId); $result = false; if (is_object($res)) { $result = $res->Fetch(); } unset($res); if (!is_array($result) || isset($result['USER_TYPE']) && !empty($result['USER_TYPE']) && !array_key_exists($result['USER_TYPE'], $userTypes)) { $errors[] = 'Not found'; return false; } if (!CIBlockProperty::Delete($id)) { if ($e = $APPLICATION->GetException()) { $errors[] = $e->GetString(); } else { $errors[] = 'Error on deleting product property.'; } return false; } return true; }