11 $originalValues = $values;
13 foreach($values as
$i => $row)
17 if(strncmp(
$key,
"~", 1) === 0)
26 $salt = RandString(8);
27 foreach($values as
$key => $value)
29 if(strncmp(
$key,
"n", 1) === 0 && (!isset($value[
"DEL"]) || $value[
"DEL"] !=
"Y") && (
string)$value[
"VALUE"] <>
'')
31 if(!isset($value[
"XML_ID"]) || $value[
"XML_ID"] ==
'')
33 $values[
$key][
"XML_ID"] = $value[
"XML_ID"] = md5($salt . $value[
"VALUE"]);
36 if(array_key_exists($value[
"XML_ID"], $arAdded))
38 $aMsg[] =
array(
"text" =>
GetMessage(
"USER_TYPE_XML_ID_UNIQ",
array(
"#XML_ID#" => $value[
"XML_ID"])));
42 $rsEnum = $this->
GetList(
array(),
array(
"USER_FIELD_ID" => $FIELD_ID,
"XML_ID" => $value[
"XML_ID"]));
43 if($arEnum = $rsEnum->Fetch())
45 $aMsg[] =
array(
"text" =>
GetMessage(
"USER_TYPE_XML_ID_UNIQ",
array(
"#XML_ID#" => $value[
"XML_ID"])));
49 if (!isset($arAdded[$value[
"XML_ID"]]))
51 $arAdded[$value[
"XML_ID"]] = 0;
54 $arAdded[$value[
"XML_ID"]]++;
60 $previousValues =
array();
63 while($arEnum = $rsEnum->Fetch())
65 $previousValues[$arEnum[
"ID"]] = $arEnum;
67 if(array_key_exists($arEnum[
"ID"], $values))
69 $value = $values[$arEnum[
"ID"]];
70 if ((
string)($value[
'VALUE'] ??
'') ===
'' || (($value[
'DEL'] ??
'N') ===
'Y'))
74 $arEnum[
"VALUE"] != $value[
"VALUE"] ||
75 $arEnum[
"DEF"] != $value[
"DEF"] ||
76 $arEnum[
"SORT"] != $value[
"SORT"] ||
77 $arEnum[
"XML_ID"] != $value[
"XML_ID"]
80 if(!isset($value[
"XML_ID"]) || $value[
"XML_ID"] ==
'')
81 $value[
"XML_ID"] = md5($value[
"VALUE"]);
84 if($arEnum[
"XML_ID"] != $value[
"XML_ID"])
86 if(array_key_exists($value[
"XML_ID"], $arAdded))
88 $aMsg[] =
array(
"text" =>
GetMessage(
"USER_TYPE_XML_ID_UNIQ",
array(
"#XML_ID#" => $value[
"XML_ID"])));
93 $rsEnumXmlId = $this->
GetList(
array(),
array(
"USER_FIELD_ID" => $FIELD_ID,
"XML_ID" => $value[
"XML_ID"]));
94 if($arEnumXmlId = $rsEnumXmlId->Fetch())
96 $aMsg[] =
array(
"text" =>
GetMessage(
"USER_TYPE_XML_ID_UNIQ",
array(
"#XML_ID#" => $value[
"XML_ID"])));
104 $xmlId = $value[
'XML_ID'];
105 if (!isset($arAdded[$xmlId]))
107 $arAdded[$xmlId] = 0;
123 if(CACHED_b_user_field_enum !==
false)
126 foreach($values as
$key => $value)
128 if(strncmp(
$key,
"n", 1) === 0 && (!isset($value[
"DEL"]) || $value[
"DEL"] !=
"Y") && (
string)$value[
"VALUE"] <>
'')
130 if(!isset($value[
"XML_ID"]) || $value[
"XML_ID"] ==
'')
131 $value[
"XML_ID"] = md5($value[
"VALUE"]);
133 if (!isset($value[
"DEF"]) || $value[
'DEF'] !==
'Y')
138 $value[
"USER_FIELD_ID"] = $FIELD_ID;
139 $id =
$DB->Add(
"b_user_field_enum", $value);
141 $originalValues[$id] = $originalValues[
$key];
142 unset($originalValues[
$key], $values[
$key]);
146 while($arEnum = $rsEnum->Fetch())
148 if(array_key_exists($arEnum[
"ID"], $values))
150 $value = $values[$arEnum[
"ID"]];
151 if ((
string)($value[
'VALUE'] ??
'') ===
'' || (($value[
'DEL'] ??
'N') ===
'Y'))
153 $DB->Query(
"DELETE FROM b_user_field_enum WHERE ID = " . $arEnum[
"ID"]);
155 elseif($arEnum[
"VALUE"] != $value[
"VALUE"] ||
156 $arEnum[
"DEF"] != $value[
"DEF"] ||
157 $arEnum[
"SORT"] != $value[
"SORT"] ||
158 $arEnum[
"XML_ID"] != $value[
"XML_ID"])
160 if(!isset($value[
"XML_ID"]) || $value[
"XML_ID"] ==
'')
161 $value[
"XML_ID"] = md5($value[
"VALUE"]);
164 $strUpdate =
$DB->PrepareUpdate(
"b_user_field_enum", $value);
166 $DB->Query(
"UPDATE b_user_field_enum SET " . $strUpdate .
" WHERE ID = " . $arEnum[
"ID"]);
170 if(CACHED_b_user_field_enum !==
false)
173 $event = new \Bitrix\Main\Event(
'main',
'onAfterSetEnumValues', [$FIELD_ID, $originalValues, $previousValues]);