• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/config.php
  • Класс: BitrixImOpenLinesConfig
  • Вызов: Config::delete
public function delete($configId): bool
{
	$configId = (int)$configId;
	if (!$configId)
	{
		return false;
	}

	$sessList = ModelConfigTable::getById($configId);
	if (!($config = $sessList->fetch()))
	{
		return false;
	}

	ModelConfigTable::delete($configId);
	ConfigStatistic::delete($configId);

	if($config['QUICK_ANSWERS_IBLOCK_ID'] > 0)
	{
		ListsDataManager::updateIblockRights($config['QUICK_ANSWERS_IBLOCK_ID']);
	}

	$sessList = ModelQueueTable::getList([
		'select' => ['ID'],
		'filter' => ['=CONFIG_ID' => $configId]
	]);
	while ($row = $sessList->fetch())
	{
		ModelQueueTable::delete($row['ID']);
	}

	$raw = ConfigQueueTable::getList([
		'select' => ['ID'],
		'filter' => ['=CONFIG_ID' => $configId]
	]);
	while ($row = $raw->fetch())
	{
		ConfigQueueTable::delete($row['ID']);
	}

	$this->deleteAllAutomaticMessage($configId);

	$sessList = ModelSessionTable::getList([
		'select' => ['ID', 'CHAT_ID', 'CLOSED'],
		'filter' => ['=CONFIG_ID' => $configId]
	]);
	while ($session = $sessList->fetch())
	{
		if ($session['CLOSED'] != 'Y')
		{
			Im::chatHide($session['CHAT_ID']);
		}

		Session::deleteSession($session['ID']);
	}

	try
	{
		if (Loader::includeModule('im'))
		{
			$aliases = BitrixImModelAliasTable::getList(
				Array(
					'filter' => Array(
						'=ALIAS' => BitrixImAlias::ENTITY_TYPE_LIVECHAT,
						'=ENTITY_ID' => $configId
					)
				)
			);
			while ($alias = $aliases->fetch())
			{
				BitrixImAlias::delete($alias['ID']);
			}
		}

		if (Loader::includeModule('imconnector'))
		{
			BitrixImConnectorOutput::deleteLine($configId);
		}
	}
	catch (BitrixMainSystemException $e)
	{}

	self::sendUpdateForQueueList(Array(
		'ID' => $configId,
		'ACTION' => 'DELETE',
		'SESSION_PRIORITY' => 0
	));

	$eventData = array(
		'line' => $configId
	);
	$event = new MainEvent('imopenlines', self::EVENT_IMOPENLINE_DELETE, $eventData);
	$event->send();

	return true;
}