• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/access/install/accessinstaller.php
  • Класс: Bitrix\Sender\Access\Install\AccessInstaller
  • Вызов: AccessInstaller::fillSystemPermissions
static function fillSystemPermissions() :void
{
	$map = RoleUtil::preparedRoleMap();

	$query = [];
	try
	{
		$oldRolesList = RoleTable::getList(['select' => ['ID', 'XML_ID']])->fetchAll();
		$xmlIds       = array_flip(array_column($oldRolesList, 'XML_ID'));
		foreach ($map as $roleKey => $permissions)
		{
			$roleName = RoleUtil::getLocalizedName($roleKey);

			$roleId = isset($xmlIds[$roleKey])
				? $oldRolesList[$xmlIds[$roleKey]]['ID']
				: (new RolePermissionService())->saveRole($roleName);

			$query = array_merge($query, RoleUtil::buildInsertPermissionQuery($permissions, $roleId));
		}

		RoleUtil::insertPermissions($query);
	} catch (\Exception $e)
	{
	}
}