• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/preset/eventcontroller.php
  • Класс: BitrixRestPresetEventController
  • Вызов: EventController::onAfterAddApPermission
static function onAfterAddApPermission(Event $event)
{
	if (!static::$skipMode)
	{
		$id = intVal($event->getParameter('id'));
		if ($id > 0)
		{
			/** @var array $fields */
			$fields = $event->getParameter('fields');
			if (!isset(static::$tmpApList[$fields['PASSWORD_ID']]) ||
				!isset(static::$tmpApPermissionList[$fields['PASSWORD_ID']]))
			{
				$res = IntegrationTable::getList(
					[
						'filter' => [
							'PASSWORD_ID' => $fields['PASSWORD_ID']
						],
						'select' => [
							'ID',
							'PASSWORD_ID',
							'SCOPE'
						]
					]
				);
				if ($integration = $res->fetch())
				{
					static::$tmpApList[$integration['PASSWORD_ID']] = $integration['ID'];
					static::$tmpApPermissionList[$integration['PASSWORD_ID']] = $integration['SCOPE'];
				}
			}

			if (
				array_key_exists($fields['PASSWORD_ID'], static::$tmpApPermissionList)
				&& !in_array($fields['PERM'], static::$tmpApPermissionList[$fields['PASSWORD_ID']])
			)
			{
				static::$tmpApPermissionList[$fields['PASSWORD_ID']][] = $fields['PERM'];

				try
				{
					$integrationId = static::$tmpApList[$fields['PASSWORD_ID']];
					$scopeList = static::$tmpApPermissionList[$fields['PASSWORD_ID']];
					IntegrationTable::update(
						$integrationId,
						[
							'SCOPE' => $scopeList
						]
					);
				}
				catch (Exception $e)
				{
				}
			}
		}
	}
}