опять новые сообщения не показывает
открываю форум, 5 тем с новыми сообщениями, кликаю в одной теме на новые сообщения, возвращаюсь в форум, а новых значков в других темах нет уже. Была ведь уже такая проблема и её решили, а теперь снова. Со вчерашнего вечера вроде.
У меня не совсем так. Если нажимать на кнопку «назад» браузера, новые сообщения не исчезают. Исчезают только, если нажать на форум еще раз. Это лучше, я считаю, чем миллион значков NEW, которые не убирались вообще, но и опять не то, как было раньше. Раньше значки NEW исчезали после перелогина.
Ну и со второй страницы NEW уже не показываются...
Да они похоже никак с программной логикой не разберутся. Ладно, даю один из возможных вариантов бесплатно:
у вас имеются три случая применения меток просмотра:
- показ количества новых сообщений на доске/форуме при открытии доски/форума
- показ новых сообщений в теме
- метка прыжка при переходе на первое непрочитанное
Это можно реализовать следующим образом: заводим две таблицы с тремя полями
create table topic_read ( user_id bigint unsigned not null, topic_id bigint unsigned not null, read_until datetime not null, constraint foreign key (user_id) references user (id), constraint foreign key (topic_id) references topic (id), primary key(topic_id, user_id) ); create table forum_read ( user_id bigint unsigned not null, forum_id bigint unsigned not null, read_until datetime not null, constraint foreign key (user_id) references user (id), constraint foreign key (forum_id) references forum (id), primary key(forum_id, user_id) );
Вторая таблица служит для сброса непрочитанных сообщений на всём форуме. Сделайте кнопку на видном месте - "отметить все темы как прочитанные". При нажатии этой кнопки записывайте актуальное время во вторую таблицу. Первая таблица обновляется при открытии страницы темы, при этом в таблицу пишется дата последнего сообщения на открытой странице. (естественно только если она больше уже записанной!)
Теперь рассмотрим use cases:
- показ количества новых сообщений на доске/форуме при открытии доски/форума - просто получаем count сообщений делая джойн на форум/ доску, при этом учитывая только сообщения с датой больше как topic_read.read_until, так и больше forum_read.read_until.
- показ новых сообщений в теме - аналогично
- метка прыжка при переходе на первое непрочитанное - в принципе необязательно вычислять метку прыжка заранее, просто сделайте новый маппинг или параметр. Уже в этом новом мэппинге вычислите страницу прыжка и сделайте редирект.
Ещё один плюс - можно на всех страницах темы сделать копку перехода к непрочитанным (а можно также сделать переход к актуально читаемой странице).
Если что-то непонятно - спрашивайте. Я сегодня добрый.
мутные мутята мутят мутную муть ох, домутятся