Trotor Posted February 9, 2014 Share Posted February 9, 2014 Вот всё таки в админке не хватает одного функционала - отключение возможности пользоваться репутацией определённому пользователю. Можно ли написать небольшой фикс для такого? Форум - 3.1.4 Link to comment Share on other sites More sharing options...
siv1987 Posted February 9, 2014 Share Posted February 9, 2014 Давно для себя хотел написать такую функцию, даже собрался, изучил код, а потом как-то все запустил. Открыть /admin/applications/members/skin_cp/cp_skin_member.phpНайти $form_reputation_points = ipsRegistry::getClass('output')->formInput( 'pp_reputation_points', $member['pp_reputation_points'] ); Ниже добавить $form_reputation_off = ipsRegistry::getClass('output')->formYesNo( "reputation_off", intval($member['_cache']['reputation_off']) ); Найти <tr> <td><strong>{$this->lang->words['frm_no_status']}</strong></td> <td> <span id='MF__frm_no_status'>{$bw_no_status_update}</span> </td> </tr> Ниже добавить <tr> <td><strong>Disable reputation?</strong></td> <td> <span id='MF__reputation_off'>{$form_reputation_off}</span> </td> </tr> Открыть /admin/applications/members/modules_admin/members/members.phpНайти 'show_notification_popup' => intval($this->request['show_notification_popup']) Заменить на 'show_notification_popup' => intval($this->request['show_notification_popup']), 'reputation_off' => intval($this->request['reputation_off']) Открыть /admin/sources/classes/class_reputation_cache.phpНайти /* Online? */ if( ! $this->rep_system_on ) { $this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_offline']; return false; } Ниже добавить $_cache = ipsRegistry::member()->getProperty('_cache'); if( $_cache['reputation_off'] ) { $this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_offline']; return false; } Админцентр -> Пользователи -> %Пользователь% -> Профиль -> Disable reputation?Возможный минус - настройка прикреплена к кешу пользователя, если кеш каким-то образом очистится, настройка слетит. 1 Link to comment Share on other sites More sharing options...
Trotor Posted February 9, 2014 Author Share Posted February 9, 2014 Всё работает отлично, дело в моде улучшенной репутации (который добавляет комментарии). Как бы пофиксить? Link to comment Share on other sites More sharing options...
Trotor Posted February 9, 2014 Author Share Posted February 9, 2014 В файл хука ah30ReputationCoreFunctions.php сейчас попробую добавить инфу Link to comment Share on other sites More sharing options...
Trotor Posted February 9, 2014 Author Share Posted February 9, 2014 В файл хука ah30ReputationCoreFunctions.php сейчас попробую добавить инфуДобавил. Работает. Большое спасибо за нужный функционал. Link to comment Share on other sites More sharing options...
siv1987 Posted February 9, 2014 Share Posted February 9, 2014 Если это файл из папки /hooks/ то нужно проверить в бд чтобы небыло кеша (core_hooks_files -> hooks_source), иначе изменения слетят. Link to comment Share on other sites More sharing options...
Trotor Posted February 9, 2014 Author Share Posted February 9, 2014 Если это файл из папки /hooks/ то нужно проверить в бд чтобы небыло кеша (core_hooks_files -> hook_sources), иначе изменения слетят.Перестроил весь кеш - изменения сохранились. Link to comment Share on other sites More sharing options...
Dmitriy427 Posted February 10, 2014 Share Posted February 10, 2014 Перестроил весь кеш - изменения сохранились.Изменения файла из папки /hooks слетят когда вы попрбуете переимпортировать все хуки. Но этой возможностью пользоваться не рекомендуется вообще, лучше переустанавливать при нужде. 1 Link to comment Share on other sites More sharing options...
Trotor Posted February 10, 2014 Author Share Posted February 10, 2014 слетят когда вы попрбуете переимпортировать все хуки. Но этой возможностью пользоваться не рекомендуется вообще, лучше переустанавливать при нужде.Никогда таким не занимался. Довольно стрёмное дело. P.S. Можно маленький фикс? Позволить модераторам (супермодераторам) через панель профиля отключать репутацию у пользователей? Link to comment Share on other sites More sharing options...
Trotor Posted March 3, 2019 Author Share Posted March 3, 2019 Есть вопрос опять по репутации, но думаю новая тема для этого не нужна, решил написать в этой. Удалил в шаблоне отображение нулевой репутации в темах, всё бы хорошо, однако если репутация равная (например 2 минуса и 2 плюса), то тогда не показывается такой блок.Как бы сделать так что бы такая нулевая репутация отображалась, но в тоже время не было отображения блока если нет совсем балов репутации? Link to comment Share on other sites More sharing options...
siv1987 Posted March 3, 2019 Share Posted March 3, 2019 Но у пользователя же все равно нулевая репутация, что там показывать? По простому никак, нужно делать запрос в бд. Сумма баллов репутации находится в таблицы пользователя pp_reputation_points, а кто голосовал в другой таблице. Link to comment Share on other sites More sharing options...
Trotor Posted March 3, 2019 Author Share Posted March 3, 2019 Но у пользователя же все равно нулевая репутация, что там показывать? По простому никак, нужно делать запрос в бд. Сумма баллов репутации находится в таблицы пользователя pp_reputation_points, а кто голосовал в другой таблице. Засада. А ради такой мелочи делать лишние запросы к БД тоже не вариант. Link to comment Share on other sites More sharing options...
siv1987 Posted March 3, 2019 Share Posted March 3, 2019 Да и не получится скорее всего, потому что там находится только ид пользователя кто голосовал. Кому нужно джонить с другими таблицами. Link to comment Share on other sites More sharing options...
Trotor Posted March 3, 2019 Author Share Posted March 3, 2019 потому что там находится только ид пользователя кто голосовалА если указать в условии что если в сообщение есть кто голосовал, то тогда появляется? То есть сделать два условия. Примерно так:<if test="Условие указывающее что в сообщение есть голоса"> <if test="hasNoRep:|:$post['post']['rep_points'] == 0"><span class='reputation zero rep_show{parse variable="repClickable"}' {parse variable="canViewRep"}>{parse replacement="repapostpoints"} {$post['post']['rep_points']}</if> </if> Link to comment Share on other sites More sharing options...
siv1987 Posted March 3, 2019 Share Posted March 3, 2019 Что-то я немного запутался. Конечно, если речь о репутации сообщения тогда такие данные кто голосовал там имеются. Но только не в вашей версии IPB 3.1, там опять немного другая структура.Хотя можно добавить новую переменную в коде с условием если запись в таблице есть, значит репутция у этого сообщения имеется. Открыть \admin\applications\forums\modules_public\forums\topics.php Найти /* Reputation */ if( $this->settings['reputation_enabled'] ) {Ниже добавить $row['has_rep'] = isset( $row['rep_points'] ); В шаблоне использовать $post['post']['has_rep']. True если сообщение имеет репутацию. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now