Начиная с версии 2.8.1 в системе появилась возможность интеграции со сторонними анти-спам-сервисами, облегчающими задачу фильтрации нежелательных ответов. По умолчанию UMI.CMS интегрирована с Akismet — популярным анти-спам сервисом для блогов.

Чтобы реализовать интеграцию с другими анти-спам-сервисами, необходимо создать класс-обертку, в котором должны быть переопределены методы абстрактного класса antiSpamService (classes/system/utils/antispam/antiSpamService.php). В имени класса-наследника должен быть суффикс antiSpamService, класс должен лежать в папке classes/system/utils/antispam/services. При этом имя файла должно совпадать с именем класса и именем сервиса, которое одновременно является идентификатором сервиса в config.ini.

Методы antiSpamService, которые необходимо реализовать, условно можно разделить на 2 группы:

  • методы установки данных;

  • методы действий (использование уже установленных данных).

Методы действий следует вызывать после методов установки данных.

Взаимодействие системы с оберткой антиспам-сервиса происходит примерно так:


$service = antiSpamService::get('yourServiceName');
$service->setNick('foobar');
$service->setEmail('foobar@example.com');
$service->setContent('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
if($service->isSpam()) {
...
}

Методы установки данных:

  • setNick($name); — устанавливает nickname отправившего комментарий (топик, сообщение и т.д.), который проверяется;

  • setEmail($email) — устанавливает e-mail отправившего;

  • setContent($content) — устанавливает содержимое отправленного сообщения;

  • setLink($link) — устанавливает ссылку на страницу с сообщением;

  • setReferrer($referer) — устанавливает HTTP-заголовок Referer для запроса на сервер (обычно не требуется указывать).

Методы действий (производят запрос на сервер с указанными ниже целями):

  • isSpam() — проверяет, является ли сообщение, параметры которого установлены, спамом (возвращает true или false);

  • reportSpam() — сообщает сервису, что сообщение, параметры которого установлены, является спамом;

  • reportHam() — сообщает сервису, что сообщение, параметры которого установлены, не является спамом.