Доступ к карме в профиле пользавателя InstantCMS

+19
1.85K
Для того чтобы снизить "кармические войны" на сайте, и чтобы пользователи не регистрировались по многу раз на сайте под разными логинами и минусовали своих псевдо врагов со своих клон анкет. Давайте сделаем так чтобы пользователь с нулевой кармой не мог минусовать других пользователей.
И так начнем.

Находим файл:
/core/classes/user.class.php
Далее:
Находим код:
  1. public static function getKarmaFormat($user_id, $showtitle=false, $controls=true){
  2. //calculate positive karma
  3. $inUser = self::getInstance();
  4.  
  5. $karma = self::getKarma($user_id);
  6.  
  7. $plus = '';
  8. $minus = '';
  9.  
  10. if ($inUser->id && $controls){
  11. if(usrCanKarma($user_id, $inUser->id)){
  12. $plus = '<a href="/users/karma/plus/'.$user_id.'/'.$inUser->id.'" onclick="plusUkarma(\''.$user_id.'\', \''.$inUser->id.'\'); return false;" title="Карма +"><img src="/components/users/images/karma_up.png" alt="Карма +"/></a>';
  13. $minus = '<a href="/users/karma/minus/'.$user_id.'/'.$inUser->id.'" onclick="minusUkarma(\''.$user_id.'\', \''.$inUser->id.'\'); return false;" title="Карма -"><img src="/components/users/images/karma_down.png" alt="Карма -"/></a>';
  14. }
  15. }
  16.  
  17. $html = '<table cellpadding="2" cellspacing="0"><tr>';
  18. $html .= '<td style="color:green">'.$plus.'</td>';
  19. if($karma>0){
  20. $html .= '<td><span class="user_karma_point">+'.$karma.'</span></td>';
  21. } elseif ($karma<0){
  22. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  23. } else {
  24. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  25. }
  26. $html .= '<td style="color:red">'.$minus.'</td>';
  27. $html .= '</tr></table>';
  28.  
  29. return $html;
  30. }
Заменяем на:

  1. public static function getKarmaFormat($user_id, $showtitle=false, $controls=true){
  2. //calculate positive karma
  3. $inUser = self::getInstance();
  4. $karma = self::getKarma($user_id);
  5.  
  6. $inDB = cmsDatabase::getInstance();
  7. $sql = "SELECT karma FROM cms_user_profiles WHERE user_id =".$inUser->id;
  8. $result = $inDB->query($sql);
  9. while($usr = $inDB->fetch_assoc($result)){
  10. $users=$usr['karma'];
  11. }
  12. $plus = '';
  13. $minus = '';
  14.  
  15. if ($inUser->id && $controls){
  16. if(usrCanKarma($user_id, $inUser->id)){
  17.  
  18. $plus = '<a href="/users/karma/plus/'.$user_id.'/'.$inUser->id.'" onclick="plusUkarma(\''.$user_id.'\', \''.$inUser->id.'\'); return false;" title="Карма +"><img src="/components/users/images/karma_up.png" alt="Карма +"/></a>';
  19. if ($users >= 10) {
  20. $minus = '<a href="/users/karma/minus/'.$user_id.'/'.$inUser->id.'" onclick="minusUkarma(\''.$user_id.'\', \''.$inUser->id.'\'); return false;" title="Карма -"><img src="/components/users/images/karma_down.png" alt="Карма -"/></a>';
  21. }
  22. }
  23. }
  24.  
  25. $html = '<table cellpadding="2" cellspacing="0"><tr>';
  26. $html .= '<td style="color:green">'.$plus.'</td>';
  27. if($karma>0){
  28. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  29. } elseif ($karma<0){
  30. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  31. } else {
  32. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  33. }
  34. $html .= '<td style="color:red">'.$minus.'</td>';
  35. $html .= '</tr></table>';
  36.  
  37. return $html;
  38. }
Теперь в новом коде находим:
  1. if ($users >= 10)
И цифру 10 заменяем, на тот уровень кармы пользователя, при которой пользователь сможет иметь доступ к ссылке чтобы минусануть пользователя. Теперь пока пользователю не плюсанут карму, другие пользователи, он не сможет не кого минусовать.
Если Вы хотите чтобы пользователь с кармой меньше установленного нами уровня, не мог и плюсовать других пользователей тогда
  1. if ($users >= 10) {
необходимо перенести и прописать перед строкой :
  1. $plus = '<a href="/users/karma/plus/'.$user_id.'/'.$inUser->id.'" onclick="plusUkarma(\''.$user_id.'\', \''.$inUser->id.'\'); return false;" title="Карма +"><img src="/components/users/images/karma_up.png" alt="Карма +"/></a>';
Теперь он не сможет и плюсовать других.

вот подумалось что можно привязать и к рейтингу тогда пока пользователь не проявит себя на сайте на лояльность и вменяемость не смог и участвовать в «кармических войнах»
0
Katerina Katerina 13 лет назад #
Спасибо большое! Попробую сегодня.

вот подумалось что можно привязать и к рейтингу
Появится другая проблема: у меня пользователи регистрируются по нескольку раз, чтобы рейтинг себе накручивать. Просто активно за свои комменты голосуют.
+1
picaboo picaboo 13 лет назад #
Лучше к рейтингу. Он же считается из коментариев и статей. Добавил полезного контента и воюй.
0
Katerina Katerina 13 лет назад #
Три плюсовых коммента со смайликами - и рейтинга уже достаточно, чтоб карму повышать... Контента же не прибавилось.

Может вообще запретить голосовать за ВСЕ, пока рейтинга нет или кармы. То есть новый пользователь писать может, а голосовать будет только тогда когда его записи оценят другие пользователи. У меня сейчас конкурс проходит, так десять человек с одного ip в течении 2х дней пришло, наплюсовали себе комментов типа "Спасибки", заплюсовали друг другу карму и голосуют друг за друга в конкурсе.
0
RooKee RooKee 13 лет назад #
Смотрим ЛС. Добавляем Силуsmileили Заряд. Кому как гра.
0
SP SP 13 лет назад #
Добро
0
Maximov Maximov 13 лет назад #
А что стоит "Кармическому воину" первым делом поднять карму своих новичков-виртуалов и в бой?

ИМХО надо на рейтинг смотреть + время на сайте.
0
FES FES 13 лет назад #
Добрый день.
Да это отличная мысль, нужно рейтинг однозначно.
Только я бы хотел еще и предложить несколько иную ижею, если воплотить - будет грейтб:
- образно, рейтинг начисляется +1 за вход на сайт в день, не зашел, не получил;
- и когда ты прибавляешь рейтинг другому челу - ты сразу минусуешь свой, пример как в LineAge II - рек (рекомендация, синий НИК)...ОК ?
0
Михаил М. Михаил М. 13 лет назад #
образно, рейтинг начисляется +1 за вход на сайт в день, не зашел, не получил
А если за день зашёл 3 раза, то +3?
0
FES FES 13 лет назад #
нет, хоть зайди 4 раза, рейтинг только +1
0
maia maia 13 лет назад #
Мне кажется, что лучше не когда прибавляешь рейтинг другому минусуешь свой, а когда убавляешь рейтинг другого - свой минусуется. Не в том же объеме, но вполовину, например. Т.е. проголосовал против коммента - снизил рейтинг на -2, а свой на -1.
0
Михаил М. Михаил М. 13 лет назад #
Отлично! Сегодня привяжу доступ к рейтингу.
0
Coolmax Coolmax 13 лет назад #
Прикрутил? Очень хотелось бы чтоб человеки с отрицательным рейтингом с чужой кармой не баловался.
0
reload reload 13 лет назад #
Так по немного приблизимся к хабра)
0
RooKee RooKee 13 лет назад #
постыдного ничего нет. система рейтинга там отличная. Социальный фактор доминирует.

Еще от автора

Система оценок пользователей в общих и личных фотоальбомах.
Плагин позволяет зарегистрированным пользователям оценивать фото в общих и личных фотоальбомах, по пятибалльной шкале (т.е. от 1 до 5).
Вывод голосовавших за фото, в постах блога и статьях сайта (3в1)
Всем привет! Поступило предложение объединить три ранее созданных плагина выводивших голосовавших в один, сделав одной кнопкой.
Вывод голосовавших (+/-) за фото.
Плагин выводит голосовавших за фото в общих альбомах.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.