本文整理汇总了PHP中CIBlockPropertyEnum::DeleteByPropertyID方法的典型用法代码示例。如果您正苦于以下问题:PHP CIBlockPropertyEnum::DeleteByPropertyID方法的具体用法?PHP CIBlockPropertyEnum::DeleteByPropertyID怎么用?PHP CIBlockPropertyEnum::DeleteByPropertyID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CIBlockPropertyEnum
的用法示例。
在下文中一共展示了CIBlockPropertyEnum::DeleteByPropertyID方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: UpdateEnum
/**
* <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)) {
//.........这里部分代码省略.........