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