Кармаграф

Главные вкладки

Аватар пользователя Ainur Ainur 12 февраля 2008 в 19:58

Недавно установил у себя на «италии по-русски» пару модулей, после обновления железа и друпала с 4.7.x на 5.x, среди них:
Voting API
User Karma
Extra Voting forms
Причем, User Karma используется только для подсчета общей кармы пользователей.
Не хитрыми манипуляциями сделал пару вещей:
1 – вывод кармы пользователя в темах и комментариях, а также в меню пользователя, все через функцию user_karma_user_karma().
2 – вывод кармы в профилях пользователей
3 – страницу мы, по подобию hbrahabr, которая еще будет дополнятся
4 – рейтинг «героев» и «злодеев» портала
5 – кармограф, благодаря классу Graph Drawing Class 2
Так что карма-функционал харбахабра легко реализуем при помощи друпала.

Комментарии

Аватар пользователя Ainur Ainur 12 февраля 2008 в 20:35

penexe, а он вроде стоит на этом сайте, дает возможность оценивать посты и комментарии пользователей.

Аватар пользователя deska deska 13 февраля 2008 в 20:18

Что-то я не пойму как карма считается и рейтинг, какая зависимость.

Для чего Ранк там в этом модуле?

Аватар пользователя Ainur Ainur 16 февраля 2008 в 17:55

В грфике карма считается путем суммирования позитивных и негативных голосов в течении часа, получаем график, где зеленая волна – позитивные голоса, красная – негативные.
А карму считает модуль karma, путем суммирования голосов, полученных пользователем, можно выставить «жизнь» кармы, и голоса старше тот. времени не считать.

Аватар пользователя Gendoz Gendoz 6 марта 2008 в 23:57

Круууууто! Не могли бы вы описать по-шагово как сделать такую страничку?
И еще вопросик, в Views возможно добавить фильтр по карме?

Аватар пользователя jason32 jason32 8 апреля 2008 в 17:14

насколько корректно работает? разбирались в функционале? я поставил - КУЧАААА настроек, нет ли перевода к этому модулю хотя бы?

Аватар пользователя enjoy enjoy 21 апреля 2008 в 9:32

Как сделали форму для голосования в таком виде? У меня только чекбоксы или выпадающий список.
И как обновили jquery?

Аватар пользователя enjoy enjoy 22 апреля 2008 в 10:12

Да в настройках все в порядке. В принципе, это глючит только на старых постах, на новых в принципе все работает...
Вопрос такой еще к тебе, ты разобрался по какому принципу она карму начисляет и рассчитывает?
И позволяет ли начислять карму за добавление комментариев?

Аватар пользователя Гость Гость (не проверено) 22 апреля 2008 в 12:42

Привет может вопрос и тупой но хочеться спросить ты график когда рисуешь. У тебя скрипт по крону ходит и кармузаписывает в базу данных. А потом ты от туда считываешь значения для графика?

Аватар пользователя Ainur Ainur 26 апреля 2008 в 18:02

Гость wrote:
Привет может вопрос и тупой но хочеться спросить ты график когда рисуешь. У тебя скрипт по крону ходит и кармузаписывает в базу данных. А потом ты от туда считываешь значения для графика?

Лучше на корн создание графика повесить, у меня он генерируется каждый раз при открытии страницы. Карма пользователей считается при голосовании, сам модуль хранит карму в кеше плюс есть все голоса которые пользователь получил за комментарии или ноды.
enjoy wrote:
Да в настройках все в порядке. В принципе, это глючит только на старых постах, на новых в принципе все работает...

Это нормальное поведение модуля, в настройках есть срок жизни нодов и комментариев за которые можно голосовать.
enjoy wrote:
Вопрос такой еще к тебе, ты разобрался по какому принципу она карму начисляет и рассчитывает?

Ничего сверхъестественного, складывает плюсики пользователя с минусиками и получает карму.
enjoy wrote:
И позволяет ли начислять карму за добавление комментариев?

Да.

Аватар пользователя skifs skifs 29 апреля 2008 в 13:50

Ainur, вот допустим возьмем функцию user_karma_user_karma() , она ,насколько я понял, вызывает votingapi_get_vote() , которая уже в свою очередь лезет в базу с одним запросом.

т.е. можно предположить, что если я захочу вывести на главную страницу информацию о карме пользователя, мне придется выполнять +1 запрос к БД. Но по идее, если включена система автоматического присвоения роли пользователя в зависимости от кармы, то получается выполняется два одинаковых запроса, что не очень разумно.

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

PS. разделение на героев и злодеев чем сделано если не секрет?

Аватар пользователя Ainur Ainur 29 апреля 2008 в 15:47

skifs wrote:
Ainur, вот допустим возьмем функцию user_karma_user_karma() , она ,насколько я понял, вызывает votingapi_get_vote() , которая уже в свою очередь лезет в базу с одним запросом.

т.е. можно предположить, что если я захочу вывести на главную страницу информацию о карме пользователя, мне придется выполнять +1 запрос к БД. Но по идее, если включена система автоматического присвоения роли пользователя в зависимости от кармы, то получается выполняется два одинаковых запроса, что не очень разумно.

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

PS. разделение на героев и злодеев чем сделано если не секрет?


Присвоением ролей не пользуюсь, модуль имеет 2 способа вывода кармы, один – жестокий через user_karma_calculate_karma
Второй – более разумный, через функцию user_karma_user_karma, которая её через votingapi_get_vote из базы, в этом случае, если удалить какой-то комментарий с плюсом или минусом, то карма пользователя не будет пересчитана, пересчет кармы произойдет только после получения еще одного голоса.
Герои и злодеи считаются просто: выбираю всех пользователей с кармой в массив, получаю героев, потом сортирую через asort – получаю злодеев.

Аватар пользователя skifs skifs 29 апреля 2008 в 16:41

Немного прояснилось, спасибо )

Надеюсь не сильно напрягу, если поинтересуюсь ещё ко всему прочему в каком месте производятся рассчеты, связанные с героями и злодеями.. модуль, функция, страница views с кодом?

Аватар пользователя Ainur Ainur 3 мая 2008 в 2:08

skifs wrote:
в каком месте производятся рассчеты, связанные с героями и злодеями.. модуль, функция, страница views с кодом?
модуль.

Аватар пользователя smile smile 22 мая 2008 в 13:24

Ainur wrote:
skifs wrote:
Ainur, вот допустим возьмем функцию user_karma_user_karma() , она ,насколько я понял, вызывает votingapi_get_vote() , которая уже в свою очередь лезет в базу с одним запросом.

т.е. можно предположить, что если я захочу вывести на главную страницу информацию о карме пользователя, мне придется выполнять +1 запрос к БД. Но по идее, если включена система автоматического присвоения роли пользователя в зависимости от кармы, то получается выполняется два одинаковых запроса, что не очень разумно.

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

PS. разделение на героев и злодеев чем сделано если не секрет?


Присвоением ролей не пользуюсь, модуль имеет 2 способа вывода кармы, один – жестокий через user_karma_calculate_karma
Второй – более разумный, через функцию user_karma_user_karma, которая её через votingapi_get_vote из базы, в этом случае, если удалить какой-то комментарий с плюсом или минусом, то карма пользователя не будет пересчитана, пересчет кармы произойдет только после получения еще одного голоса.
Герои и злодеи считаются просто: выбираю всех пользователей с кармой в массив, получаю героев, потом сортирую через asort – получаю злодеев.

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

Аватар пользователя smile smile 2 мая 2008 в 13:54

Присоеденяюсь к вопросу о рейтинге юзеров по карме.

Внимателmyj изучив модуль user_karma понял, что карма нигде в базе не хранится. Она рассчитывается на основе всех оценок (поинтов), которые лежат в таблице голсовалки.

Раскажите пожалуйста механизм постороения рейтинга.

Заранее благодарен.

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 23 мая 2008 в 1:14

>повторюсь с тупым вопрсом - как выбрать юзеров с кармой в массив? данных о карме юзеров в бд не обнаружил.

Данные о карме хранятся в таблицах voting_api.

Аватар пользователя ii ii 31 мая 2008 в 14:06

Ainur,
скажи, пожалуйста, как ты вообще сделал страницу "we" с произвольным содержимым, в котором ты можешь вычислять массивы учатников?.. :-о

У меня в распоряжении есть Views и Panels, но, видимо, это все не то. Шаблон типа node-we.tpl.php тоже не парсится. Smile

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 17 июня 2008 в 1:23

>кстати да, резонный вопрос - карму не вытянешь прямо через Views? как это сделано?
Данные кармы легко вытягиваются через Views, т.к. voting_api, используемый для подсчета кармы, имеет соответствующие хуки.

Аватар пользователя jason32 jason32 17 июня 2008 в 20:37

Krotty@drupal.org
Данные кармы легко вытягиваются через Views, т.к. voting_api, используемый для подсчета кармы, имеет соответствующие хуки.
да неужели, легче легкого. Если написали Хук - можете выкладывать, никто в обиде не будет

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 18 июня 2008 в 12:09

Мои извинения.
Моя уверенность базировалась на заявлении автора модуля User Karma что он без проблем интегрируется c Views.
Но сейчас узнал что и автор был сильно удивлен когда узнал что это не так.
Одна из упомянутых проблем - views выводит списки нодов, а карма это оценка юзеров. (Так что возможно разве что выводить карму автора ноды)
Вторая - Voting API экспортирует во Views только "свой" тип данных - points.

Похоже нужно действительно писать свои хуки, но и при этом список пользовтелей с кармой можно будет сделать разве что при искользовании usernode.

Аватар пользователя kleale1 kleale1 19 октября 2008 в 15:58

ЛЮДИ! Прошу помощи. Так и не понял как выцепить данные из таблицы Voiting API так что бы можно было построить график изменения кармы за сутки.

Нашел очень красивый модуль для D5 Open Flash Chart - на его основе хотел забацать график - так вот запрос к базе правильный не составить, не понимаю где инфу брать. Был бы рад примеру запроса к базе.