За последние 24 часа нас посетили 17803 программиста и 1646 роботов. Сейчас ищут 873 программиста ...

Реализация функции "Отметить прочитанным" на форум

Тема в разделе "Прочие вопросы по PHP", создана пользователем ExtendedPlay, 10 окт 2009.

  1. ExtendedPlay

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

    С нами с:
    17 дек 2008
    Сообщения:
    5
    Симпатии:
    0
    Привет всем!

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

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

    Подскажите, пожалуйста, правильно решение :roll:

    Заранее спасибо откликнувшимся!
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Тем не менее это один из наиболее полных вариантов.

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

    Но в рамках одной сессии тебе всеравно придется учитывать отдельно, просмотрел ли пользователь эту тему.
     
  3. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  4. alexflom

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

    С нами с:
    20 сен 2008
    Сообщения:
    55
    Симпатии:
    0
    Именно этим вопросом я не задавался, но была проблема такая: все отвечавшие в теме + топикастер получают уведомление на емейл при появлении нового ответа в данной теме. Как наиболее эффективно (общий знаменатель моей проблемы и описанной в этом топике) сделать "отписку от уведомлений". Собственно, реализовал без доп. таблицы подписей на темы. Если будет актуально - спрашивай.
     
  5. ExtendedPlay

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

    С нами с:
    17 дек 2008
    Сообщения:
    5
    Симпатии:
    0
    Simpliest, что ж спасибо, будем пробовать)
    Apple, за ссылку спасибо)
    alexflom, актуально) расскажи пожалуйста))))))))))
     
  6. alexflom

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

    С нами с:
    20 сен 2008
    Сообщения:
    55
    Симпатии:
    0
    Решение реализуется всего доп. столбцом в таблице ответов. Оно все-равно избыточно, поэтому если может быть
    оптимизировано.
    Суть заключается в следующем.
    В таблицу ответов (которая содержит текст, дату, автора и т.д. ответа на топик) добавляем булево поле is_signed.
    Свойство значений этого поля таково: если выбрать все ответы данного юзера на данный топик, и среди них
    окажется хотя бы один == false - юзер НЕ получает уведомление. Если все == true - получает. При этом отписка
    от темы происходит установкой одного любого (или всех сразу) значений is_signed=false для данного юзера и данной
    темы.
    Но тут можно играться: например проверять не все is_signed а только последнее (флаг в последнем ответе юзера
    на тему будет показывать: подписан он или не подписан на тему), но тогда при добавлении нового ответа нужно будет
    всегда копировать is_signed из предыдущего его ответа в этой теме. В описанном же случае по-умолчанию при новом
    ответе is_signed может равняться true.