Я добавил новый скрипт, который подсчитывает вообще все новые комментарии во всех постах. Не буду углубляться в технические детали, но специфика такова, что посты будут оставаться непрочитанными сколь угодно долго до тех пор, пока вы в них не заглянете. То же и с комментариями.
Через это все посты, написанные до сего момента будут для вас отмечены как новые. Надеюсь, траффик позволит вам заглянуть в каждый и обнулить таким образом счётчик, как это пришлось только что делать мне :)
Страница "Новые ответы" будет обновлена немного позже, с добавлением выборки по времени (последние 3 дня, неделя, месяц, год, за всё время).
Тебе виднее :) Хотя я немного не понимаю - если есть, допустим, таблица, где фиксируется факт чтения комментов, в чем сложность эту таблицу "подправлять" вручную.
PS: Сразу скажу, что в PHP я не рублю, т.к. занимаюсь клиент/серверными системами, с "толстым" клиентом и сервером БД без сервера приложений.
Представьте себе 2000 постов, информацию о просмотре которых надо добавить в базу одномоментно. Это очень трудоёмкая задача. Понятно, что сейчас постов гораздо меньше, но лучше не делать функцию вовсе, чем сделать и убрать потом, вызывая недовольство участников, которые привыкли ею пользоваться.
ОК, хорошо. Хотя с моей т. зрения это одно, не очень сложное, обновление данных в базе, выполняемое одним оператором UPDATE :) Ну или как-то так.... там же наверное MySQL юзается?
Т.е. (сугубо Imho) - наличие или отсутствие функциональности, позволяющей подсчитывать непрочитанные посты в комментах (т.е. то, что уже сделано) - это действительно потенциально существенная доп. нагрузка на сервер. А добавление к этой уже реализованной функции фичи "Прочитать все" - доп. нагрузка несравнимо меньшая.
PS: Кстати, на самом читаемом мною форуме sql.ru - тоже нет такой фичи как "Прочитать все". Но там, ради снижения нагрузки на сервер, признаки прочитанности постов вообще в базе не хранятся - а хранятся на клиенте (видимо, в cookies). То есть стоит зайти с другой машины, или просто другим браузером - и снова все топики получают пометку "new" :( На вопросы "что за фак..." разработчик движка стандартно отвечает, что сделать форум с посещаемостью 5000 человек в 20 минут, 100 000 аккаунтов и 5 млн сообщений, чтобы при этом ничего не падало и не тормозило - задача не из легких...
Впрочем, в метроблоге это уже дикий оффтоп, посему закругляюсь :)
Я ориентируюсь на dirty.ru, и хотя тот написан на перле, принципиально обращения с базой это не меняет. Скрипт непрочитанных постов и новых ответов там выглядит точно также, а значит реализован похоже (или идентично). Функции "отметить все прочтёнными" нету. Посещаемость очень высокая, зарегестрировано больше 25 тыс. человек.
На самом деле не очень ясно, зачем создавать лишнюю работу для базы данных. Вы можете смотреть только те посты, которые вам интересны, а все остальные игнорировать. Я на дёрти и лепре так и делаю.
Встроенный в движок скрипт записывает в базу время посещения форума, а при следующем заходе помечает все сообщения, написанные после этого. Если ты ничего не прочитаешь и перезайдёшь на форум, сессия обновится и всё уже станет прочтённым. Заходы в тему в пределах сессии учитываются через куки (cookie).
Правда, в условиях Метроблога этот скрипт практически не работал, и по крайней мере у меня новые ответы помечал через два раза на третий.
А ограничить действие этой функции по времени нельзя? Многие из нас знают, каково это, заглянуть во френдленту после отпуска... Большинство, правда, всё непрочитанное предпочитают удалить. Так и тут: вернусь я из трёхнедельного тура по Европе (ох, размечтался): перечитывать всё влом - понадобится мне - всё равно прочитаю, не понадобится - даже не загляну. А заходить в каждую тему только чтобы её отметить - это чисто техническая вещь, с которой надо бороться.
Поэтому предлагаю ограничить срок действия "непрочитанности" одной неделей. После этого все пометки о ней из БД стирать. Убиваем двух зайцев.
Я не вижу никакой проблемы. На странице "Новые ответы" пока технически зашит срок в три дня. Я уже говорил, что позже обновлю код и сделаю возможность варьировать выборку по времени.
В общем списке постов, опять же повторюсь, неинтересные никто не мешает просто игнорировать.