• Модуль: messageservice
  • Путь к файлу: ~/bitrix/modules/messageservice/lib/restservice.php
  • Класс: BitrixMessageServiceRestService
  • Вызов: RestService::addSender
static function addSender($params, $n, $server)
{
	global $USER;

	if(!$server->getClientId())
	{
		throw new AccessException("Application context required");
	}

	self::checkAdminPermissions();
	$params = array_change_key_case($params, CASE_UPPER);

	self::validateSender($params, $server);

	$params['APP_ID'] = $server->getClientId();

	$iterator = InternalEntityRestAppTable::getList([
		'select' => ['ID'],
		'filter' => [
			'=APP_ID' => $params['APP_ID'],
			'=CODE' => $params['CODE']
		]
	]);
	$result = $iterator->fetch();
	if ($result)
	{
		throw new RestException('Sender already installed!', self::ERROR_SENDER_ALREADY_INSTALLED);
	}

	$senderLang = [
		'NAME' => $params['NAME'],
		'DESCRIPTION' => isset($params['DESCRIPTION']) ? $params['DESCRIPTION'] : ''
	];
	unset($params['NAME'], $params['DESCRIPTION']);

	$params['AUTHOR_ID'] = $USER->getId();
	$result = InternalEntityRestAppTable::add($params);

	if ($result->getErrors())
	{
		throw new RestException('Sender save error!', self::ERROR_SENDER_ADD_FAILURE);
	}

	$senderLang['APP_ID'] = $result->getId();
	static::addSenderLang($senderLang, $server->getClientId());

	$app = BitrixRestAppTable::getByClientId($params['APP_ID']);
	if ($app['CODE'])
	{
		AddEventToStatFile(
			'messageservice',
			'addProvider' . $params['TYPE'],
			uniqid($app['CODE'], true),
			$app['CODE']
		);
	}

	return true;
}