Поддержка серверов

CUser::SetUserGroup: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=163385

<?php 
//    /bitrix/modules/main/classes/general/user.phpCUser::SetUserGroup()
//    2852:

    
public static function SetUserGroup($USER_ID$arGroups$newUser false)
    {
        global 
$DB;

        
$USER_ID intval($USER_ID);

        if (
$USER_ID === 0)
        {
            return 
false;
        }

        
//remember previous groups of the user
        
$aPrevGroups = array();
        
$res CUser::GetUserGroupList($USER_ID);
        while(
$res_arr $res->Fetch())
            if(
$res_arr["GROUP_ID"] <> 2)
                
$aPrevGroups[$res_arr["GROUP_ID"]] = $res_arr;

        
$DB->Query("DELETE FROM b_user_group WHERE USER_ID=".$USER_IDfalse"FILE: ".__FILE__."<br> LINE: ".__LINE__);

        
$inserted = array();
        if(
is_array($arGroups))
        {
            foreach(
$arGroups as $group)
            {
                if(!
is_array($group))
                {
                    
$group = array("GROUP_ID" => $group);
                }

                
$group_id intval($group["GROUP_ID"]);
                if(
$group_id && $group_id <> && !isset($inserted[$group_id]))
                {
                    
$arInsert $DB->PrepareInsert("b_user_group"$group);
                    
$strSql "
                        INSERT IGNORE INTO b_user_group (
                            USER_ID, "
.$arInsert[0]."
                        ) VALUES (
                            "
.$USER_ID.",
                            "
.$arInsert[1]."
                        )
                    "
;
                    
$DB->Query($strSqlfalse"FILE: ".__FILE__."<br> LINE: ".__LINE__);
                    
$inserted[$group_id] = $group;
                }
            }
        }
        
self::clearUserGroupCache($USER_ID);

        foreach (
GetModuleEvents("main""OnAfterSetUserGroup"true) as $arEvent)
        {
            
ExecuteModuleEventEx($arEvent, array("USER_ID"=>$USER_ID"GROUPS"=>$inserted));
        }

        if(
$aPrevGroups <> $inserted)
        {
            if(
$newUser == false)
            {
                
$authActionCommon false;
                
$now = new Main\Type\DateTime();
                foreach(
$inserted as $group)
                {
                    foreach(array(
"DATE_ACTIVE_FROM""DATE_ACTIVE_TO") as $field)
                    {
                        if(
$group[$field] <> '')
                        {
                            
$date Main\Type\DateTime::00848a837cfe964ab73a2d836daaf331createFromUserTime($group[$field]);
                            if(
$date $now)
                            {
                                
//group membership is in the future, we need separate records for each group
                                
Main\UserAuthActionTable::addUpdateAction($USER_ID$date);
                            }
                            else
                            {
                                
$authActionCommon true;
                            }
                        }
                        else
                        {
                            
$authActionCommon true;
                        }
                    }
                }

                if(
$authActionCommon == true)
                {
                    
//one action for all groups without dates in the future
                    
Main\UserAuthActionTable::addUpdateAction($USER_ID);
                }
            }

            if(
COption::GetOptionString("main""event_log_user_groups""N") === "Y")
            {
                
$UserName '';
                
$rsUser CUser::GetByID($USER_ID);
                if(
$arUser $rsUser->GetNext())
                    
$UserName = ($arUser["NAME"] != "" || $arUser["LAST_NAME"] != "") ? trim($arUser["NAME"]." ".$arUser["LAST_NAME"]) : $arUser["LOGIN"];
                
$res_log = array(
                    
"groups" => serialize($aPrevGroups)." => ".serialize($inserted),
                    
"user" => $UserName
                
);
                
CEventLog::Log("SECURITY""USER_GROUP_CHANGED""main"$USER_IDserialize($res_log));
            }
        }
        return 
null;
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение