27 дек 2010, 10:40
Всем доброе время суток.
Возникла такая задача.... Надо написать рейтинговую систему для форума.
1. Каждому посту соотв. целое число (рейтинг) в правом вверхнем углу.
2. При наведении мышки на число появляются две кнопки - плюс/минус (+/-). Смотерть рисунок.
3. При нажимании (выставление оценки посту) на плюс (+) рейтинг поста увеличивается на Х (сила). При нажимании на минус (-) рейтинг поста уменьшается на Х. Изменение рейтинга поста происходит одномоментно (js).
4. Сила Х разная для разных групп пользователей. В настройках всех групп пользователей (в т.ч. и новых) в админке должно быть поле - сила группы.
4. Оценивать посты могут только зарегистрированные пользователи.
5. Свои посты пользователи не могут оценивать.
6. Пост может быть одним пользователем только 1 раз.
7. Пост может быть переоценен в другую сторону после первой оценки. Тогда рейтинг поста менятся на 2Х.
8. За сутки любой пользователь может оценивать максимум У постов. Либо, этот У зависит от числа сообщений пользователя на форуме: У(пользователь А)=T*[S/100+1], где [x] - целая часть числа X, S - количество сообщений пользователя, T - целое число, коэффициент.
9. Если пользователь исчерпал свой лимит оценок, при попытке оценить пост - рядом с кнопками +/- вылезает надпись: fuck
9. Рейтинг первого поста темы является рейтингом этой темы и отображается у всех тем на странице /viewforum
10. На страницах viewtopic (под юзерпиками пользователей) и viewprofile есть поле: Рейтинг.
11. Рейтинг пользователя формируется на основе рейтингов постов этого же пользователя. Но не все оценки постов идут в рейтинг пользователю.
12. Ограничение 1: если за сутки пользователь А оценил положительно >1 поста пользователя Б (и (не или!) отрицательно >1 поста Б), то в рейтинг Б засчитывается только первая положительная (и отрицательная) оценка.
13. Ограничение 2: за месяц в рейтинг Б может добавиться не более 15 положительных оценок и не более 15 отрцитальных оценок от одного пользователя Б.
14. После исчерпания двух указанных лимитов, пользователь А может изменить только рейтинг постов Б (если у него не закончился лимит на оценки вообще - пункт 8).
14.1. Рейтинг пользователя Б обновляется после первой загрузки любой страницы пользователем А, который выставил оценку пользователю Б.
15. Число - рейтинг пользователя - кликабельное.
16. При переходе на рейтинг пользователя открывается страница - детализация рейтинга.
17. 2 таблицы, 2 и 4 строк.
18. 1 стоблец (forums) - различные форумы, в которых пользователь получал оценки за свои посты.
19. 2 стоблец (sum) - суммы оценок постов пользователя в этих форумах. Столбец отсортирован по убыванию.
20. 1 стоблец (users) - пользователи, выставлявшие оценки пользователю.
21. 2 стоблец (votes) - общие кол-ва оценок, выставленные каждым таким пользователем.
22. 3 столбец (sum) - общие суммы положительных и отрицательных оценок от каждого пользователя.
23. 4 столбец (contribution) - суммарные рейтинги (суммы оценок, которые пошли в зачет рейтинга) от каждого пользователя. Столбцы отсортированы по убыванию столбца 4.
24. В таблицах отображается максимум 30 строк.
25. Если в таблицах больше 30 строк, тогда отображатся первые (самых больших) 15 и последние (самых маленьких) 15 строк. Посередине таблиц - ссылка на подробнее. При переходе по этой ссылку открывается страница со всеми строками.
Подскажите как можно реализовать данный проект? И на базе чего? Или начинать придётся всё с нуля?