Autor wpisu: Athlan, dodany: 09.06.2008 20:34, tagi: internet, php
Ostatnimi czasy pracuje nad dość dużym projektem. Jednym z punktów specyfikacji są fora dyskusyjne w grupach. Oczywiście pojawił się problem z nieprzeczytanymi postami. Jest kilka rozwiązań, każde ma swoje plusy i minusy:
- Sprawdzanie daty ostatniego postu na całym forum danej grupy. Pomysł zaczerpnięty z portalu nasza-klasa.pl, gdzie bok relacji użytkownik->forum zapisywana jest data ostatniego odwiedzenia forum. Jeżeli na forum jest nowszy post niż zapisana data - forum jest oznaczone jako nieprzeczytane. Minusem tego rozwiązania jest to, że działa bardzo ogólnikowo (nie wiadomo które tematy są nieprzeczytane, które nie - oznaczane jest tylko forum, w dodatku jeden raz).
- Korzystanie z historii przeglądarki przy użyciu stylu a:visited. Plus - łatwość implementacji, minusy - ogólnikowe, nie zawsze zadziała, amatorszczyzna (nie na taki projekt, rozumiem blog).
- Sposób z PHPBB: stworzenie relacji user->temat, gdzie zapisana jest data ostatniego czytania tematu. Plusy: możemy stwierdzić ostatnią wizytę co do konkretnego posta. Minusy: dużo syfu w bazie danych, wypadałoby dodać limit, np czyszczenie nieprzeczytanych for po ilości wątków oraz limit czasowy, czyszczone cronem lub przy innej okazji.
Po dłuższej analizie, zdecydowałem się na implementację trzeciego rozwiązania za pomocą tabeli:
- handle_user (id usera),
- handle_group (id grupy),
- handle_thread (id tematu),
- handle_time (czas ostatniej wizyty w temacie, defaultowo 0).