- Модуль: 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;
}