• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/rest/helper.php
  • Класс: BitrixImConnectorRestHelper
  • Вызов: Helper::unRegisterApp
static function unRegisterApp(array $params): bool
{
	$result = true;

	if (empty($params['REST_APP_ID']) || empty($params['ID']))
	{
		return false;
	}

	$restAppId = $params['REST_APP_ID'];
	$connectorId = mb_strtolower($params['ID']);

	$connection = BitrixMainApplication::getInstance()->getConnection();
	$connection->startTransaction();

	try
	{
		$raw = StatusConnectorsTable::getList([
			'select' => ['ID', 'LINE', 'CONNECTOR'],
			'filter' => [
				'=CONNECTOR' => $connectorId,
			],
		]);
		while ($row = $raw->fetch())
		{
			$isStatusDeleted = BitrixImConnectorStatus::delete($row['CONNECTOR'], (int)$row['LINE']);
			if (!$isStatusDeleted)
			{
				$result = false;
				break;
			}
		}

		if ($result)
		{
			$raw = CustomConnectorsTable::getList([
				'select' => ['ID', 'REST_PLACEMENT_ID'],
				'filter' => [
					'=REST_APP_ID' => $restAppId,
					'=ID_CONNECTOR' => $connectorId,
				],
			]);
			while ($row = $raw->fetch())
			{
				$deleteConnectorResult = CustomConnectorsTable::delete($row['ID']);
				$isPlacementUnRegistered = self::unRegisterPlacement((int)$row['REST_PLACEMENT_ID']);
				if (!$isPlacementUnRegistered || !$deleteConnectorResult->isSuccess())
				{
					$result = false;
					break;
				}
			}
		}

		if ($result)
		{
			$connection->commitTransaction();
		}
		else
		{
			$connection->rollbackTransaction();
		}
	}
	catch (BitrixMainSystemException $e)
	{
		$connection->rollbackTransaction();
		$result = false;
	}

	return $result;
}