Ve svém prvním článku o online fóru jsem zmínil, že by mohlo být přidáno několik pokročilejších funkcí:
- Další formální podrobnosti o uživateli místo jednoho pole „jméno“. Možná budete chtít jméno, příjmení a uživatelské jméno nebo přezdívku uživatele. Pěkné fórum by také uživatelům umožnilo mít profilový obrázek, e-mail, role, stav (aby bylo možné uživatele zablokovat) a další informace, například když fórum naposledy navštívili.
- Další kontrola související s vytvářením uživatelů abychom mohli sledovat, kdy je vytvořen nový uživatel, ale předtím, než byla potvrzena jeho e-mailová adresa.
- kategorie fóra a podkategorie, kde každá kategorie má předmět, několik moderátorů a další informace, jako je datum vytvoření kategorie. Předmět příspěvku kromě obsahu
- Moderované příspěvky které musí schválit moderátor, než je uvidí ostatní uživatelé. Příspěvky a vlákna by měly různé stavy jako:čekání na zveřejnění, zveřejněno, nahlášeno jako spam, zablokováno, odblokováno.
- Poté bychom mohli uživatelům umožnit hlasovat pro a hlasovat proti vlákna a příspěvky.
Pro fórum budu používat termín „vlákno“ k označení konverzace s potenciálně několika příspěvky souvisejícími s vláknem.
Udělám úvodní komentář; Obecně používám zaokrouhlená čísla jako 100 nebo 1000 k definování délky polí varchar; Netvrdím, že se jedná o nezbytně vhodnou velikost, ale používám to spíše jako zkratku, než abych nechal délku nedefinovanou (%). Na druhou stranu občas používám velmi specifické délky pro pole jako email
a ip_address
; 254 je maximální délka, kterou může mít e-mailová adresa podle definic RFC, zatímco 45 je maximální délka adresy IPv6.
Podrobnosti uživatele
V 1. části naší série článků o vytváření online fóra byly informace o uživatelích velmi omezené. Vylepším údaje o uživateli, které jsou uloženy. Prozatím bude moderování velmi základní:uživatelé budou moderátory, nebo ne. Později můžeme vytvořit složitější pravidla moderování související s kategoriemi a vlákny.
Pro stav uživatelů vytvořím user_status
tabulku, abych ji mohl znovu použít v jiné situaci, i když existuje jen velmi málo stavů, například „EMAIL_NOT_VERIFIED“, „VERIFIED“ a „BLOCKED“.
Vytvoření uživatele
Stav uživatele použiji k rozpoznání uživatelů, kteří jsou ve stavu „EMAIL_NOT_VERIFIED“ poté, co si uživatel vytvořil svůj účet a byl mu odeslán e-mail na jeho zadanou e-mailovou adresu, ale předtím, než klikli na ověřovací adresu URL v e-mailu. Pokud některé z těchto kroků provedou různé součásti vašeho systému a ne hned při vytváření uživatele, můžete být ještě složitější a mít stavy jako „EMAIL_VERIFICATION_TO_BE_SENT“ a „EMAIL_VERIFICATION_RESENT“.
Stav vlákna a příspěvku
Než budou moderované příspěvky viditelné pro ostatní uživatele, musí je schválit moderátor. Příspěvky a vlákna by měly různé stavy, například:čeká na schválení, schváleno, nahlášeno jako spam, zablokováno. U stavu vláken a příspěvků zvolím flexibilnější způsob nakládání se stavy odkazem na status
stůl. Aplikace pak musí vědět, co která hodnota znamená ve stavových tabulkách (pokud status =„SCHVÁLENO“, vlákno se zobrazí), ale dávám přednost tomu, než ukládat text do thread
a post
tabulky. Budeme mít několik stavů, jako „ČEKÁNÍ_NA_SCHVÁLENÍ“, „SCHVÁLENO“, „ZAMÍTNUTO“, „NAHLÁŠENO_AS_SPAM“ a „ZABLOKováno“ a v budoucnu možná budeme chtít přidat další.
Jinými slovy, uživatel vytvoří nové vlákno nebo nový příspěvek a ten je uveden do stavu „NOT_APPROVED“. Neschválená vlákna a příspěvky se většině uživatelů nezobrazují; moderátoři však mohou zobrazit neschválené položky a vybrat „Schválit“ nebo „Odmítnout“. Uživatelé mohou označit vlákno nebo příspěvek jako spam, ale to musí potvrdit moderátor. Nevyžádaná vlákna a příspěvky se uživatelům nezobrazují.
To mi umožňuje používat status
tabulka pro vlákna i příspěvky, protože stavy pro oba by měly mít stejný význam. status
tabulka k označení stavu uživatelů; Nemyslím si, že by to byla dobrá designová volba.
Formální design
Rozšiřujeme tedy ERD, který byl vytvořen v Části 1. Tabulky, které byly vytvořeny v článku Část 1, jsem obarvil žlutě a nově přidané tabulky obarvil oranžově, aby bylo snazší vidět doplňky. Jednotlivé změny jsem však v tabulkách neoznačil.
Co dál?
Opět je třeba provést další vylepšení, ale zde jsme vytvořili velmi jednoduché online fórum a přidali několik užitečných nových funkcí.
V dalších dílech se podívám na přidání dalších funkcí, jako jsou:
- kategorie fóra a podkategorie, kde každá kategorie má předmět, několik moderátorů a další informace, jako je datum vytvoření kategorie. Předmět pro příspěvek kromě obsahu
- a pak bychom mohli chtít uživatelům umožnit hlasovat pro a proti vláknům a příspěvkům.
Jaké funkce vyžaduje vaše online fórum? Jsou nějaké funkce, které bych měl vzít v úvahu při přípravě dalšího dílu této série? Pokud ano, dejte mi vědět.
« Předchozí část | Další část » |