Основной класс для работы с подписками и рассылками называется nc_subscriber.
Для создания или получения объекта этого класса необходимо вызвать статический метод класса get_object():
$nc_subscriber = nc_subscriber::get_object();
Имя объекта может быть любым. Далее будем считать, что объект пределен и имеет имя $nc_subscriber.
Статический метод. Возвращает объект класса, а при первом обращении инициализирует объект.
Пример использования:
$nc_subscriber = nc_subscriber::get_object(); // теперь можно использовать $nc_subscriber
Метод позволяет получить информацию о рассылке по ее номеру. Если параметр $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, итд)
Метод позволяет получить информацию о рассылке, привязанной к компоненту в разделе с номером $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) { }
Метод создает новую рассылку. В качестве параметра нужно передать ассоциированный массив, ключи которого — параметры рассылки (их список будет приведён ниже).
Ключи, которые могут использоваться:
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, а объект добавляется в рассылке при добавлении, причем он должен быть выключенным.
Метод позволяет обновить параметры рассылки. Сами параметры задаются в массиве по аналогии с методом 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') );
Примечание! Скопировалась только сама рассылка, но не подписчики.
Функция добавляет объекты с номером $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 будет выбирать, отправлять ли извещение о новом объекте или нет. Естественно, в этом примере предполагается, что рассылка для раздела существует.
Метод подписывает пользователя с номером $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');
Метод позволяет пользователю подписаться на компонент в разделе с номером $cc.
Функция аналогична предыдущему за тем исключением, что вместо номера рассылки передается номер компонента в разделе.
Пример использования:
подписать пользователя с номером 3 на компонент в разделе с номером 105:
$nc_subscriber->subscription_add_by_cc ( 105, 3,0, 'on');
Метод включает рассылки. Номер рассылки или массив с номерами рассылок передаются через параметр $mailer_ids. Функция возвращает количество включённых рассылок.
Пример использования:
включить рассылку с номером 3:
$nc_subscriber->active(3);
Метод выключает рассылки. Номер рассылки или массив с номерами рассылок передаются через параметр $mailer_ids. Функция возвращает количество выключенных рассылок.
Пример использования:
выключить рассылкы с номерами 5 и 7:
$nc_subscriber->unactive( array( 5,7) );
Метод удаляет рассылки. Номер рассылки или массив с номерами рассылок передается через параметр $mailer_ids. При удалении рассылки так же удаляются все подписки на эту рассылку, статистика и прочее связанные элементы. Функция возвращает количество удалённых рассылок.
Пример использования:
удалить рассылку с номером 3:
$nc_subscriber->delete(3);
Комментарии 1