Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Лента активности пользователей. Продолжение...:)

24.04.2011, 12:40
dimidroll
Егоровых Дмитрий
dimidroll

Зарегистрирован:
2007-10-05
Сообщений: 81

Ребята, подскажите каким образом реализовать ленту активности пользоватлей на сайте?
Например вести таблицу с событиями -
Вася Пупкин отправил сообщение Иванову
Иванов прочитал сообщение от Вася Пупкин
Иванов оставил комментарий на Доске объевлений
Вася Пупкин изменил статус на он-лайн

и тому подобное.
Спасибо за советы! В действиях после добавления, изменения в нужных компонентах написать добавление событий в базу, но как описать событие для конкертного поля, допустим
при нажатии на чекбокс, фиксировал событие "Вася Пупкин прочел сообщение от Иванов"...
Может как то можно использовать модуль логирования в системе? или писать свой?

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

ася - 97336016
25.04.2011, 03:44
Asiat
Аниматика
Asiat

Зарегистрирован:
2005-12-12
Сообщений: 576

В документации разработчика, по-моему, про события. Там попробуйте почитайте. По идее это должно быть самое оно, только я лично еще не юзал.

Разработка сайтов на Netcat с 2006... хм-м ... или 2005 хммм года. В общем, обращайтесь.
25.04.2011, 11:37
dimidroll
Егоровых Дмитрий
dimidroll

Зарегистрирован:
2007-10-05
Сообщений: 81

Читал, но мало чего понял, наглядный бы пример рассмотреть...

ася - 97336016
25.04.2011, 22:53
dimidroll
Егоровых Дмитрий
dimidroll

Зарегистрирован:
2007-10-05
Сообщений: 81

Нашел в инете InstantCMS - разобрал по "косточкам" - посмотрел как там реализована лента активности... суть в следующем, к каждому компоненту прикреплен обработчик события, передающий параметры к функции в класс. В базе существует 2 таблички - собственно сам лог событий и таблица с типами событий с шаблонами вывода сообщения... по аналогии создал 2 компонента в Netcat с похожей структурой -
Тип событий (Таблица Message131)
(NameEvent Имя события
TitleEvent Заголовок события
MessageEvent Сообщение события
isTracked Регистрация события
isVisible Трансляция события
ComponentID),
Лента активности (Таблица Message132)
(
EventID Код события
Date Дата регистрации
ObjectID Код объекта
ObjectName Название объекта
ObjectUrl Ссылка объекта
TargetObjectName Название места объекта
TargetObjectUrl Ссылка на место объекта
TargetObjectID Код места
Description Описание события
isFriendsOnly Просмотр только друзья
isUsersOnly Просмотр только пользователи
)
затем вставил функцию в файл /netcat/modules/default/function.inc.php
модифицированный и урезанный код для добавления записи в таблицу ленты

Код:

/**
* Добавляет действие в ленту активности
* @param str $action_name
* @param array $params (object, object_url, target, target_url, description)
* @return bool
*/
function logEvent($action_name, $params){
global $db,$AUTH_USER_ID;
if (!$AUTH_USER_ID && $action_name != 'add_user'){ return false; }

$action = $db->query("SELECT * FROM Message131 WHERE NameEvent='".$action_name."' AND isTracked=1 ORDER BY Message_ID ASC LIMIT 1");

if (!$action) { return false; }

$params['object'] = mysql_real_escape_string(stripslashes(str_replace(array('\r', '\n'), ' ', $params['object'])));
$params['target'] = mysql_real_escape_string(stripslashes(str_replace(array('\r', '\n'), ' ', $params['target'])));
$params['description'] = mysql_real_escape_string(stripslashes(str_replace(array('\r', '\n'), ' ', $params['description'])));
$params['description'] = preg_replace('/\[hide\](.*?)\[\/hide\]/i', '', $params['description']);
$params['description'] = preg_replace('/\[hide\](.*?)$/i', '', $params['description']);
$params['user_id'] = $current_user['User_ID'];

$sql = "INSERT INTO Message132 (EventID, Date, User_ID, ObjectName, ObjectUrl, ObjectID,
TargetName, TargetUrl, TargetID, Description, isFriendsOnly, isUsersOnly)
VALUES (".$action['Message_ID'].", NOW(), ".$params['user_id'].",
'".$params['object']."', '".$params['object_url']."', '".$params['object_id']."',
'".$params['target']."', '".$params['target_url']."', '".$params['target_id']."',
'".$params['description']."', ".$params['is_friends_only'].", ".$params['is_users_only'].")";

$db->query($sql);

return true;

}



в компоненте в действиях после добавления добавляю

Код:

logEvent('add_catalog', array(
'object' => $f_Name,
'object_url' => 'url товара',
'object_id'=> $message,
'target' => $current_sub['Subdivision_Name'],
'target_url' => 'url каталога',
'target_id' => $current_sub['Subdivision_ID'],
'description' => 'бебебе'
));


Запись в базу не производит почему то...

ася - 97336016
26.04.2011, 03:28
Asiat
Аниматика
Asiat

Зарегистрирован:
2005-12-12
Сообщений: 576

Цитата:
в компоненте в действиях после добавления добавляю

А в каком компоненте? Вы не привели пример, что-где добавляется... А вообще, функцию-то отладить, думаю, не проблема. Тут фокус в другом - таким макаром вы сможете отслеживать только события добавления/изменения/удаления/включения объектов в компонентах. А вот, допустим, добавление нового раздела? Или авторизация пользователя?
Все ж попробуйте с системой событий поразбираться, потом нам отпишете, чего получилось улыбка

Разработка сайтов на Netcat с 2006... хм-м ... или 2005 хммм года. В общем, обращайтесь.
26.04.2011, 21:59
dimidroll
Егоровых Дмитрий
dimidroll

Зарегистрирован:
2007-10-05
Сообщений: 81

Цитата:

А в каком компоненте? Вы не привели пример, что-где добавляется... А вообще, функцию-то отладить, думаю, не проблема.

Привел пример компонента Товара в каталогеулыбка не суть важно в каком, лишь бы писал, то что нужно
Цитата:

Тут фокус в другом - таким макаром вы сможете отслеживать только события добавления/изменения/удаления/включения объектов в компонентах. А вот, допустим, добавление нового раздела? Или авторизация пользователя?

это регистрируется в системе и так, зачем дублировать?улыбка
Лента активности для того и нужна чтоб ввести в курс дел вышестоящего руководства, что происходит на сайте, представлять картину, что происходит вообще в компании, народ чем то занят и т.п.
Цитата:

Все ж попробуйте с системой событий поразбираться, потом нам отпишете, чего получилось улыбка

Пытаюсь, пока тщетно... примеров нетгрустный

ася - 97336016
198 196 2011-04-26 21:59:50 11223
Описание проекта