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

Опубликовано:
Редактировалось: 2 раза — последний 3 июля 2015
Просмотров: 912
+6
Голосов: 6

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

И так начнем.

Находим файл:

/core/classes/user.class.php

Далее:

Находим код:

Код 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" border="0" 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" border="0" 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. }

Заменяем на:

Код PHP:
  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" border="0" 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" border="0" 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. }

Теперь в новом коде находим:

Код PHP:
  1. if ($users >= 10)

И цифру 10 заменяем, на тот уровень кармы пользователя, при которой пользователь сможет иметь доступ к ссылке чтобы минусануть пользователя. Теперь пока пользователю не плюсанут карму, другие пользователи, он не сможет не кого минусовать.

Если Вы хотите чтобы пользователь с кармой меньше установленного нами уровня, не мог и плюсовать других пользователей тогда

Код PHP:
  1. if ($users >= 10) {

необходимо перенести и прописать перед строкой :

Код PHP:
  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" border="0" alt="Карма +"/></a>';

Теперь он не сможет и плюсовать других.

P.S. вот подумалось что можно привязать и к рейтингу тогда пока пользователь не проявит себя на сайте на лояльность и вменяемость не смог и участвовать в «кармических войнах»....

Комментарии (6)
MAGer #
Рейтинг: +1
Отличная штука!!! smile и нужная... я в свое время предлагал подобное, но никто не захотел сделать... и с рейтингами нужно сделать то же самое.
У меня вообще была мысль, если человек, допустим к статье нажимает "Нравится", то за кого он голосует прибавляется 5, а у того, кто голосует снимается 2... таким образом выражается благодарность... а если ставишь "Не нравится", то за кого голосуешь снимается 5, а у того, кто голосует снимается 10. Таким образом человек выражает недовольство, но при это сам теряет.
Михаил М. #
Рейтинг: +1
я в свое время предлагал подобное, но никто не захотел сделать... и с рейтингами нужно сделать то же самое
Просто не попалось на глаза, а то бы сделал раньше. Сейчас занялся рейтингом, вот и думаю какие санкции к "минусаторам" применить.
MAGer #
Рейтинг: +1
Кто жмет минус, у того же отнимать в два раза больше баллов)
MAGer #
Рейтинг: +1
Да, еще мысль по поводу кармы.
Как бы сделать так, чтобы карма менялась автоматически в зависимости от рейтинга. Скажем, каждый +500 рейтинга награждается автоматически +5 кармы.
Letsgo #
Рейтинг: 0
Эх вы.. надо чтоб люди спорили, а вы рубите сук.
Letsgo #
Рейтинг: 0
Чем больше споров и плюс минусов, тем лучше и интереснее. Создавать эдакую идиллию на сайте, будет скучно людям. Но единственное, надо чтобы было видно кто минусует.

Голосуем

Самый нужный компонент