Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Фикс для отключение репутации

Опубликовано:

Вот всё таки в админке не хватает одного функционала - отключение возможности пользоваться репутацией определённому пользователю.

 

Можно ли написать небольшой фикс для такого?

 

Форум - 3.1.4

Рекомендованные сообщения

Опубликовано:

Давно для себя хотел написать такую функцию, даже собрался, изучил код, а потом как-то все запустил.

 

Открыть /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?

Возможный минус - настройка прикреплена к кешу пользователя, если кеш каким-то образом очистится, настройка слетит.

Опубликовано:
  • Автор

Всё работает отлично, дело в моде улучшенной репутации (который добавляет комментарии). Как бы пофиксить?

Опубликовано:
  • Автор

В файл хука ah30ReputationCoreFunctions.php сейчас попробую добавить инфу

Опубликовано:
  • Автор

В файл хука ah30ReputationCoreFunctions.php сейчас попробую добавить инфу

Добавил. Работает.

 

Большое спасибо за нужный функционал.

Опубликовано:

Если это файл из папки /hooks/ то нужно проверить в бд чтобы небыло кеша (core_hooks_files -> hooks_source), иначе изменения слетят.

Опубликовано:
  • Автор

Если это файл из папки /hooks/ то нужно проверить в бд чтобы небыло кеша (core_hooks_files -> hook_sources), иначе изменения слетят.

Перестроил весь кеш - изменения сохранились.

Опубликовано:

Перестроил весь кеш - изменения сохранились.

Изменения файла из папки /hooks слетят когда вы попрбуете переимпортировать все хуки. Но этой возможностью пользоваться не рекомендуется вообще, лучше переустанавливать при нужде.

Опубликовано:
  • Автор

слетят когда вы попрбуете переимпортировать все хуки. Но этой возможностью пользоваться не рекомендуется вообще, лучше переустанавливать при нужде.

Никогда таким не занимался. Довольно стрёмное дело.

 

P.S. Можно маленький фикс? Позволить модераторам (супермодераторам) через панель профиля отключать репутацию у пользователей?

  • 5 лет спустя...
Опубликовано:
  • Автор

Есть вопрос опять по репутации, но думаю новая тема для этого не нужна, решил написать в этой.

 

Удалил в шаблоне отображение нулевой репутации в темах, всё бы хорошо, однако если репутация равная (например 2 минуса и 2 плюса), то тогда не показывается такой блок.

Как бы сделать так что бы такая нулевая репутация отображалась, но в тоже время не было отображения блока если нет совсем балов репутации?

Опубликовано:

Но у пользователя же все равно нулевая репутация, что там показывать? По простому никак, нужно делать запрос в бд.

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

Опубликовано:
  • Автор

Но у пользователя же все равно нулевая репутация, что там показывать? По простому никак, нужно делать запрос в бд.

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

Засада. А ради такой мелочи делать лишние запросы к БД тоже не вариант.

Опубликовано:

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

Опубликовано:
  • Автор

потому что там находится только ид пользователя кто голосовал

А если указать в условии что если в сообщение есть кто голосовал, то тогда появляется?

 

То есть сделать два условия. Примерно так:

<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>

Опубликовано:

Что-то я немного запутался. Конечно, если речь о репутации сообщения тогда такие данные кто голосовал там имеются. Но только не в вашей версии 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 если сообщение имеет репутацию.

Опубликовано:
  • Автор

В шаблоне использовать $post['post']['has_rep']. True если сообщение имеет репутацию.

Спасибо, то что надо!

 

Ниже добавить

Лишней нагрузки на темы это не будет давать?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.