Kopusha |
|
---|---|
"Первое что приходит в голову", "допустим" и тд - так это не работает от слова вообще. Для реализации какой то функциональности пишеться документация, хотя бы основная, после реализации, допиливания и тестирования - финальная документация, и уже по ней делается плагин/код/ что там еще. Нельзя "написать плагин кармы для ядра" который кстроит всех, нельзя даже приблизительно.
Likes and dislikesTable of content
На момент запуска работают два отдельных плагина подсчета лайков - ratings и ukarma. Основное их отличие - плагин ratings служит для оценивания какой либо сущности (комментария, фотографии, истории), изменяя значения рейтинга этой сущности, в то время как ukarma - оценивает автора сущности, изменяя значение ukarma в его профиле. Плагин Ratings умеет оценивать: истории (в диапазоне от 1 до 10) Плагин Ratings позволяет выставить оценку истории в диапазоне от 1 до 10. При оценивании рассчитывается срединий "вес" пользователя, который производит оценку, и данные записываются в таблицы rated, ratings и в таблицу сущности, оценка которой проводилась. В таблицу rated записывается каждая отдельная оценка, с записью того что оценено, кем, ip пользователя, дата оценки, сама оценка, и оценка с учетом "веса" пользователя. Сама оценка - это именно проставляемая оценка в виде 1-10, она же и отображается при завершении оценивания (если это первая оценка, если нет - то отображается средняя оценка). Оценка с учетом веса пользователя - записывается отдельно и именно она принимается во внимание при ранжировании сущностей по рейтингу. В таблицу ratings записывается средняя высчитанная оценка для оцениваемой сущности. Говоря проще - в rated пишуться все оценки для сущности каждая отдельной строкой, в ratings - для каждой сущности одна строка с общим результатом всех оценок. Так же общие результаты записываются в таблицу самой сущности - если это история - то в таблицу stories, если страница - то в pages. Для плагина ratings есть две "надстройки" - ratingsstories и ratingslike. Так как плагин ratings умеет оценивать только страницы (pages) то ratingsstories просто добавляет возможности оценивания историй (stories). Плагин ratingslike не рассчитывает средний вес пользователя - он просто записывает оценки в разрешенных диапазонах (например 1 или -1 для комментария, 1 для изображения или 1 для страницы раздела Questions). Ratingslike имеет другую задачу - он добавляет рейтинги для отдельных комментариев, привязанных к сущностям. При этом после оценки комментария данные про оценку точно так же записываються в таблицы rated, ratings и суммарная оценка - в саму таблицу комментариев (com). При оценивании комментариев оценка может быть только 1 или -1 и именно эти данные записываются в таблицы, тут нет оценок с учетом веса пользователя. При отображении комментариев они отображаются по разному в зависимости от суммы оценок этого комментария. Эти настройки задаються в конфиге плагна комментариев. Так же он добавляет возможность оценки одного файла-изображения, которое привязано к общедоступному альбому пользователя PFS либо к опубликованной истории. При оценивании он отображает сумму предыдущих оценок изображения, разрешает (если пользователь еще не ставил оценку) оценить изображения (только +1), и записывает в таблицы rated, ratings, files оценку для этого изображения. Так же в нем проверяется что страница, которую оценивают имеет родительскую категорию questions, и записывает в таблицы rated, ratings, pages оценку (только +1) для этой страницы.
Плагин Ukarma позволяет оценивать автора какой либо сущности. Плагин Ukarma умеет оценивать: автора истории (только +1) При выставлении оценки ukarma данные самой оценки записываются в таблицу ukrama в том виде в котором оценка была выставлена (то есть 1, -1). При этом для каждой вариации оценки ukarma есть свой коэфициент, то есть за оценку истории автору истории будет изменена карма (значение в его профиле) намного больше, чем за оценку его поста на форуме. А при оценке его статьи или записи блога - еще больше. Эти коэфициенты настраиваються в конфиге плагина. При оценивании будет проверено - разрешена ли оценка для данной сущности и автора а так же - находится ли оценка в разрешенном диапазоне. При соблюдении всех условий - оценка будет записана в таблицу ukrama, получена текущая карма пользователя из его профиля и произведена корректировка кармы в зависимости от выставленной оценки и коэфициента. После новое значение будет записано в профиль оцениваемого пользователя (автора сущности, которую оценивают). В конфигах ukarma задаются значения: минимальная карма для возможности влиять на карму других пользователей Значение кармы пользователя не только влияет на возможность что либо делать (создавать новые темы или посты на форумах) но и на средний "вес" пользователя, который нужен для подсчета в плагине ratings при оценивании историй.
Это только пример документации, она есть вся еще и на английском, и к ней прилагается еще и документация по собственно коду каждого куска логики. Что то типа такого (скопирована из wiki-движка документации потому такое форматирование): # Таблица $db_ratings **В таблице храниться сводная информация по всем оценкам одного элемента** ## **rating_id** auto increment ## **rating_code** **id элемента или код элемента** - для комментариев тут будет 4112 где 4112 это id комментария (com_id) ## **rating_area** **зона в которой оставлен рейтинг (модуль, плагин)** com files stories page ## **rating_state** **всегда 0, для дальнейшего использования** ## **rating_average** **средняя чистая оценка (среднее арифметическое оценок)** decimal(5,2) ## **rating_summ** **сумма всех оценок** int(11) ## **rating_realaverage** **средняя оценка с учетом веса пользователя (среднее арифметическое оценок realrating)** int(11) ## **rating_creationdate** **дата изменения поля (дата последней оценки)** ## **rating_text** **всегда null, для дальнейшего использования** ## **rating_item** **чистый id элемента (для комментариев рейтинги имеют rating_code вида like_com_id, тут хранится только com_id)** int(11) - для комментариев тут будет 667 где 667 это id элемента к которому комментарий (page_id для страниц, item_id для историй и тд) ## **rating_cout** **суммарное кол-во рейтингов данного элемента** int(11) И все это просто не реально сделать "в ядре" так как для логики каждого проекта оно уникально. А делать просто "плагин лайков" - их уже есть с десяток.
|