Модуль Channels — это унифицированный агрегатор потоков сообщений для НПЖ.
Он предназначен для автоматической синдикации в пространство НПЖ информации из других систем посредством создания «трансляционных аккаунтов», в которые направляются «каналы».
В настоящее время модуль позволяет создавать «трансляционные аккаунты» для следующих форматов:
Архитектура модуля позволяет реализовать поддержку других форматов. В частности, планируется реализация канала Mailbox для автоматической агрегации почты из указанного почтового ящика.
1.1. Условия использования и лицензия
Модуль Channels может быть свободно использован на любом узле НПЖ.
Код модуля и его фрагменты могут быть использованы в других проектах с указанием авторства и копирайта согласно Лицензии, приложенной к дистрибутиву.
Пожалуйста, проконсультируйтесь с разработчиками (например, в комментариях ниже) по вопросам доработки модуля — мы будем рады, если вы возьмётесь за написание какого-либо «канала».
1.2. Авторы
Модуль Channels разработан командой npjdev@npj, в том числе:
Кусо «Сару» Мендокуси: разработал канал File и основную архитектуру модуля,
Роман Иванов разработал канал Rss и парсер MagpiePlus на основе Magpie RSS.
2. Где скачать?
Дистрибутив доступен для скачивания:
Download module Channels v.1.0
ZIP, <38 Кб
Если вы — продвинутый разработчик, вы можете воспользоваться и репозиторием кода:
Только помните, что там может находиться и «не вполне рабочий код».
3. Требования и инструкция по установке
Для того, чтобы установить на вашем узле НПЖ модуль Channels вам необходимо выполнить следующие условия/действия:
Обновить свой узел до версии R1.7 или выше (необходима поддержка архитектуры «модуль-как-фантомный-узел»).
Скачать дистрибутив модуля.
Развернуть дистрибутив в ту же папку, что и дистрибутив НПЖ (рядом с папками npj/ и core/ должна появиться папка channels/.
Отредактировать конфигурацию модуля, установив подходящие значения периодов и интенсивности агрегации, доступа и прочее (см. раздел Документация )
Открыть с помощью браузера адрес http://you.node.ru/channels/startup (на вашем узле) для инициализации модуля (построения таблиц в БД, настройки хт-крона)
Вновь отредактировать конфигурацию модуля, установив block_startup в единицу (чтобы запретить случайную повторную инициализацию).
4. Инструкция по обновлению версии
В настоящее время нет способа обновления между старшими версиями (потому что их пока нет).
Переустановка модуля по инструкции по установке приводит к сбросу всех каналов и пересозданию базы данных.
По мере появления старших версий (или версий, требующих изменений БД), будет подготовлен скрипт обновления.
5. Документация
Здесь изложена краткая документация по модулю.
Надеюсь, со временем она станет более полной =)
5.1. Что такое «канал» или «трансляционный аккаунт»
В настоящий момент «канал» и «трансляционный аккаунт» нераздельны.
Канал — это «поток сообщений» определённого формата с определёнными параметрами, соответствующий какому-то определённому источнику агрегатора. Например, RSS-канал — это поток сообщений, которые агрегатор получает из rss, — например, из http://npj.ru/fif/rss.
Трансляционный аккаунт — это аккаунт (со специальным адресом), который связан с соответствующим каналом и в журнал которого направляются все сообщения из канала. Адреса трансляционных аккаунтов имеют такой формат:
<account-name>@<channel-type>/<node>, где
<account-name> — НПЖ-имя аккаунта, например npru-fif,
<channel-type> — тип канала, например rss или file или mailbox
<node> — ваш узел, на котором зарегистрирован этот канал.
Примеры подобных адресов:
webmascon@rss/jetstyle
html-coder@rss/npj
Таким образом, НПЖ-адрес трансляционного аккаунта получился уникальным в рамках всей НПЖ-сети.
В целом трансляционные аккаунты не отличаются от аккаунтов пользователей — их точно так же можно добавлять в ленту корреспондентов, подписываться на новые сообщения, комментировать сообщения.
Владелец трансляционного аккаунта (т.е. тот, кто его создал) может рубрицировать входящие сообщения, настраивать правила автоматизации (обеспечивая публикацию в сообщества или настройку прав доступа). Редактировать сообщения он не может.
5.2. Создание новых каналов
Для того, чтобы создать новый канал RSS-потока, необходимо перейти по адресу:
channels@npj:rss-feed — для создания RSS-канала.
Кроме того, для других типов аккаунтов адреса выглядят примерно так:
channels@npj:file — для создания канала для сбора файлов;
channels@npj:mailbox — для создания канала для сбора почты (пока не реализован).
Если вы пробуете это на своём узле, то вместо @npj используйте имя вашего узла.
При создании канала у вас попросят НПЖ-адрес трансляционного аккаунта и параметры канала, которые вы сможете без труда указать.
Там же вы можете задать шаблон, по которому будут формироваться сообщения.
5.3. Администрирование каналов
Пользователь может в любой момент поменять настройки у любого канала, который он сам создал.
Кроме того, он может настраивать профиль — включать/выключать типографику, менять оформление журнала, а также редактировать корневой документ.
Владелец трансляционного аккаунта также может рубрицировать сообщения из канала в рамках журнала этого аккаунта, а также опубликовать их в публичные сообщества.
Владелец может настроить правила «автоматизации», чтобы новые сообщения автоматически меняли уровень доступа или публиковались в сообщества. Подробнее об автоматизации тут Об Автоматическом назначении свойств записи — kuso@npj:72934.
5.4. Настройка конфигурации модуля
Ниже приведены те настройки конфигурации, которые имеет смысл менять.
Остальные — опущены, т.е. нижеследующий фрагмент не является полноценной конфигурацией модуля.
<? $this->modules["channels"] = array( // ... skipped ... "channels_per_aggregate" => 100, "aggregate_timeout" => 25, // in seconds // start-up only: "aggregate_cron" => "1 * * * *", // each hour, in xx:01 "aggregate_cron_error" => "22 4 * * *", // each day, in 04:22 "block_startup" => 0, // set this to "1" after startup // security_block "security_acl" => "*", // independent security models "security_account_classes" => array( "team" => 1, ), ); $this->modules["channels-integration"]["as_foreign"] = array( "rss", "mailbox", "file" ); ?>
Сейчас чуть подробнее о каждой:
channels_per_aggregate — сколько каналов пробовать получить за один запрос на агрегацию.
aggregate_timeout — сколько секунд производить агрегацию каналов. Если это время истекло, то следующий канал на агрегацию не поступает
aggregate_cron (и aggregate_cron_error) — две строки в формате cron-tab, определяющие частоту запроса на агрегацию (и проверки сбоящих каналов соответственно). Умолчательные установки — раз в час и раз в сутки соответственно. Изменения этих величин после инициализации не приводит к изменению действительной частоты запросов. Эту настройку можно изменить «на лету» только в таблицах БД.
block_startup — запрещает вызов скрипта «инициализации» (установки) модуля. Скрипт установки уничтожает все каналы и пересоздаёт таблицы в БД, поэтому после успешной установки следует заброкировать возможность запуска этого скрипта.
security_acl — Список доступа, ограничивающий пользователям возможность создания каналов. Создавать могут только те, кто проходят по этому списку доступа.
security_account_classes — альтернативный способ дать доступ к созданию каналов на базе «классов аккаунтов». Доступ даётся вне зависимости от ACL, если аккаунт пользователя соответствующего класса.
as_foreign — настройка вспомогательного модуля, определяющая, какие из типов каналов будут ассоциироваться с модулем через НПЖ-адресацию. Если вы разрабатываете свой канал — не забудьте добавить его сюда.