Значок письма

  Решил добавить значок письма, который бы показывал есть ли новые (не прочитанные) письма или нет. Для этого нужно в структуре TUser добавить флажок - есть ли новые письма newmail, но это только 10% дела - самое главное это заполнять этот флаг.

Первое дело - при загрузки сервера - при поднятии данных с сервера, это пришлось изменять функцию загрузки пользователей, вместо примитивной SQL select * from theuser, пришлось писать select t.*,l.id as newmail from tuser t left join letter l on (l.respondent=t.id and coalesce(l.readdate,0)=0 and l.id=(select max(l2.id) from letter l2 where l2.respondent=t.id and coalesce(l2.readdate,0)=0))

Конечно это сильно снизило загрузку (ну я проецирую ситуацию, когда игроков далеко за 100,000), но с другой стороны - это единоразово - только при загрузке.

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

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

В html все гораздо проще - в строке выводим в span'е изображение тусклого конверта (почты нет), а затем выполняем скрипт и проверяем есть ли значение в флаге - если есть заменяем у span'а innerHTML - html кодом с изображением уже светящего конверта (а потом можно вообще сделать с анимацией).