Перейти к контенту
  • 0

Не работает ограничение репутации для группы


proit

Вопрос

Создал новую группу, выставил ограничение 0/0 для +/- к выставлению репутации.

Решил зарегиться для проверки и понаставлять +/- и каково было мое удивление, когда я смог это сделать.

Возможно, кто то уже сталкивался с этим багом и уже знает решение, прошу помощи.

Ссылка на комментарий
Поделиться на других сайтах

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

  • 0
Вряд ли стоит надеяться.. Это баг исключительно мода расширенной репутации. Здесь стоит уповать лишь на возможный интузиазм здешних спецов: Ritsuka, FatCat, либо каким-нибудь образом донести о выявленной проблеме разработчику мода.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Оказалось, просто это не было предусмотрено хуком.

Написать фикс не проблема, когда проблема ясна:D

В общем ищем в hooks/ah30ReputationCoreFunctions.php строки:

 

/* Day Cutoff */
	$day_cutoff = time() - 86400;

	/* Check Max Positive Votes */
	if( ipsRegistry::member()->getProperty( 'g_rep_max_positive' ) &&  $rating == 1 )
	{
		$total = ipsRegistry::DB()->buildAndFetch( array( 
															'select' => 'count(*) as votes', 
															'from'   => 'reputation_index', 
															'where'  => 'member_id=' . ipsRegistry::member()->getProperty( 'member_id' ) . ' AND rep_rating=1 AND rep_date > ' . $day_cutoff
														)	);

		if( $total['votes'] >= ipsRegistry::member()->getProperty( 'g_rep_max_positive' ) )
		{
			$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_quota_pos'];
			return false;				
		}
	}

	/* Check Max Negative Votes */
	if( ipsRegistry::member()->getProperty( 'g_rep_max_negative' ) && $rating == -1 )
	{
		$total = ipsRegistry::DB()->buildAndFetch( array( 
															'select' => 'count(*) as votes', 
															'from'   => 'reputation_index', 
															'where'  => 'member_id=' . ipsRegistry::member()->getProperty( 'member_id' ) . ' AND rep_rating=-1 AND rep_date > ' . $day_cutoff
													)	);

		if( $total['votes'] >= ipsRegistry::member()->getProperty( 'g_rep_max_negative' ) )
		{
			$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_quota_neg'];
			return false;				
		}
	}

Заменяем на:

 

/* Day Cutoff */
	$day_cutoff = time() - 86400;

	/* FIX PROIT. Check Reputation Quota*/		 
	if( !ipsRegistry::member()->getProperty( 'g_rep_max_positive' ) && !ipsRegistry::member()->getProperty( 'g_rep_max_negative' ) )
	{
		$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_offline'];
		return false;	 
	}

	/* FIX PROIT. Check Max Positive Votes */
	if( $rating == 1 )
	{
		if( !ipsRegistry::member()->getProperty( 'g_rep_max_positive' ) )
		{
			$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_offline'];
			return false;
		}

		$total = ipsRegistry::DB()->buildAndFetch( array( 
															'select' => 'count(*) as votes', 
															'from'   => 'reputation_index', 
															'where'  => 'member_id=' . ipsRegistry::member()->getProperty( 'member_id' ) . ' AND rep_rating=1 AND rep_date > ' . $day_cutoff
														)	);

		if( $total['votes'] >= ipsRegistry::member()->getProperty( 'g_rep_max_positive' ) )
		{
			$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_quota_pos'];
			return false;				
		}
	}		

	/* FIX PROIT. Check Max Negative Votes */
	if( $rating == -1 )
	{
		if( !ipsRegistry::member()->getProperty( 'g_rep_max_negative' ) )
		{
			$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_offline'];
			return false;
		}

		$total = ipsRegistry::DB()->buildAndFetch( array( 
															'select' => 'count(*) as votes', 
															'from'   => 'reputation_index', 
															'where'  => 'member_id=' . ipsRegistry::member()->getProperty( 'member_id' ) . ' AND rep_rating=-1 AND rep_date > ' . $day_cutoff
													)	);

		if( $total['votes'] >= ipsRegistry::member()->getProperty( 'g_rep_max_negative' ) )
		{
			$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_quota_neg'];
			return false;				
		}
	}

 

Теперь, когда выдача оценок для группы запрещена, будет показываться табличка "Rating failed: Вы исчерпали лимит положительных оценок на сегодня"

 

Еще рекомендую убрать дублирование кода. Удалите блок:

 

if( $rating == -1 AND ipsRegistry::$settings['reputation_point_types'] == 'positive' )
	{
		$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_invalid'];
		return false;
	}

	if( $rating == 1 AND ipsRegistry::$settings['reputation_point_types'] == 'negative' )
	{
		$this->error_message = ipsRegistry::instance()->getClass( 'class_localization' )->words['reputation_invalid'];
		return false;
	}

Вот так все просто;)

P.S. Фикс актуален для AH30_Reputation_1.0.2_FIX_RU

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Подскажите пожалуйста, у меня вылетает ошибка при добавлении репутации:

 

Rating failed: <html>

<head><title>502 Bad Gateway</title></head>

<body bgcolor="white">

</body>

</html>

 

где копатЬ?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.