• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Delete/DeleteService.php
  • Класс: BitrixImV2MessageDeleteDeleteService
  • Вызов: DeleteService::delete
public function delete(): Result
{
	$messageFields = $this->message->toArray();
	$messageFields['PARAMS'] = $this->message->getParams()->toRestFormat();
	$messageFields['CHAT_ENTITY_TYPE'] = $this->chat->getEntityType();
	$messageFields['CHAT_ENTITY_ID'] = $this->chat->getEntityId();

	if (!$this->mode)
	{
		$this->mode = $this->canDelete();
	}

	$files = $this->message->getFiles();

	switch ($this->mode)
	{
		case self::DELETE_SOFT:
			$result = $this->deleteSoft();
			$this->fireEventAfterMessageDelete($messageFields);
			break;
		case self::DELETE_HARD:
			$this->getChatPreviousMessages();
			$result = $this->deleteHard();
			$this->fireEventAfterMessageDelete($messageFields, true);
			break;
		case self::DELETE_COMPLETE:
			$this->getChatPreviousMessages();
			$result = $this->deleteHard(true);
			$this->fireEventAfterMessageDelete($messageFields, true);
			break;
		default:
			return (new Result())->addError(new MessageMessageError(MessageMessageError::MESSAGE_ACCESS_ERROR));
	}

	if (Option::get('im', 'message_history_index'))
	{
		MessageIndexTable::delete($this->message->getId());
	}

	(new UrlService())->deleteUrlsByMessage($this->message);
	foreach ($files as $file)
	{
		$file->getDiskFile()->delete(SystemUser::SYSTEM_USER_ID);
	}

	return $result;
}