Активность пользователей сайта



Одним из самых развиваемых направлений сайтостроения в последние годы являются социальные сети, главная задача такого сайта дать большему количеству людей площадку для общения. Количество пользователей сайта возрастает и уследить изменения которые они делают ставится все сложнее. Для удобного наблюдения за активностью сайта или пользователя существуют специальные модули, которые мы сейчас и рассмотрим.

Цель рассматриваемых модулей отследить действия пользователя и вывести в удобном виде. Чем больше действий модуль может фиксировать тем лучше. Другой важный показатель — интеграция с другими модулями и наличие развитого API.

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

Activity

http://drupal.org/project/activity

Актуальная ветка модуля 6.x-2.x (6.x-1.x более не поддерживается и нет возможности апгрейда к ветке 2.х). Зависит от модулей Token и Trigger. В комплекте с модулем есть под модуль Activity comments с помощью которого любое зафиксированное действие можно комментировать.

Готовые интеграции с другими модулями:

  • Comment, Node, User — реализовано в самом модуле;
  • Flag, Organic groups — реализовано в этих модулях.

Модуль позволяет фиксировать такие действия пользователей:

Comment Triggers:

  • insert: После сохранения нового комментария
  • update: После обновления комментария

Nodeapi Triggers:

  • delete: После удаления материала
  • insert: После создания материала
  • update: После обновления материала
  • view: При просмотре материала зарегистрированным пользователем

User Triggers:

  • insert: После регистрации пользователя
  • update: После обновления учетной записи пользователя
  • login: После входа в учетную запись
  • logout: После выходя пользователя из учетной записи
  • view: При просмотре профиля пользователя

Flag Triggers:

  • flag: Когда содержимое отмечается
  • unflag: При удаление метки содержимого

Og Triggers:

  • user insert: Присоединение пользователя к группе
  • user update: Пользователь изменил подписки на группы
  • user delete: Пользователь удалил подписки на группы
  • user approve: Пользователя приняли в группу
  • user deny: Пользователю отказано в участие группы
  • user request: Пользователь запросил участие в группе
  • admin new: Пользователь назначен администратором группы

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

Также в модулей есть интернационализация и поэтому все действия легко реализовать на необходимом языке сайта.

Данные хранятся в 4х таблицах:

  • activity — все события активности
  • activity_targets — связь между сообщением, языком и событием.
  • activity_messages — сообщения
  • activity_access — связь между событиями и модулями дающими права на событие.

Heartbeat

http://drupal.org/project/heartbeat

Достаточно мощный модуль в состав которого включено еще 10 под модулей: Flag heartbeat, friendlist activity, Heartbeat comments, Heartbeat displays, Heartbeat example module, Heartbeat rules, Heartbeat test helper, Heartbeat views, organic group activity, Shouts. Здесь полный набор от интеграции с другими модулям до тестов и модуля примера.

Интеграция с модулями: comment, node, user, flag, OG, system, taxonomy, flag_friend, friendlist, User relationships, выводит результаты через Views, связан с модулем Rule.

Этот модуль как выглядит мощно, так же мощно и реализован, почти для всего есть фиксация событий. Например, можно через админ страницы реализовать проверку на сколько процентов заполнен профиль пользователя и соответственно выводить сообщение: профиль создан; профиль заполнен на 30%, профиль заполнен полностью или сделать проверку заполнения обязательных полей и дополнительных.

Все данные записываются в таблицы:

  • heartbeat_activity — таблица с сообщениями о активности, каждое сообщение; сохраняется сразу на всех включенных языках сайта;
  • heartbeat_tags — теги для сообщений модуля;
  • heartbeat_mt — связь тегов и сообщений;
  • heartbeat_translations — связь таблиц переводов и активности;
  • heartbeat_messages — таблица сообщений для событий.

Есть поддержка многоязычности и сообщения записываются сразу на нескольких языках. К сожалению сам модуль не переведен на русский и украинский языки, примерно 10% перевода в наличии, но это легко исправимая ситуация. Несмотря на интеграцию с большим количеством модулей, есть мощное и гибкое API c необходимой документацией для разработчика и модуль уже поддерживает Drupal 7.х.

Message

http://drupal.org/project/message

Несмотря на то что разработчики на странице модуля написали что модуль аналогичен activity и привели список отличий, на самом деле отличий намного больше, часть из которых необходимо записать в минус. Проблемы начали еще во время настройки появилась ошибка отсутствие функции i18nstrings_update() в модуле i18, как выяснилось позже эта функция добавлена в последних версиях i18, поэтому для начала необходимо обновиться.

В продолжение казусов у нас есть документация — видео, где показано как настроить модуль через подмодуль UI, но в новых версиях этого подмодуля уже нет, а сам модуль это API и из подмодулей есть в наличии Message example и Message follow.

По статистике drupal.org модулем пользуется около 20 человек.

Из интеграции есть связь с flag. Также модуль работает вместе с i18, Views, ctools, rule.

Сообщения хранятся в таблицах:

  • message — шаблоны сообщений;
  • message_instance — сообщения;
  • message_realm — сфера действия сообщений (пользователь, нода, органик групп).

Для разработчика есть пример, модуля с использованием API, документации практически нет.

Итог

Из представленных модулей только первые 2 можно принимать к рассмотрению, message сыроват и ему не хватает поддержи разработчиков и сообщества (без наличия сопровождающей документации поддержка появится не скоро).

API первых двух модулей схож и с его помощью можно реализовать фиксацию любых действий пользователей или сайта.

По статистике использования модуль activity успел покорить 2000 человек против 1000 у heartbeat, хотя это скорее из-за рождения первого в ветке 5.x Друпала.

Если сравнивать удобство управления из админки, то модуль heartbeat на порядок сделан удобнее и функциональние, по остальным параметрам модули идут рядом друг с другом.