LINUX.ORG.RU

Как сделать «новые сообщения с момента последнего посещения»?

 


0

2

Ещё в эпоху веб 1.0 на популярных тогда форумах phpbb, vbulletin и т.д. была эта фича, на opennet например присутствует и сейчас, глядя на комментарии к новостям: открываю новость, вижу пометку [NEW] у комментария, обновляю страницу, но пометка никуда не делась, она пропадает лишь спустя некоторое время...

Хочу знать логику такой реализации, ибо, не догоняю. :(

Ты зарегистрировался на сайте, все сообщения видишь впервые и все они отмечены как прочитанные. Затем кто-то создал новое сообщение, и оно отмечено как новое, ты его читаешь и оно снова становится прочитанным... Насколько я понимаю, здесь никто не ведёт какой-то базы данных на каждого анонимуса, на каждое сообщение, дабы хранить состояние сообщения, новое оно или прочитанное, всё это работает только за счёт расчёта времени (<?=time()?>)...

1) Реквестирую описание логики, как это устроено и работает.

2) Какой способ уведомления о новых непрочитанных сообщениях вы считаете самым удобным?

★★★★★

Последнее исправление: Spoofing (всего исправлений: 1)

Какой способ уведомления о новых непрочитанных сообщениях вы считаете самым удобным?

Я у себя тупо веду таблицу:
UNIQUE(user_id, topic_id), visit_time, last_posted_time_on_page

Т.е. для каждого юзера запоминаю последнее просмотренное сообщение на последней просмотренной странице. Храню данные две недели. Соответственно, в течении двух недель получается совершенно точный учёт посещения топика и на какой странице остановился юзер в случае многостраничных топиков. Если юзер в теме не появлялся более двух недель, то зависит от даты последнего сообщения в теме. Если оно старше двух недель, тема считается посещённой. Если меньше двух недель — то новыми считаются все сообщения старше двух недель.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

А брать время последнего посещения из печеньки у пользователя - чем хуже? Ну, и, соответственно, подсвечивать темы, где есть посты свежее полученного времени?

dhameoelin ★★★★★
()
Ответ на: комментарий от dhameoelin

А брать время последнего посещения из печеньки у пользователя - чем хуже?

А ты со скольки устройств в интернеты ходишь?

Stil ★★★★★
()
Ответ на: комментарий от Stil

Где-то с десятка в общей сложности. Но список сайтов разный.

dhameoelin ★★★★★
()
Ответ на: комментарий от Stil

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

OldWiseCat ★★
()

можно задействовать locaStorage

anonymous
()
Ответ на: комментарий от dhameoelin

Ну, и, соответственно, подсвечивать темы, где есть посты свежее полученного времени?

Очень тупое поведение форумов. Вынуждает читать всё сразу, или совсем забивать. А то если что-то не дочитаешь, то при следующей сессии место прочтения потеряешь. Можно, конечно, хранить в local storage метки по всем темам (в куки уже не влезет), но:

А брать время последнего посещения из печеньки у пользователя - чем хуже?

Тогда не получится ходить с разных устройств на один форум.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Как в nntp не читать дважды одно и то же при работе с разных девайсов?

изначально об этом речи не шло, но да, наверно, это проблема, хотя если бы nntp был актуален до теперешних многогаджетских времен, что-нибудь придумали бы

ну а так, теоретически, наверно можно какой-нибудь ~/.news_reader держать в облаке и «монтировать» на любом устройстве

anonymous
()
Ответ на: комментарий от KRoN73

Эмм...

Очень тупое поведение форумов. Вынуждает читать всё сразу, или совсем забивать. А то если что-то не дочитаешь, то при следующей сессии место прочтения потеряешь.

То есть, ты хранишь для каждого пользователя состояние прочтения каждой темы на форуме?

Можно, конечно, хранить в local storage метки по всем темам (в куки уже не влезет), но
Тогда не получится ходить с разных устройств на один форум.

А можно комбинировать подходы, как предложил старый мудрый кот ( OldWiseCat) выше:

dhameoelin ★★★★★
()

Где-то хранишь время (версию в виде unixtime) последнего просмотра темы конкретным юзером.

lochness
()
Ответ на: Эмм... от dhameoelin

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

Насколько я понял, каждой прочитанной этим пользователем темы. Т.е. зашёл в тему - отметилась прочитанной, не зашёл - не отметилась. Так что таки не для каждой.

RussCox
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.