*kick*
Een ontwerp van een systeem kan je eigenlijk onderverdelen in drie delen. Het process-ontwerp, het gegevens-ontwerp, en het gebruikersinterface-ontwerp.
Bij de beslissing over hoe je je klasses moet indelen moet je voornamelijk naar het process-ontwerp kijken. Het gebruikers-interface ontwerp kan je zien als de laatste laag en daar hoef je je dan ook in eerste stadium niet druk om te maken. Deze post is dus misschien een beetje offtopic maar ik heb me hier even gericht op het gegevensontwerp.
Even snel zonder attributen in elkaar geflanst.
Ik kon zo snel geen driehoeken vinden dus directe relaties zonder kardinaliteiten moet je maar als ISA's zien.
Ik heb wel geprobeerd met zo veel mogelijk functies rekening te houden.
sorry voor layout
Door forums aan forums te koppelen kan je subforums creëren.
Ik zie nu dat ik wel iets als catogoriën vergeten ben.
Een geregistreerde user kan op meerdere computers ingelogged zijn (dan heeft hij meerdere sessies lopen). Hij kan mailaccounts in het forum instellen. (altijd leuk om een extra forum te hebben waarin je mail staat

)
Ook kan hij berichten sturen naar andere geregistreerde gebruikers.
Daarnaast heeft hij bookmarks. Dit zijn eigelijk gewoon links naar topics.
Zo'n topic kan gewoon een topic zijn maar ook een poll of een bestand. (attachment ondersteuning). Daarnaast is het voor de modjes mogelijk om een topic te verplaatsen en daarbij op de oude plaats een link achter te laten. Op die manier vinden de mensen na het verplaatsen de topics ook nog terug.

Het rechtensysteem heb ik nog niet echt grondig uitgewerkt. Ik denk dat het ook pas duidelijk wordt hoe het dient te werken als de attributen erbij staan, maar de bedoeling is als volgt:
Een user heeft bepaalde privileges. (ongeregistreerde users hebben ook privileges maar wel allemaal dezelfde natuurlijk [1 record voor de ongeregistreerde meuk])
Aan zo'n privilege kan een eis hangen. Zo kan een privilege gelden voor één enkele user of voor bijvoorbeeld alle users met 100 of meer posts.
Ik maak onderscheid in globale en lokale privileges.
globale privileges zijn dingen zoals bijvoorbeeld het gebruik mogen maken van usericons, html mogen posten, admin of global moderator zijn, verzin maar wat. Dingen dus die op het hele forum gelden.
Lokale privileges zijn forum afhankelijk. Dit kunnen dingen zijn zoals reply recht in forum 1, mod recht in forum 2, toegang tot forum 3 enz.
Dingen die ik niet in het model kwijt kon maar die waarschijnlijk wel tabellen nodig hebben zijn: tempates, banns, thema's, cp-logg, en natuurlijk de boardinstellingen.
Templates zijn gaaf. Het is een uitdaging om een forum te maken dat in de php-scripts geen enkele HTML tag gebruikt maar enkel templates uit de database rukt zodat de back-end-user niet alleen de kleur maar ook de rest van het uiterlijk van het forum kan veranderen.
Thema's ondersteunen dit template gebeuren. Een thema geeft aan welke plaatjes gebruikt worden en welke CSS gegenereerd wordt. De kleur van het forum, de tabelbreedte en het lettertype is bijvoorbeeld thema afhankelijk.
Banns, ja, dat heeft geen info nodig. Een ip adres of hostname moet voor een bepaalde of onbepaalde tijd van het forum geweerd kunnen worden.
CP-Log. Tja, misschien ook wel een leuke feature om te loggen wat mensen op het back-end-systeem uitvreten. Daar zal ook een tabel voor nodig zijn.
Smilies, dat is natuurlijk ook wel leuk om in de database vast te leggen. Misschien kan je zelfs het gebruik van diverse smiles aan een privilege koppelen zodat bepaalde mensen maar een smilie mogen gebruiken. Ook kan je ze thema afhankelijk maken. Op deze manier kan je bijvoorbeeld een smilieset voor donkere en één voor lichte achtergronden gebruiken.
Censors. Nu we toch bezig zijn. Misschien zijn censors ook leuk. Dus dat je bepaalde woorden niet in berichten, posts, signatures enz toestaat en deze vervangt met een ander woord.
Foruminstellingen. En natuurlijk komt er nog een tabel met 1 record waarin de instellingen van het gehele board worden vastgelegd. Dus welk taalbestand het forum gebruikt, welk thema standaard is, met welke voorwaarden de gerbuikers voor het registreren akkoord moeten gaan, de tijdzone instellingen, enz enz..
erg optioneel: voorzie het forum van een ingebouwde banner-admin. Klanten kunnen dan banners in een bepaald forum aanbieden enz.
En dan afgezien van het database-ontwerp:
Als je echt 1337 OOP wilt gaan doen moet je een apparte class voor de interaktie met de database maken. Op die manier kan je het forum voor meerdere databases geschikt maken. Ook van de tempate-engine en de UBB-Parser kan je een classe maken. Ow en nu we het toch over de UBB Parser hebben. Voorzie de parser niet alleen van de standaard code maar maak hem ook geschikt voor vette RML ofzo.
Ik kan daarnaast nog wel 100 ander eleuke features bedenken maar die zullen dan allemaal niet entiteitafhankelijk zijn. Dit is volgens mij dus de basis.
-- succes --
edit:
ik heb in het model het gedoe rondom forum wat verder uitgewerkt. Het is nu dus zo dat een forum een catogorie, een gewoon forum of een subforum kan zijn.
Een forum kan 0 of meerder subfora bevatten. En subforum behoort altijd tot 1 forum toe. Een forum kan deel uitmaken van 0 of 1 catogorie. Een catogorie kan meerdere fora bevatten. Opvallend is dat alle drie topics kunnen bevatten. Dus ook catogorieën. Dit zal er qua uiterlijk dan ongeveer zo uitkomen te zien als de t.net newsposts op het got-forum. Natuurlijk moeten hier wel zware privileges aan worden gebonden. Niet iedereen moet zomaar in een catogorie kunnen posten maar bijvoorbeeld alleen mod met belangrijk nieuws e.d.
Ik zit nog wel een beetje met dat privilege systeem in de maag. Dit zal ik later nog wat verder uitwerken. Misschien dat er wat standaard privilege groepen gemaakt moeten kunnen worden ofzo. Dan krijg je zoiets:
een groep bestaat uit meedere personen
een groep heeft meerdere rechten
maar kan een persoon dan ook in meerdere groepen zitten?
en hoe zit het dan met het overerven van rechten?
Ik ben zelf ook al een hele tijd aan een forum bezig maar heb ook nog geen goed rechtensysteem terwijl dat toch wel een van de vitale delen van een goed forum is.
Misschien kan Chem hier een tipje van de sluier oplichten. Hij schijnt er nogal bedreven in te zijn.
btw, Suggesties zijn welkom.
Voor de doe-het-zelfer:
Visio bestand
[
Voor 25% gewijzigd door
Maxonic op 28-09-2003 16:27
]