Как можно сбросить Reputation Points на оригинал - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

репутация

Страница 1 из 1

Как можно сбросить Reputation Points на оригинал

#1 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 19 Июль 2011 - 11:59

Как можно сбросить счетчик Reputation Points на оригинал, для всех. IPB 3.1.4
0

#2 Пользователь не на сайте   Fisana ответил: »

 
 
  • На PM не отвечаю
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 13 190
  • Регистрация: 21-Ноябрь 05
  • Репутация: 695
  • Откуда:Из интернетов
  • IPB version:3.1.x
 

Отправлено 19 Июль 2011 - 13:25

Не вполне понятен вопрос.

Имеется ввиду сбросить значения счетчика?
0

#3 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 20 Июль 2011 - 12:50

ну если оригинальны репутация +48 но я дал ему +20, через админку ... хочу сделать сброс Reputation Points на оригинал, для всех.

Сообщение изменено: Qartvela™ (20 Июль 2011 - 12:53)

0

#4 Пользователь не на сайте   Vitalik-x ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 162
  • Регистрация: 16-Декабрь 07
  • Репутация: 3
  • IPB version:3.4.x
 

Отправлено 14 Март 2012 - 18:51

Очень заинтересовал данный вопрос.
Есть стандартные функции в 3.2.3 Инструменты пересчета и обновления
Вот только репутации там нет!
0

#5 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 260
  • Регистрация: 20-Март 09
  • Репутация: 2 070
  • IPB version:3.1.x
 

Отправлено 15 Март 2012 - 01:08

Просмотреть сообщениеQartvela™ сказал(а):

ну если оригинальны репутация +48 но я дал ему +20, через админку ... хочу сделать сброс Reputation Points

Отнять так же, как и давали. Функции по пересчета репутации нету.

Вот моя с локалхоста. Под 3.2 не знаю если будет работать, не проверял.
Осторожно, хардкод!

1. Открыть /admin/applications/core/skin_cp/cp_skin_rebuild.php

Найти
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm'  id='theAdminForm'>
	<input type='hidden' name='do' value='domsgcounts' />


Выше добавить
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm'  id='theAdminForm'>
	<input type='hidden' name='do' value='doreputations' />
	<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
	
	<div class='acp-box'>
		<h3>Пересчитать репутацию</h3>

		<ul class='acp-form alternate_rows'>
			<li>
				<label>Пересчитать баллы репутации<span class='desctext'>Будет пересчитана репутация пользователей</span></label>
				{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
			</li>
		</ul>		
		<div class='acp-actionbar'>
			<input type='submit' value='Пересчет репутации' class='button primary' accesskey='s'>
		</div>
	</div>
</form><br />


2. Открыть /admin/applications/core/modules_admin/tools/rebuild.php
Найти
			case 'dopostnames':


Выше добавить
			case 'doreputations':
				$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'tools_rebuild' );
				$this->rebuildReputations();
			break;


Найти
	/**
	 * Rebuild Post Thumbnails
	 *
	 * @return	void
	 */
	public function rebuildThumbnails()


Выше добавить
	/**
	 * Rebuild Post Reputation
	 *
	 * @return	void
	 */
	public function rebuildReputations()
	{
		$done   = 0;
		$start  = intval( $this->request['st'] );
		$end    = intval( $this->request['pergo'] ) ? intval( $this->request['pergo'] ) : 100;
		$dis    = $end + $start;
		$output = array();
		$max    = intval( $this->request['max'] );
		$nfound = array();
		$found  = array();

		//-----------------------------------------
		// Got any more?
		//-----------------------------------------

		if( ! $max )
		{
			$tmp = $this->DB->buildAndFetch( array(  'select' => 'COUNT(*) as count', 'from' => 'members', 'order' => 'member_id ASC' ) );
			$max = intval( $tmp['count'] );
		}

		//-----------------------------------------
		// Avoid limit...
		//-----------------------------------------

		$this->DB->build( array(  'select' => 'member_id', 'from'   => 'members', 'order'  => 'member_id ASC', 'limit'  => array($start,$end) ) );
		$this->DB->execute();

		$members_id = array();
		while( $row = $this->DB->fetch() )
		{
			$members_id[] = $row['member_id'];
		}

		$this->DB->build( array( 'select' => 'SUM(ri.rep_rating) as sum',
								 'from'   => array( 'reputation_index' => 'ri' ),
								 'where'  => 'ri.type="pid" AND app="forums"',
								 'group'  => 'p.author_id',
								 'order'  => 'p.author_id ASC',
								 'add_join' => array(
								 	0 => array( 'select' => 'p.author_id',
												'from'   => array( 'posts' => 'p' ),
												'where'  => 'author_id IN ('.implode(',', $members_id).') AND p.pid=ri.type_id',
												'type'   => 'left',
									)
								 ),
		) );
		$outer = $this->DB->execute();

		//-----------------------------------------
		// Process...
		//-----------------------------------------

		while( $row = $this->DB->fetch( $outer ) )
		{
			if( $row['author_id'] )
			{
				$this->DB->update( 'profile_portal', array( 'pp_reputation_points' => $row['sum'] ), 'pp_member_id='.$row['author_id'] );
				$found[] = $row['author_id'];

				$done++;
			}
		}

		//---------------------------------------
		// Update members who have not found
		//---------------------------------------

		$nfound = array_diff( $members_id, $found );

		if( count($nfound) )
		{
			$this->DB->update( 'profile_portal', array('pp_reputation_points' => 0), 'pp_member_id IN ('.implode(',', $nfound).')' );
		}

		//-----------------------------------------
		// Finish - or more?...
		//-----------------------------------------

		if ( ! $done OR $dis >= $max )
		{
		 	//-----------------------------------------
			// Done..
			//-----------------------------------------

			$text = $this->lang->words['re_rebuildcomp'] . '<br />' . implode( "<br />", $output );
			$url  = "{$this->settings['base_url']}{$this->form_code}";
			$time = 2;
		}
		else
		{
			//-----------------------------------------
			// More..
			//-----------------------------------------
			$output[] = 'Update members '.$done;

			$thisgoeshere = sprintf( $this->lang->words['re_thisgoeshere'], $dis );
			$text = $thisgoeshere . '<br />' . implode( "<br />", $output );
			$url  = "{$this->settings['base_url']}{$this->form_code}&do={$this->request['do']}&pergo={$this->request['pergo']}&st={$dis}&max={$max}";
			$time = 1;
		}

		//-----------------------------------------
		// Bye....
		//-----------------------------------------

		$this->registry->output->redirect( $url, $text, $time );
	}


3

#6 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 25 Октябрь 2014 - 02:52

siv1987,
А можно такое же но для тем? Что бы пересчитать кол-во тем у пользователей?
0

#7 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 260
  • Регистрация: 20-Март 09
  • Репутация: 2 070
  • IPB version:3.1.x
 

Отправлено 25 Октябрь 2014 - 13:14

Тем? Я не помню такого счетчика у пользователей. Есть счетчик сообщений и его можно обновить стандартными средствами пересчета. Количество тем форума также можно пересчитать оттуда.
0

#8 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 25 Октябрь 2014 - 21:38

Просмотреть сообщениеsiv1987 сказал(а):

Тем? Я не помню такого счетчика у пользователей.

Кастомно подключил, через хук. Показывает кол-во созданных тем пользователя, информацию берёт с таблицы members с поля topics_started
0

#9 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 260
  • Регистрация: 20-Март 09
  • Репутация: 2 070
  • IPB version:3.1.x
 

Отправлено 25 Октябрь 2014 - 22:58

Это можно обновить и простым sql запросам по аналогии с обновлением постов:

UPDATE ibf_members m LEFT JOIN (SELECT COUNT(*) as total, starter_id FROM ibf_topics GROUP BY starter_id) t ON t.starter_id=m.member_id SET m.topics_started=t.total

или
UPDATE ibf_members SET topics_started=(SELECT COUNT(*) FROM ibf_topics WHERE starter_id=member_id)

Для конкретного пользователя добавить в конце запроса условие - WHERE member_id=ид_пользователя
1

#10 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 25 Октябрь 2014 - 23:39

Просмотреть сообщениеsiv1987 сказал(а):

Это можно обновить и простым sql запросам по аналогии с обновлением постов:

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

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна