- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/main.php
- Класс: CAllMain
- Вызов: CAllMain::SetGroupRight
static function SetGroupRight($module_id, $group_id, $right, $site_id=false)
{
global $DB;
$group_id = intval($group_id);
if(COption::GetOptionString("main", "event_log_module_access", "N") === "Y")
{
//get old value
$sOldRight = "";
$rsRight = $DB->Query("SELECT G_ACCESS FROM b_module_group WHERE MODULE_ID='".$DB->ForSql($module_id,50)."' AND GROUP_ID=".$group_id." AND SITE_ID ".($site_id ? "= '".$DB->ForSql($site_id)."'" : "IS NULL"));
if($arRight = $rsRight->Fetch())
$sOldRight = $arRight["G_ACCESS"];
if($sOldRight <> $right)
CEventLog::Log("SECURITY", "MODULE_RIGHTS_CHANGED", "main", $group_id, $module_id.($site_id ? "/".$site_id : "").": (".$sOldRight.") => (".$right.")");
}
$arFields = array(
"MODULE_ID" => "'".$DB->ForSql($module_id,50)."'",
"GROUP_ID" => $group_id,
"G_ACCESS" => "'".$DB->ForSql($right,255)."'"
);
$rows = $DB->Update("b_module_group", $arFields, "WHERE MODULE_ID='".$DB->ForSql($module_id,50)."' AND GROUP_ID='".$group_id."' AND SITE_ID ".($site_id ? "= '".$DB->ForSql($site_id)."'" : "IS NULL"), $err_mess.__LINE__);
if(intval($rows)<=0)
{
if ($site_id)
$arFields["SITE_ID"] = "'".$DB->ForSql($site_id,2)."'";
$DB->Insert("b_module_group", $arFields);
}
ModuleGroupTable::cleanCache();
foreach (GetModuleEvents("main", "OnAfterSetGroupRight", true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, array($module_id, $group_id));
}
}