Необходимо в зависимости от того заполнены ли пользовательские поля: "DIVIZION" и "DIVIZION1", добавить пользователя в соответствующие группы. В случае, если не заполнены поля из группы нужно пользователя исключить.
Вот что я наваял:
AddEventHandler("main", "OnBeforeUserUpdate", Array("MyClass", "OnBeforeUserUpdateHandler"));
class MyClass
{
function OnBeforeUserUpdateHandler(&$arFields)
{
if ($arFields["UF_DIVIZION"]!=NULL)
$arFields["GROUP_ID"][] = 58;
else
{
if (in_array("58",($arFields["GROUP_ID"]))>0)
$array_dels = array("58");
$array = array_diff($arFields["GROUP_ID"],$array_dels);
$arFields["GROUP_ID"]=$array;
}
if ($arFields["UF_DIVIZION1"]!=NULL)
$arFields["GROUP_ID"][] = 61;
else
{
if (in_array("61",($arFields["GROUP_ID"]))>0)
$array_dels = array("61");
$array = array_diff($arFields["GROUP_ID"],$array_dels);
$arFields["GROUP_ID"]=$array;
}
if ($arFields["UF_DIVIZION2"]!=NULL)
$arFields["GROUP_ID"][] = 62;
else
{
if (in_array("62",($arFields["GROUP_ID"]))>0)
$array_dels = array("62");
$array = array_diff($arFields["GROUP_ID"],$array_dels);
$arFields["GROUP_ID"]=$array;
}
В группы пользователи добавляются, но удаляются не из конкретной группы, а полностью очищается список групп.
Причем, если оставить код только для одного поля, то все работает корректно.
Подскажите, пожалуйста, что я сделал не так.
Вот что я наваял:
AddEventHandler("main", "OnBeforeUserUpdate", Array("MyClass", "OnBeforeUserUpdateHandler"));
class MyClass
{
function OnBeforeUserUpdateHandler(&$arFields)
{
if ($arFields["UF_DIVIZION"]!=NULL)
$arFields["GROUP_ID"][] = 58;
else
{
if (in_array("58",($arFields["GROUP_ID"]))>0)
$array_dels = array("58");
$array = array_diff($arFields["GROUP_ID"],$array_dels);
$arFields["GROUP_ID"]=$array;
}
if ($arFields["UF_DIVIZION1"]!=NULL)
$arFields["GROUP_ID"][] = 61;
else
{
if (in_array("61",($arFields["GROUP_ID"]))>0)
$array_dels = array("61");
$array = array_diff($arFields["GROUP_ID"],$array_dels);
$arFields["GROUP_ID"]=$array;
}
if ($arFields["UF_DIVIZION2"]!=NULL)
$arFields["GROUP_ID"][] = 62;
else
{
if (in_array("62",($arFields["GROUP_ID"]))>0)
$array_dels = array("62");
$array = array_diff($arFields["GROUP_ID"],$array_dels);
$arFields["GROUP_ID"]=$array;
}
В группы пользователи добавляются, но удаляются не из конкретной группы, а полностью очищается список групп.
Причем, если оставить код только для одного поля, то все работает корректно.
Подскажите, пожалуйста, что я сделал не так.