Specs for an advanced karma system
I'm writing this to tell myself and others what exactly I intend to do and ask for feedback.
I will code an advanced karma function intended to;
Help mods to
* find off-topic or improper posts for removal
* determine which users form groups
* keep these groups from ganging up on others
and to show users
* where to find worthwhile posts
* and topics
* if another user is regarded as a troll
* or someone valuable to the forum
The way I intend to do this is by creating a system where users may rate each post + or -, and the data of who voted which post how and when gets saved. Each user has the number of +s and -s they have received displayed next to each of their posts, along with how the post itself has been rated.
A user won't be able to rate posts without limit. What the limit should be is yet to be determined.
Indexes are also generated based on this data in order to speed up the working of certain key functions, such as the advanced views on the data collected available to moderators. Moderators will for example be able to see which users often give each other good karma, or which often give each other bad karma. A lot of different statistical views would be possible to generate from the data collected.
Phase no. 1 in coding this would be to set up the database to collect the information of who, what, when and how.
Phase no. 2 would be to enable specific users to add karma and display it for users and posts, utilizing the tables created in phase no.1.
Phase no. 3 would be coding a ranking system which displays popular threads prominently, and popular posts within the threads as well.
Phase no. 4 creates the advanced functions moderators utilize to stop disagreements between users from getting out of hand
After this the main goals of the system has been reached, but the data collected still allows for much development to take place.
I could use some help regarding how to set up the database and how to organize the code. If you have a good idea on _how_ to do something, I would like to hear it and go straight to the doing. This way your experience on the subject comes to great use without you having to bother with the detail of the actual coding.
Thank you for reading, and please, may I have some feedback?



