Онлайн-руководство разработчика NetCat
Модуль «Поиск по сайту» 12.2.1Начало работы с модулем 12.2.2Язык запросов 12.2.3Способы хранения индекса 12.2.4Интерфейс модуля в панели управления сайтом 12.2.5Области индексирования 12.2.6Области HTML-страниц 12.2.7Области поиска на сайте 12.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 12.2.9Правила индексирования 12.2.10Постановка задачи переиндексирования в очередь 12.2.11Интеграция модуля в макеты дизайна сайта 12.2.12Простая форма поиска 12.2.13Расширенная форма поиска 12.2.14Вывод результатов поиска 12.2.15Стилизация списка подсказок 12.2.16Расширенные настройки 12.2.17Разработка расширений модуля 12.2.18Обзор архитектуры модуля 12.2.19Обработчики документов различных типов 12.2.20Текстовые фильтры 12.2.21Анализаторы текста 12.2.22Корректировщики запросов 12.2.23Подключение других поисковых систем 12.2.24Решение проблем с поиском 12.2.25Решение проблем с индексированием 12.2.26Справочник API

Классы модуля

Основной класс для работы с подписками и рассылками называется nc_subscriber.

Для создания или получения объекта этого класса необходимо вызвать статический метод класса get_object():

$nc_subscriber = nc_subscriber::get_object();

Имя объекта может быть любым. Далее будем считать, что объект пределен и имеет имя $nc_subscriber.

get_object()

Статический метод. Возвращает объект класса, а при первом обращении инициализирует объект.

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

$nc_subscriber = nc_subscriber::get_object();
// теперь можно использовать $nc_subscriber


mixed get ( int $mailer_id, [string $item])

Метод позволяет получить информацию о рассылке по ее номеру. Если параметр $item не задан, то функция возвращает массив с параметрами, иначе — только один параметр.

Ключи возвращаемого массива могут быть такие: Name, Type, Active, Access, InStat, Sub_Class_ID, ActionType, Period, SubscribeCond, SendCond, SubscribeAction, Header, Record, Footer, Subject, HTML.

Подробнее о параметрах написано чуть ниже.

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

1.Вывести имя рассылки с номером 7:

echo $nc_subscriber->get(7, 'Name');

2.Вывести тип доступа к рассылке с номером 7:

switch ( $nc_subscriber->get(7, 'Access') ) {
    case 1:
        echo «Рассылка доступна всем»;
        break;
    case 2:
        echo «Рассылка доступна только зарегистрированным»;
        break;
    case 3:
        echo «Рассылка доступна только уполномоченным»;
        break;
}

3.Получить всю информацию о рассылке с номером 7:

$mailer = $nc_subscriber->get(7);

после выполнения этого кода массив $mailer будет иметь вид:

array ( 'Name' => 'Имя рассылки', 'Type' => 1, 'Active' => 1, 'Access' => 2, итд)


mixed get_mailer_by_cc ( int $cc, [string $item])

Метод позволяет получить информацию о рассылке, привязанной к компоненту в разделе с номером $cc. Если рассылки для этого компонента не существует, то будет создано исключение ExceptionMailer. Метод аналогичен предыдущему за тем исключением, что вместо номера рассылки нужно передавать номер компонента в разделе.

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

для текущего компонента в разделе вывести (если существует) ссылку для подписки, указав ее имя:

try {
    nc_subscriber = nc_subscriber::get_object();
    $mailer_name = $nc_subscriber->get_mailer_by_cc($cc, 'Name');
    echo "<a href='".$subscriberLink."'>".$mailer_name."</a>";
}
catch ( Exception $e) {
}


int add ( array $params )

Метод создает новую рассылку. В качестве параметра нужно передать ассоциированный массив, ключи которого — параметры рассылки (их список будет приведён ниже).

Ключи, которые могут использоваться:

  • Name — имя рассылки;

  • Type — тип рассылки. Возможные значения:

    • 1 — подписка на раздел (по умолчанию);

    • 2 — регулярная рассылка;

    • 3 — сервисная рассылками.

  • Active — активность рассылки (включена или нет). Возможные значения:

    • 0 — рассылка выключена;

    • 1 — рассылка включена (по умолчанию).

    • 1 — доступно всем (по умолчанию);

    • 2 — доступно зарегистрированным;

    • 3 — доступно уполномоченным.

    • 0 — нет;

    • 1 — да.

  • Access — тип доступа. Возможные значения:

  • InStat — ввести ли подробную статистику рассылки. Возможные значения:

  • Sub_Class_ID — номер компонента в разделе, из которого берется информация для рассылки (для «подписок на раздел»);

  • ActionType — числовые обозначения действий, после которых объект попадет в рассылку.

  • Period — номер периода (для регулярной и сервисной рассылки);

  • SubscribeCond — условие подписки;

  • SendCond — условие рассылки;

  • SubscribeAction - действие после подписки;

  • Header — верхняя часть письма, отправляемой этой рассылкой;

  • Record — содержательная часть письма;

    • 0 — обычное письмо;

    • 1 — HTML-письмо.

  • Footer — нижняя часть письма;

  • Subject — тема письма;

  • HTML — тип письма. Возможные значения:

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

$params = array ('Name' => 'Новая подписка', 'Access' => 2, 'Sub_Class_ID' => 104, 'ActionType' => 1 );
$nc_subscriber->add($params);

Данный код создает новую рассылку типа «подписка на раздел» с именем «Новая подписка». Рассылка доступна только зарегистрированным пользователям, информация берется из компонента в разделе с номером 104, а объект добавляется в рассылке при добавлении, причем он должен быть выключенным.


bool update (int $mailer_id, [array $params] )

Метод позволяет обновить параметры рассылки. Сами параметры задаются в массиве по аналогии с методом add.

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

Поменять тип доступа рассылки с номером 7 на вариант «только уполномоченным»:

$nc_subscriber->update(7, array('Access' => 3) );

Сделать копию рассылки с номером 7, у новой рассылки поменять имя:

// получим все парметры рассылки 7 в виде массива
$mailer_old = $nc_subscriber->get(7);

// создадим новую рассылку, метод add вернет ее номер
$mailer_new_id = $nc_subscriber->add($mailer_old);

// поменяем название рассылки
$nc_subscriber->update( $mailer_new_id, array('Name' => 'Копия рассылки 7') );

Примечание! Скопировалась только сама рассылка, но не подписчики.


new_message ( int $cc, int $message, [int $rel_cc, [int $rel_message]])

Функция добавляет объекты с номером $message из компонента в разделе с номером $cc в очередь рассылки. Если указаны параметры $rel_cc и $rel_message, то пользователь получит в рассылке этот объект только в том случае, если он подписан на объект с номером $rel_message из компонента в разделе с номером $rel_cc, в противном случае объект получат все пользователи, подписанные на компонент в разделе $cc (а точнее, подписанные на рассылку, связанную с компонентом в разделе с номером $cc).

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

Допустим, необходимо при добавлении новости выбрать, попадет ли новая информация в рассылку или нет. Для этого в соответствующем компоненте «Новости» создаем новое булевое (истина/ложь) поле с именем notify, оно должно быть обязательным для заполнения.

В действии после добавления прописываем следующий код:

if ( $f_notify ) {
    $nc_subscriber = nc_subscriber::get_object();
    $nc_subscriber->new_message($cc, $message);
    }

Теперь при добавлении новости, пользователь через элемент checkbox будет выбирать, отправлять ли извещение о новом объекте или нет. Естественно, в этом примере предполагается, что рассылка для раздела существует.
 

subscription_add ( int $mailer_id, [int $user_id, [int $period, [string $status, [array $fields, [int $message]]]]] )

Метод подписывает пользователя с номером $user_id на рассылку $mailer_id. Если $user_id не указан, то система берет текущего авторизированного пользователя, а если и его нет — то создает нового псевдопользователя, причем его параметры нужно передать в массиве $fields (ключи массива — соответствующие поля из таблицы Пользователи).

Через $period можно указать период получения рассылок (для подписок на раздел). Если этот параметр не задан, то будет выбрано значение по умолчанию.

С помощью параметра $status можно задать статус подписки.

Возможные значения:

  • 'on' — подписка активна;

  • 'off' — подписка неактивна;

  • 'wait' — требуется подтверждение пользователя (пользователь должен перейти по определённой ссылке).

В последнем случае пользователю отправится письмо с ссылкой для подтверждения подписки.

Если $user_id не задан или равен 0, а текущий пользователь неавторизирован и есть модуль «Интерфейс пользователя», то будет создан новый псевдопользователь, его параметры нужно передать через массив $fields.

$fields может выглядеть так:

array ( 'Email' => 'mail@example.com', 'Name' => 'Nickname')

В этом случае пользователь будет иметь электронную почту mail@example.com.

Если нужно подписать пользователя на объект компонента в разделе, а не на весь компонент, то номер этого объекта нужно передать через параметр $message.

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

подписать текущего пользователя на рассылку 7 и сделать её активной:

$nc_subscriber->subscription_add( 7, 0,0, 'on');


subscription_add_by_cc ( int $cc, [int $user_id, [int $period, [string $status, [array $fields, [int $message]]]]] )

Метод позволяет пользователю подписаться на компонент в разделе с номером $cc.

Функция аналогична предыдущему за тем исключением, что вместо номера рассылки передается номер компонента в разделе.

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

подписать пользователя с номером 3 на компонент в разделе с номером 105:

$nc_subscriber->subscription_add_by_cc ( 105, 3,0, 'on');


int activate ( mixed $mailer_ids )

Метод включает рассылки. Номер рассылки или массив с номерами рассылок передаются через параметр $mailer_ids. Функция возвращает количество включённых рассылок.

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

включить рассылку с номером 3:

$nc_subscriber->active(3);


int unactivate ( mixed $mailer_ids )

Метод выключает рассылки. Номер рассылки или массив с номерами рассылок передаются через параметр $mailer_ids. Функция возвращает количество выключенных рассылок.

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

выключить рассылкы с номерами 5 и 7:

$nc_subscriber->unactive( array( 5,7) );


int delete ( mixed $mailer_ids )

Метод удаляет рассылки. Номер рассылки или массив с номерами рассылок передается через параметр $mailer_ids. При удалении рассылки так же удаляются все подписки на эту рассылку, статистика и прочее связанные элементы. Функция возвращает количество удалённых рассылок.

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

удалить рассылку с номером 3:

$nc_subscriber->delete(3);

Комментарии 1

Добавьте, пожалуйста, в описание subscription_add информацию о возможности указания отрицательного значения user_id
   
Описание проекта