- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Delete/DeleteService.php
- Класс: BitrixImV2MessageDeleteDeleteService
- Вызов: DeleteService::deleteLinks
private function deleteLinks()
{
$connection = Application::getConnection();
// delete chats with PARENT_MID
$childChatResult = ChatChatFactory::getInstance()->findChat(['PARENT_MID' => $this->message->getId()]);
if ($childChatResult->hasResult())
{
$childChat = ChatChatFactory::getInstance()->getChat($childChatResult->getResult());
$childChat->deleteChat();
}
(new BitrixImV2LinkFavoriteFavoriteService())->unmarkMessageAsFavoriteForAll($this->message);
(new BitrixImV2MessageReadService())->deleteByMessageId(
$this->message->getMessageId(),
$this->chat->getRelations()->getUserIds()
);
$this->message->unpin();
if (Loader::includeModule('tasks'))
{
$taskItem = TaskItem::getByMessageId($this->message->getMessageId());
if ($taskItem !== null)
{
$taskItem->setMessageId(0);
(new TaskService())->updateTaskLink($taskItem);
}
}
if (Loader::includeModule('calendar'))
{
$calendarItem = CalendarItem::getByMessageId($this->message->getMessageId());
if ($calendarItem !== null)
{
$calendarItem->setMessageId(0);
(new CalendarService())->updateCalendarLink($calendarItem);
}
}
$this->message->getParams()->delete();
// delete unused rows in db
$tablesToDeleteRow = [
'b_im_message_uuid',
'b_im_message_favorite',
'b_im_message_disappearing',
'b_im_message_index',
'b_im_link_reminder',
'b_imconnectors_delivery_mark',
];
foreach ($tablesToDeleteRow as $table)
{
$connection->query("DELETE FROM " . $table . " WHERE MESSAGE_ID = " . $this->message->getId());
}
}