• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/rest/customconnectors.php
  • Класс: BitrixImConnectorRestCustomConnectors
  • Вызов: CustomConnectors::register
static function register($params, $n, CRestServer $server)
	{
		if ($server->getAuthType() !== Auth::AUTH_TYPE)
		{
			throw new AuthTypeException("Application context required");
		}

		$result = array(
			'result' => false
		);

		$converter = new Converter(Converter::TO_UPPER | Converter::KEYS | Converter::RECURSIVE);
		$params = $converter->process($params);

		$clientId = $server->getClientId();
		$row = AppTable::getByClientId($clientId);
		$appId = $row['ID'];

		if (mb_strpos($params['ID'], '.') !== false)
		{
			$result = array(
				'result' => false,
				'error' => Library::ERROR_IMCONNECTOR_REST_APPLICATION_REGISTRATION_ERROR_POINT,
				'error_description' => Loc::getMessage('IMCONNECTOR_REST_APPLICATION_REGISTRATION_ERROR_POINT')
			);
		}
		else if (
			!empty($params['ID'])
			&& !empty($params['NAME'])
			&& !empty($params['ICON']['DATA_IMAGE'])
			&& !empty($appId)
			&& !empty($params['PLACEMENT_HANDLER'])
		)
		{
			$registerParams = array(
				'ID' => mb_strtolower($params['ID']),
				'NAME' => $params['NAME'],
				'ICON' => $params['ICON'],
				'COMPONENT' => Library::COMPONENT_NAME_REST,
				'REST_APP_ID' => $appId,
				'PLACEMENT_HANDLER' => $params['PLACEMENT_HANDLER']
			);

			if (isset($params['ICON_DISABLED']))
			{
				$registerParams['ICON_DISABLED'] = $params['ICON_DISABLED'];
			}
			if (isset($params['DEL_EXTERNAL_MESSAGES']))
			{
				$registerParams['DEL_EXTERNAL_MESSAGES'] = $params['DEL_EXTERNAL_MESSAGES'];
			}
			if (isset($params['EDIT_INTERNAL_MESSAGES']))
			{
				$registerParams['EDIT_INTERNAL_MESSAGES'] = $params['EDIT_INTERNAL_MESSAGES'];
			}
			if (isset($params['DEL_INTERNAL_MESSAGES']))
			{
				$registerParams['DEL_INTERNAL_MESSAGES'] = $params['DEL_INTERNAL_MESSAGES'];
			}
			if (isset($params['NEWSLETTER']))
			{
				$registerParams['NEWSLETTER'] = $params['NEWSLETTER'];
			}
			if (isset($params['NEED_SYSTEM_MESSAGES']))
			{
				$registerParams['NEED_SYSTEM_MESSAGES'] = $params['NEED_SYSTEM_MESSAGES'];
			}
			if (isset($params['NEED_SIGNATURE']))
			{
				$registerParams['NEED_SIGNATURE'] = $params['NEED_SIGNATURE'];
			}
			if (isset($params['CHAT_GROUP']))
			{
				$registerParams['CHAT_GROUP'] = $params['CHAT_GROUP'];
			}
			if (isset($params['COMMENT']))
			{
				$registerParams['COMMENT'] = $params['COMMENT'];
			}

			if (Helper::registerApp($registerParams))
			{
				$result = array(
					'result' => true
				);

				if ($row['CODE'])
				{
					$id = uniqid($row['CODE'], true);
					AddEventToStatFile(
						'imconnector',
						'registerRestConnector',
						$id,
						$row['CODE'],
						'appCode'
					);
					AddEventToStatFile(
						'imconnector',
						'registerRestConnector',
						$id,
						$registerParams['ID'],
						'connectorCode'
					);
				}
			}
			else
			{
				$result = array(
					'result' => false,
					'error' => Library::ERROR_IMCONNECTOR_REST_APPLICATION_REGISTRATION_ERROR,
					'error_description' => Loc::getMessage('IMCONNECTOR_REST_APPLICATION_REGISTRATION_ERROR')
				);
			}
		}
		else if (empty($params['ID']))
		{
			$result = array(
				'result' => false,
				'error' => Library::ERROR_IMCONNECTOR_REST_CONNECTOR_ID_REQUIRED,
				'error_description' => Loc::getMessage('IMCONNECTOR_REST_CONNECTOR_ID_REQUIRED')
			);
		}
		else if (empty($params['NAME']))
		{
			$result = array(
				'result' => false,
				'error' => Library::ERROR_IMCONNECTOR_REST_NAME_REQUIRED,
				'error_description' => Loc::getMessage('IMCONNECTOR_REST_NAME_REQUIRED')
			);
		}
		else if (empty($params['ICON']['DATA_IMAGE']))
		{
			$result = array(
				'result' => false,
				'error' => Library::ERROR_IMCONNECTOR_REST_ICON_REQUIRED,
				'error_description' => Loc::getMessage('IMCONNECTOR_REST_ICON_REQUIRED')
			);
		}
		else if (empty($appId))
		{
			$result = array(
				'result' => false,
				'error' => Library::ERROR_IMCONNECTOR_REST_NO_APPLICATION_ID,
				'error_description' => Loc::getMessage('IMCONNECTOR_REST_NO_APPLICATION_ID')
			);
		}
		else if (empty($params['PLACEMENT_HANDLER']))
		{
			$result = array(
				'result' => false,
				'error' => Library::ERROR_IMCONNECTOR_REST_NO_PLACEMENT_HANDLER,
				'error_description' => Loc::getMessage('IMCONNECTOR_REST_NO_PLACEMENT_HANDLER')
			);
		}
		else
		{
			$result = array(
				'result' => false,
				'error' => Library::ERROR_IMCONNECTOR_REST_GENERAL_CONNECTOR_REGISTRATION_ERROR,
				'error_description' => Loc::getMessage('IMCONNECTOR_REST_GENERAL_CONNECTOR_REGISTRATION_ERROR')
			);
		}

		return $result;
	}