Начиная с версии 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() — сообщает сервису, что сообщение, параметры которого установлены, не является спамом.