Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Web-мастер"


Технологии web-програмирования


 #0 Galenfea © 23.07.07 17:39:46 - 24.07.07 14:57:26

PHP. IPB 2.1.7 Мод репутации. Как пользователям запретить понижать репутацию?



PHP. Есть мод репутации, который можно скачать тут
Сам я в пхп не разбираюсь, но мне хотелось кое-что изменить в нём.

В теме поддержки мода мне никто не говорит, что надо дописать в файле reputation.php (файл отвечающий за поднятие и опускание репутации вобще) и profile.php (файл отвечающий за поднятие и опускание репутации из профиля пользователя), чтобы в профиле (то есть без привязки к постам) мог менять репутцию только админ (ещё я спрашивал чтобы и супермодератор, но поразмыслив решил, что не стоит) и только админ (ещё я спрашивал чтобы и супермодератор, но поразмыслив решил, что не стоит) мог бы опускать пользователям репутацию.

Мне предложили такой вариант.

Для профиля


Заменить в sources/action_public/profile.php

//-------------------------------------­----
            // Reputation
            //-------------------------------------­----

            $info['reputation_text'] = $this->ipsclass->lang['reputation­'];
            if (($this->ipsclass->member['id'] != $member['id']) && ($this->ipsclass->member['posts'] >= $this->ipsclass->vars['rep_posts'­]))
            {
                $info['reputation_minus'] = "<@a href='java script:rep_change_window_open(\"{$­this->ipsclass->base_url}act=rep&a­mp;amp;type=win_minus&amp;mid={$memb­er['id']}\");' title='{$this->ipsclass->lang['re­p_dec']}'>{$this->ipsclass->lan­g['minus']}</a>";
                $info['reputation_add'] = "<@a href='java script:rep_change_window_open(\"{$­this->ipsclass->base_url}act=rep&a­mp;amp;type=win_add&amp;mid={$member­['id']}\");' title='{$this->ipsclass->lang['re­p_inc']}'>{$this->ipsclass->lan­g['plus']}</a>";
            }
            else
            {
                $info['reputation_minus'] = "{$this->ipsclass->lang['min­us_disabled']}";
                $info['reputation_add'] = "{$this->ipsclass->lang['plu­s_disabled']}";
            }
            $info['reputation_scores'] = "<@a href='{$this->ipsclass->base_url}­act=rep&amp;type=history&amp;mid­={$member['id']}' title='{$this->ipsclass->lang['vi­ew_rep']}'>{$member['reputation']}<­;/a>";


на


//-------------------------------------­----
            // Reputation
            //-------------------------------------­----

            $info['reputation_text'] = $this->ipsclass->lang['reputation­'];
            if ($this->ipsclass->member['mgroup'­] == $this->ipsclass->vars['admin_grou­p'] || $this->ipsclass->member['is_mod']­)
            {
                $info['reputation_minus'] = "<@a href='java script:rep_change_window_open(\"{$­this->ipsclass->base_url}act=rep&a­mp;amp;type=win_minus&amp;mid={$memb­er['id']}\");' title='{$this->ipsclass->lang['re­p_dec']}'>{$this->ipsclass->lan­g['minus']}</a>";
                $info['reputation_add'] = "<@a href='java script:rep_change_window_open(\"{$­this->ipsclass->base_url}act=rep&a­mp;amp;type=win_add&amp;mid={$member­['id']}\");' title='{$this->ipsclass->lang['re­p_inc']}'>{$this->ipsclass->lan­g['plus']}</a>";
            }
            else
            {
                $info['reputation_minus'] = "{$this->ipsclass->lang['min­us_disabled']}";
                $info['reputation_add'] = "{$this->ipsclass->lang['plu­s_disabled']}";
            }
            $info['reputation_scores'] = "<@a href='{$this->ipsclass->base_url}­act=rep&amp;type=history&amp;mid­={$member['id']}' title='{$this->ipsclass->lang['vi­ew_rep']}'>{$member['reputation']}<­;/a>";


Эффект который я наблюдаю таков, что кнопки изменения репутации в профиле не видны никому (в т. ч. и модерам) кроме админа. Так что, это меня устраивает, вроде как.

И для понижения репутации вообще

В файле source/action_public/reputation.php функции check_permissions после

//Guest cannot vote!
                if(!$this->ipsclass->member['id']­)
                    $this->error_window(1);

написать

//User cannot fo "minus" :)
                if($this->type == "minus" && ($this->ipsclass->member['mgroup'­] != $this->ipsclass->vars['admin_grou­p'] || $this->ipsclass->member['is_mod']­))
                    $this->error_window(13);

затем

$this->ipsclass->lang['error_12']­);

заменить на

$this->ipsclass->lang['error_12']­,
$this->ipsclass->lang['error_13']­
);

и
в файл lang_reputation после


'error_12' => "Анонимные изменения репутации отключены",


добавить

'error_13' => "Только админы и модеры могут понижать репутацию",


В общем, этот кусок у меня не работает. Почему-то, никто не может  понижать репутацию, когда я вбиваю эти строки, в том числе и админ.

Больше я ничего не могу на том форуме добиться, может здесь кто знает как это осуществить?

Примечание: @ - символ вставляемый в <@a href чтобы фильтр спама форума Дремучих пропустил код. Цитата

 #1 Galenfea © 23.07.07 21:34:59

Подскажите хоть, что по вашему эта конструкция делает? Может в ней всё дело?

if($this->type == "minus" && ($this->ipsclass->member['mgroup'­­] != $this->ipsclass->vars['admin_grou­­p'] || $this->ipsclass->member['is_mod']­­))
                    $this->error_window(13);
 #2 Deep © 24.07.07 11:08:03

>  #1   Galenfea ©
эта конструкция выдает пользователю (скорее всего, что у него не хватает прав) ошибку при выполнении перечисленных в начале условий (если минус, т.е. понижение репутации, пользователь не в группе админов и $this->ipsclass->member['is_mod­'­]­ - что это за проверка не знаю).
 #3 Galenfea © 24.07.07 13:33:50

Проверка на принадлежность к группе модераторов, кажется. Я сразу не врубился, думал ошибка не может быть простой. Точно "И"? Я тут думал, что || это ИЛИ. Выходило бы, что если не верно, что юзер админ или модератор, то ошибка. А  юзер всегда не будет либо админом, если он модер, либо модером, если он админ.
Надо проверить... Что-то я сразу пхп испугался, а ведь логика такая же, как в паскале.

отправлено с мобилки
 #4 Deep © 24.07.07 14:57:26

>#3   Galenfea ©
&&  И
!= НЕ
|| ИЛИ




  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов