- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/mysql/user.php
- Класс: CGroup
- Вызов: CGroup::Add
public function Add($arFields)
{
/** @global CMain $APPLICATION */
global $DB, $APPLICATION;
if(!$this->CheckFields($arFields))
return false;
foreach(GetModuleEvents("main", "OnBeforeGroupAdd", true) as $arEvent)
{
$bEventRes = ExecuteModuleEventEx($arEvent, array(&$arFields));
if($bEventRes===false)
{
if($err = $APPLICATION->GetException())
$this->LAST_ERROR .= $err->GetString()."
";
else
$this->LAST_ERROR .= "Unknown error in OnBeforeGroupAdd handler."."
";
return false;
}
}
if(is_set($arFields, "ACTIVE") && $arFields["ACTIVE"]!="Y")
$arFields["ACTIVE"]="N";
$arInsert = $DB->PrepareInsert("b_group", $arFields);
$strSql = "
INSERT INTO b_group (
".$arInsert[0]."
) VALUES(
".$arInsert[1]."
)
";
$DB->Query($strSql);
$ID = $DB->LastID();
if (is_array($arFields["USER_ID"]) && !empty($arFields["USER_ID"]))
{
if (is_array($arFields["USER_ID"][0]) && !empty($arFields["USER_ID"][0]))
{
$arTmp = array();
foreach ($arFields["USER_ID"] as $userId)
{
if (intval($userId["USER_ID"]) > 0
&& !in_array(intval($userId["USER_ID"]), $arTmp))
{
$arInsert = $DB->PrepareInsert("b_user_group", $userId);
$strSql =
"INSERT INTO b_user_group(GROUP_ID, ".$arInsert[0].") ".
"VALUES(".$ID.", ".$arInsert[1].")";
$DB->Query($strSql);
$arTmp[] = intval($userId["USER_ID"]);
}
}
}
else
{
$strUsers = "0";
foreach ($arFields["USER_ID"] as $userId)
$strUsers.=",".intval($userId);
$strSql =
"INSERT INTO b_user_group(GROUP_ID, USER_ID) ".
"SELECT ".$ID.", ID ".
"FROM b_user ".
"WHERE ID in (".$strUsers.")";
$DB->Query($strSql);
}
CUser::clearUserGroupCache();
}
$arFields["ID"] = $ID;
foreach (GetModuleEvents("main", "OnAfterGroupAdd", true) as $arEvent)
ExecuteModuleEventEx($arEvent, array(&$arFields));
return $ID;
}