Уведомления

Описание

Это API предоставляет функциональность для отправки электронных писем и личных сообщений (ЛС) пользователям в системе DLE Billing. Состоит из двух основных классов:

  • Email — базовый класс для работы с email
  • Message — расширяет Email, добавляет функционаً отправки личных сообщений (ЛС)

    Оба класса находятся в namespace Billing\Api.


Классы

1. Billing\Api\Email

Базовый класс для работы с email-уведомлениями.

Properties (Свойства)

Свойство Тип Описание
$UserConnect array Контактная информация пользователя (id, name, email или group_id)
$message_title string Заголовок сообщения
$message_body string Содержимое сообщения
$lastResult mixed Результат последнего операции
$global array Глобальные переменные DLE (config, db, time, dle_mail)

Конструктор

public function __construct(
    ?int $userId = 0,
    ?string $name = '',
    ?string $email = '',
    ?int $group_id = 0
)

Параметры:

Параметр Тип Требуется Описание
$userId int Нет ID пользователя
$name string Нет Имя пользователя
$email string Нет Email пользователя
$group_id int Нет ID группы пользователя

Примечания:

  • Должен быть передан хотя бы один параметр
  • Вызывает \Exception с сообщением 'UserConnect', если не передан ни один параметр

Methods (Методы)

setTitle(string $title): self

Установить заголовок сообщения.

Параметры:

Параметр Тип Описание
$title string Заголовок сообщения

Возвращает: Текущий экземпляр


setBody(string $text): self

Установить содержимое сообщения.

Параметры:

Параметр Тип Описание
$text string Содержимое сообщения

Возвращает: Текущий экземпляр


loadTemplate(string $filename): self

Загрузить содержимое уведомления из файла шаблона.

Параметры:

Параметр Тип Описание
$filename string Имя файла шаблона (без расширения .tpl)

Путь к шаблону:
/templates/{skin}/billing/mail/{filename}.tpl

Формат шаблона:
[title]Заголовок сообщения[/title]
Содержимое сообщения здесь

Возвращает: Текущий экземпляр

Исключения:

  • 'Load template' — Файл не найден
  • 'Message title' — Заголовок не найден в шаблоне
  • 'Message body' — Содержимое не найдено в шаблоне

buildTemplate(?array $data = []): self

Заменить теги в содержимом сообщения на переданные данные.

Параметры:

Параметр Тип Описание
$data array Пары ключ-значение для замены тегов

Действие:

  • Ключи и значения экранируются через htmlspecialchars()
  • Заменяет теги в $message_body (дважды, для безопасности)

Возвращает: Текущий экземпляр


send(): self

Отправить email получателям.

Возвращает: Текущий экземпляр для chaining

Действие:

  • Отправляет email всем пользователям, соответствующим критериям $UserConnect
  • Сохраняет результат в $lastResult[] для каждого получателя

getResult(): mixed

Получить результат последней операции.

Возвращает: Значение $lastResult (массив результатов или информация об ошибке)


pm(?string $from = ''): self (deprecated)

Отправить личные сообщения через старую систему PM DLE.

Параметры:

Параметр Тип Описание
$from string Имя отправителя (опционально)

Возвращает: Текущий экземпляр для chaining

Примечание: Этот метод deprecated. Используйте вместо него Message::send().


2. Billing\Api\Message

Расширяет Email для поддержки отправки личных сообщений (ЛС) на сайте.

send(?string $from = ''): self

Отправить личное сообщение получателям.

Параметры:

Параметр Тип Описание
$from string Имя отправителя (опционально). Если пустое, используется admin из конфиг billing

Возвращает: Текущий экземпляр

Действие:

  1. Проверяет отправителя через getUserSender()
  2. Требуется, чтобы $message_body и $message_title были установлены
  3. Запускает транзакцию
  4. Для каждого получателя:
    • Находит/создает диалог через getConversion()
    • Отправляет сообщение через sendMessage()
  5. Коммитит транзакцию

Исключения:

  • "error_search_sender {from}" — Отправитель не найден
  • "body and title is required" — Содержимое сообщения не установлено
  • "conversion is not found" — Диалог не найден

Обработка ошибок:

  • При исключении: делает rollback транзакции
  • setting $lastResult:
    [
      'status' => 'error',
      'message' => $exception_message
    ]

Примеры использования

Отправка Email

use Billing\Api\Email;

$email = new Email(email: 'user@example.com');
$email->setTitle('Добро пожаловать')
      ->setBody('Привет, добро пожаловать в наш сервис!')
      ->send();

$results = $email->getResult();

Использование шаблона

use Billing\Api\Email;

$email = new Email(group_id: 5);
$email->loadTemplate('welcome_notification')
      ->buildTemplate(['name' => 'John', 'date' => '2026-01-01'])
      ->send();

Отправка личного сообщения (ЛС)

use Billing\Api\Message;

$message = new Message(email: 'recipient@example.com');
$message->setTitle('Новое сообщение')
        ->setBody('Это тестовое личное сообщение')
        ->send(from: 'admin');

$result = $message->getResult();

Документация сгенерирована автоматически из кода класса Billing\Api\Message