function SetGroupSecurity($group_code, $arPermissions, $arSubGroups = false) { if (($group_id = CGroup::GetIDByCode($group_code)) <= 0) { return false; } $arBackup = CControllerClient::GetBackup(); foreach ($arPermissions as $module_id => $level) { if (!is_set($arBackup["security"][$group_code], $module_id)) { $arBackup["security"][$group_code][$module_id] = CGroup::GetModulePermission($group_id, $module_id); } CGroup::SetModulePermission($group_id, $module_id, $level); } if (is_array($arSubGroups)) { $arSubordGroupID = array(); foreach ($arSubGroups as $sub_group_id) { $sub_group_id = CGroup::GetIDByCode($sub_group_id); if ($sub_group_id > 0) { $arSubordGroupID[] = $sub_group_id; } } if (!is_set($arBackup["security_subord_groups"], $group_code)) { $arBackup["security_subord_groups"][$group_code] = CGroup::GetSubordinateGroups($group_id); } CGroup::SetSubordinateGroups($group_id, $arSubordGroupID); } CControllerClient::SetBackup($arBackup); }