• Модуль: 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));
	}
}