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

+17
1.29K
Продолжение, для тех кто хочет ограничить доступ к карме в профиле пользователя по рейтингу пользователя, т.е. пользователи с нулевым рейтингом, или с рейтингом меньше установленого уровня, не мог минусовать карму другого пользователя. Продолжаем...

Находим файл:
/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. $raiting=$inUser->rating;
  6. $plus = '';
  7. $minus = '';
  8.  
  9. if ($inUser->id && $controls){
  10. if(usrCanKarma($user_id, $inUser->id)){
  11.  
  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. if ($raiting >= 100) {
  14. $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>';
  15. }
  16. }
  17. }
  18.  
  19. $html = '<table cellpadding="2" cellspacing="0"><tr>';
  20. $html .= '<td style="color:green">'.$plus.'</td>';
  21. if($karma>0){
  22. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  23. } elseif ($karma<0){
  24. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  25. } else {
  26. $html .= '<td><span class="user_karma_point">'.$karma.'</span></td>';
  27. }
  28. $html .= '<td style="color:red">'.$minus.'</td>';
  29. $html .= '</tr></table>';
  30.  
  31. return $html;
  32. }
Теперь в новом коде находим:
if ($raiting >= 100)
И цифру 100 заменяем, на тот уровень рейтинга пользователя на сайте, при котором он сможет иметь доступ к ссылке чтобы минусануть пользователя. Теперь пока пользователь не не наберёт определённый уровень рейтина, он не сможет не кого минусовать.
Если Вы хотите чтобы пользователь с рейтингом меньше установленного нами уровня, не мог и плюсовать других пользователей тогда
if ($users >= 100) {
необходимо перенести и прописать перед строкой :
  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>';
Теперь он не сможет и плюсовать других, пока не наберёт необходимого рейтинга на сайте проявив себя, во всей красе cry
P.S. В следующем посте доберёмся до рейтинга (голосования)…
+1
picaboo picaboo 12 лет назад #
шикарноsmile

а if ($raiting >= 100) - будет в других местах движка работать? я бы лично у себя еще пару мест закрыл чтобы не спамили ссылками :)
+1
reload reload 12 лет назад #
Будет интересней если установить на "+" один предел а на "-" другой
Спойлер
0
Михаил М. Михаил М. 12 лет назад #
Немного поправлю код выше чтобы ошибки не было
Код PHP:
if ($raiting >= 50)  {
                 $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>';
                 }
                 if ($raiting >= 100)  {

                 $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>';
0
Telema93 Telema93 12 лет назад #
ребята, давайте собирать все в одну кучу, хотябы ссылками
0
Telema93 Telema93 12 лет назад #
но тема хорошая! Но объедини что мешает? без подколов. реально уже в сайте найти что-то сложно
0
Майкл Майкл 12 лет назад #
Вот возьмитесь и сделайте что то подобное:
http://instantcms.ru/blogs/interesnoe-na-sait/zakladki.html

А закладками не пользуетесь?
0
picaboo picaboo 12 лет назад #
Да тоже не выход. логично было бы создание тут на сайте 4-х клубов: модули, компоненты, хаки, шаблоны. И пусть народ бы туда постил. В идеале еще в каждом клубе по две категории, платные/бесплатные. Сугубо имхо, помидоры лучше в салат употребите ;)

Еще от автора

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