Forums / National / Russian / Модули и плагины / Плагин Karma

Sergeich
#1 2025-02-21 22:37

Давным давно этот плагин разрабатывался, но не помню довели его до ума или нет.

 

Хотелось бы глобальный плагин (или даже модуль), который позволит пользователям ставить плюсы-минусы статьям, комментариям, сообщениям на форуме. В общем то, функционал кармы Хабра и Пикабу с оговорками.

На базе кармы можно будет выстроить некоторое взаимодействие с юзерами (кармадрочество) и автомодерацию контента. Думаю это могло быть полезным.

Alex300
#2 2025-02-22 04:55

Плагин кармы очень давнишний. Свежей версии не попадалось.

Сейчас работаю над новой версией плагина Thanks (Like). Но закончу его после очередного релиза т.к. он будет использовать фичи, которые появились в свежей бета версии.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Kabak
#3 2025-02-22 07:14
#48262 Alex300:

Плагин кармы очень давнишний. Свежей версии не попадалось.

Сейчас работаю над новой версией плагина Thanks (Like). Но закончу его после очередного релиза т.к. он будет использовать фичи, которые появились в свежей бета версии.

А можно чтобы он был полностью совместим с предыдущей версией и автоматически похватывал базу данных от предыдущей версии которую допиливал Kort ?

ссылка на версию от Kort ( работает на последней версии движка )

 

 

Sergeich
#4 2025-02-22 08:18

Всё же плагин "Спасибо", это несколько другое, можно сказать - это частный случай Кармы. Рейтинг страниц (звёздочки) - это тоже частный случай Кармы. Было бы прикольно сделать универсальную штуку, которую можно прикручивать к любым сущностям, по необходимости.

Kabak
#5 2025-02-22 08:22

Thanks можно дописать до нужнонго вам функцилонала

 

Его уже можно прикручивать к чему угодно.  Осталось сделать не только + но и -   

Но это сомнительная возможность, потому, что кто не ставит + , значит ставит - или вообще не ставит ничего - безразлично и человек не голосует.

 

+ - вполне достаточно.

Добавлено 2 минуты спустя:

Вот на моём сайте работает этот планиг

This post was edited by Kabak (2025-02-22 08:36, 2 months ago)
Sergeich
#6 2025-02-22 13:34

Плагин Карма будет интересен сайтам с достаточно большим и активным сообществом. Игровые или развлекательные сайты. Можно к бирже прикрутить. Плюсы Кармы заключаются в наличии минусов (извините за тафтологию). Каждый объект с кармой имеет два счётика, "+" и "-",  - это даёт возможность более точно его оценивать и манипулировать результатом.

Варианты использования:

Юзеры: 

- можно автоматически определять "полезность" пользователя и переводить его из группы в группу. Можно на основании кармы присваивать или отбирать те или иные плюшки. К примеру, плашку "Про" на той же бирже.

- можно реализовать автобан токсичных пользователей.

Комментарии:

- можно скрывать заминусованные комментарии, выделять заплюсованные.

Страницы:

- автоматически снимать статьи с публикации при определёном уровне минусов.

Это первое, что в голову пришло.

 

 

Kabak
#7 2025-02-22 13:44

Юзеры: 

- можно автоматически определять "полезность" пользователя и переводить его из группы в группу. Можно на основании кармы присваивать или отбирать те или иные плюшки. К примеру, плашку "Про" на той же бирже.

- можно реализовать автобан токсичных пользователей.

Комментарии:

- можно скрывать заминусованные комментарии, выделять заплюсованные.

Страницы:

- автоматически снимать статьи с публикации при определёном уровне минусов.

Это первое, что в голову пришло.

А можно таким способом бороться с неугоднами пользователями или статьями и минусить карму какому-нибудь конкуренту.  Способов много. 

Поэтому наличия только +  устраняет борьбу с неугодными людьми и сообщениями

 

( мы просто высказываемся о плюсах и минусах всех фич )

Sergeich
#8 2025-02-22 13:55

Я понимаю. Можно и войну на сайте устраивать, это факт. Поэтому будет разумно предусмотреть механизм защиты от такого поведения. 

Добавлено 7 минут спустя:

Кстати, а сколько такой плагин будет стоить (ну приблизительно), чтоб порядок цен понимать :)

This post was edited by Sergeich (2025-02-22 14:02, 2 months ago)
Kabak
#9 2025-02-22 14:27
#48276 Sergeich:

Я понимаю. Можно и войну на сайте устраивать, это факт. Поэтому будет разумно предусмотреть механизм защиты от такого поведения. 

Добавлено 7 минут спустя:

Кстати, а сколько такой плагин будет стоить (ну приблизительно), чтоб порядок цен понимать :)

А вы предложите механизм защиты сперва, чтобы точнее определить стоимость решения 

Sergeich
#10 2025-02-22 14:47

Первое, что приходит в голову, ограничение заряда минусомёта, по времени или другим параметрам.

Kabak
#11 2025-02-22 14:55

т.е. велосипед ради велосипеда ?  Проще убрать -  и закрыть вопрос с накрутками , а заодно стимулировать особо недовольных высказываться, почему они против

Sergeich
#12 2025-02-22 15:20

Карма анонимна, это и есть её плюс. Допустим я начну творить фигню, ты с этим не согласен и высказался публично, я обиделся и мы вместе развели публичный срач на ровном месте (люди разные бывают), втянув в эту войну окружающих. В конце мы оба друг друга ненавидим и  начинаем пакостить по мелочи или просто перестаём конструктивно общаться. Если же мне анонимно накидали минусов и система меня автоматически ограничила, то как бы и претензии некому предъявить :). 

Kabak
#13 2025-02-22 15:50

Как бы есть админы и модераторы.  Но, если кто-то сделает плагин в том виде в которм вы его хотите, я только ЗА

Kopusha
#14 2025-02-22 16:27

"Первое что приходит в голову", "допустим" и тд - так это не работает от слова вообще.

Для реализации какой то функциональности пишеться документация, хотя бы основная, после реализации, допиливания и тестирования - финальная документация, и уже по ней делается плагин/код/ что там еще.

Нельзя "написать плагин кармы для ядра" который кстроит всех, нельзя даже приблизительно.
Что бы чуть быть не голословным покажу страницу документации:

 

Likes and dislikes

Table of content
1. Зачем нужны лайки
2. Лайки для историй и статей
3. Лайки и дизлайки для комментариев
4. Плагин Ratings
5. Плагин Ukarma
6. Top answers, questions, experts


Плагин Ratings

На момент запуска работают два отдельных плагина подсчета лайков - ratings и ukarma.

    Основное их отличие - плагин ratings служит для оценивания какой либо сущности (комментария, фотографии, истории), изменяя значения рейтинга этой сущности, в то время как ukarma - оценивает автора сущности, изменяя значение ukarma в его профиле.

Плагин Ratings умеет оценивать:

    истории (в диапазоне от 1 до 10)
    комментарии (в диапазоне 1 или -1)
    отдельные файлы (которые являються изображениями и добавлены в PFS или историю, в диапазоне 1)

Плагин 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 позволяет оценивать автора какой либо сущности.

Плагин Ukarma умеет оценивать:

    автора истории (только +1)
    пост на форуме (в диапазоне 1 или -1)
    некоторые страницы (только +1 и только страницы из родительской категории Блоги, либо Статьи)

При выставлении оценки ukarma данные самой оценки записываются в таблицу ukrama в том виде в котором оценка была выставлена (то есть 1, -1).

При этом для каждой вариации оценки ukarma есть свой коэфициент, то есть за оценку истории автору истории будет изменена карма (значение в его профиле) намного больше, чем за оценку его поста на форуме. А при оценке его статьи или записи блога - еще больше. Эти коэфициенты настраиваються в конфиге плагина.

При оценивании будет проверено - разрешена ли оценка для данной сущности и автора а так же - находится ли оценка в разрешенном диапазоне. При соблюдении всех условий - оценка будет записана в таблицу ukrama, получена текущая карма пользователя из его профиля и произведена корректировка кармы в зависимости от выставленной оценки и коэфициента. После новое значение будет записано в профиль оцениваемого пользователя (автора сущности, которую оценивают).

В конфигах ukarma задаются значения:

    минимальная карма для возможности влиять на карму других пользователей
    минимальная карма для возможности создавать новые темы в форумах
    минимальная карма для возможности писать новые посты на фоурмах
    количество оценок, которые пользователь может выставить другим пользователям на протяжении 24 часов
    количество оценок, которые пользователь может выставить одному конкретному пользователю на протяжении 24 часов

Значение кармы пользователя не только влияет на возможность что либо делать (создавать новые темы или посты на форумах) но и на средний "вес" пользователя, который нужен для подсчета в плагине ratings при оценивании историй.

 

Это только пример документации, она есть вся еще и на английском, и к ней прилагается еще и документация по собственно коду каждого куска логики.

Что то типа такого (скопирована из wiki-движка документации потому такое форматирование):

# Таблица $db_ratings

**В таблице храниться сводная информация по всем оценкам одного элемента**

## **rating_id**

auto increment

## **rating_code**

**id элемента или код элемента**

- для комментариев тут будет 4112 где 4112 это id комментария (com_id)
- для фотографий тут будет 4112 где 4112 это id файла (file_id)
- для историй тут будет 1222 где 1222 это id истории (item_id)
- для страниц тут будет 667 где 667 это id страницы (page_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 для историй и тд)
- для фотографий тут будет 4112 где 4112 это id файла (file_id)
- для историй тут будет 1222 где 1222 это id истории (item_id)
- для страниц тут будет 667 где 667 это id страницы (page_id)

## **rating_cout**

**суммарное кол-во рейтингов данного элемента**

int(11)

И все это просто не реально сделать "в ядре" так как для логики каждого проекта оно уникально. А делать просто "плагин лайков" - их уже есть с десяток.