Пользовательский фильтр потока

Доступно только в профессиональной и бизнес редакции

Скрипты пользовательских фильтров хранятся в директории application/filters.

Создание скрипта

Создадим новый файл application/filters/example.php. Пример кода:

<?php
namespace Filters;
 
use Core\Filter\AbstractFilter;
use Core\Locale\LocaleService;
use Component\StreamFilters\Model\StreamFilter;
use Traffic\RawClick;
 
class example extends AbstractFilter
{
    public function getModes()
    {
        return [
            StreamFilter::ACCEPT => LocaleService::t('filters.binary_options.' . StreamFilter::ACCEPT),
            StreamFilter::REJECT => LocaleService::t('filters.binary_options.' . StreamFilter::REJECT),
        ];
    }
    /**
     * Filter settings template
     */
    public function getTemplate()
    {
        return '<input class="form-control" ng-model="filter.payload" />';
    }
 
    /**
     * Check if $rawClick passes the filter (true - passed, false - failed)
     */
    public function isPass(StreamFilter $filter, RawClick $rawClick)
    {
        $value = $filter->getPayload();
        return ($filter->getMode() == StreamFilter::ACCEPT && $rawClick->getSubIdN(1) == $value)
            || ($filter->getMode() == StreamFilter::REJECT && $rawClick->getSubId(1) == $value);
    }
}

Вы должны переопределить следующие методы:

Метод класса Описание
getModes Какие режимы фильтра доступны
getTemplate Шаблон настроек фильтра. Подробнее о шаблонизаторе angular.js
isPass Здесь происходит проверка прохождения фильтра. true — фильтр пропускает клик, false – фильтр не пропускает клик в поток

Описание объекта Stream Filter $filter

Метод Описание
$filter->getPayload() Содержимое фильтра
$filter->getMode() Режим фильтра