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

Помогите с SQL запросом


Wolf Messing

Вопрос

Имеется форум на движке версии 2.1.7. Установлен вот такой мод денег:

Xtreme Points System for IPB 2.1

Шаг 1: Админ Панель > Выполнить SQL запрос

ALTER TABLE `ibf_forums` ADD `points_post` INT( 10 ) DEFAULT '20' NOT NULL;
ALTER TABLE `ibf_forums` ADD `points_reply` INT( 10 ) DEFAULT '20' NOT NULL;
ALTER TABLE `ibf_members` ADD `points` INT( 10 ) DEFAULT '100' NOT NULL;

Здесь можно изменить:
'100' - начальное число денег. Рекомендую 0.00$
'20' - деньги, которые зачисляются за открытие новой темы. Рекомендую 0.02$
'10' - деньги, которые зачисляются за каждое новое сообщение. Рекомендую 0.01$

Шаг 2: Администрация

Открываем - ./skin_acp/IPB2_Standard/acp_skin_html/cp_skin_forums.php 

--- Ищем ---

	<tr>
  		<td width='40%' class='tablerow1'><strong>Выберите родительский форум или категорию</strong></td>
  		<td width='60%' class='tablerow2'>{$form['parent_id']}</td>
	</tr>

--- Добавить после ---

	<tr>
  		<td width='40%' class='tablerow1'><strong>Новая почтовая награда</strong></td>
  		<td width='60%' class='tablerow2'>{$form['points_post']}</td>
	</tr>
	<tr>
  		<td width='40%' class='tablerow1'><strong>Награда ответа</strong></td>
  		<td width='60%' class='tablerow2'>{$form['points_reply']}</td>
	</tr>

<<< СОХРАНЯЕМ >>>

Открываем - ./sources/action_admin/forums.php

--- Ищем ---

	//-----------------------------------------
	// NEW
	//-----------------------------------------

	else
	{
		$forum = array(
						'sub_can_post' => $subcanpost,
						'name'		 => $f_name,
						'parent_id'	=> $parentid,

--- После добавляем ---

						'points_post'  => '20',
						'points_reply' => '20',

--- Ищем ---

	# Main settings
	$form['name']		 = $this->ipsclass->adskin->form_input(   'name'		, $this->ipsclass->parse_clean_value( $_POST['name'] ) ? $this->ipsclass->parse_clean_value( $_POST['name'] ) : $forum['name'] );
	$form['description']  = $this->ipsclass->adskin->form_textarea("description" , $this->ipsclass->my_br2nl( $_POST['description'] ? $_POST['description'] : $forum['description'] ) );
	$form['parent_id']	= $this->ipsclass->adskin->form_dropdown("parent_id"   , $forumlist, $_POST['parent_id'] ? $_POST['parent_id']	: $forum['parent_id'] );

--- Добавляем после ---

	$form['points_post']  = $this->ipsclass->adskin->form_input('points_post'	, $_POST['points_post'] ? $_POST['points_post'] : $forum['points_post'] );
	$form['points_reply'] = $this->ipsclass->adskin->form_input('points_reply'   , $_POST['points_reply'] ? $_POST['points_reply'] : $forum['points_reply'] );


--- Ищем ---

					 'parent_id'			   => intval($this->ipsclass->input['parent_id']),

--- Добавляем после ---

					 'points_post'			 => intval($this->ipsclass->input['points_post']),
					 'points_reply'			=> intval($this->ipsclass->input['points_reply']),

<<< СОХРАНЯЕМ >>>

Открываем ./sources/action_admin/member.php

--- Ищем ---

	$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Количество сообщений</b>" ,
											  $this->ipsclass->adskin->form_input("posts", $mem['posts'])
									 )	  );

--- Добавляем после ---

	$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Деньги</b>" ,
											  $this->ipsclass->adskin->form_input("points", $mem['points'])
									 )	  );

--- Ищем ---

													  'posts'			  => $this->ipsclass->input['posts'],

---Добавляем после ---

													  'points'			 => $this->ipsclass->input['points'],

<<< СОХРАНЯЕМ >>>

Шаг 3: Главная часть

Открываем ./sources/action_public/profile.php

--- Ищем ---

	//-----------------------------------------
	// Get custom profile information
	//-----------------------------------------

	require_once( ROOT_PATH.'sources/classes/class_custom_fields.php' );
	$fields = new custom_fields( $this->ipsclass->DB );

	$fields->member_id   = $this->ipsclass->member['id'];
	$fields->mem_data_id = $member['id'];
	$fields->cache_data  = $this->ipsclass->cache['profilefields'];
	$fields->admin	   = intval($this->ipsclass->member['g_access_cp']);
	$fields->supmod	  = intval($this->ipsclass->member['g_is_supmod']);

	$fields->init_data();
	$fields->parse_to_view();

--- Добавляем после ---

	$custom_out .= $this->ipsclass->compiled_templates['skin_profile']->custom_field($this->ipsclass->lang['points'] , $this->ipsclass->do_number_format($member['points']) );

<<< СОХРАНЯЕМ >>>

Открываем ./sources/action_public/topics.php

--- Ищем ---

	//-----------------------------------------
	// Profile fields stuff
	//-----------------------------------------

	if ( $this->ipsclass->vars['custom_profile_topic'] == 1 )
	{

--- Добавляем после ---

		$member['custom_fields'] .= "\n".$this->ipsclass->lang['points'].': '.$this->ipsclass->do_number_format($member['points']).'<br />';

<<< СОХРАНЯЕМ >>>

Открываем ./sources/classes/post/class_post.php

--- Ищем ---

/*-------------------------------------------------------------------------*/
// Increment user's post
// ------------------
// if +1 post, +1 member's cumulative
/*-------------------------------------------------------------------------*/

function pf_increment_user_post_count()

--- Добавляем перед ---


/*-------------------------------------------------------------------------*/
// Increase/Decrease Points
/*-------------------------------------------------------------------------*/

function pf_update_user_points($points_type)
{
	$pcount = "";

	if ($this->ipsclass->member['id'])
	{

		$pcount = "points=points+".$this->forum[$points_type];



		$this->ipsclass->DB->simple_construct( array( 'update' => 'members',
													  'set'	=> $pcount,
													  'where'  => 'id='.$this->ipsclass->member['id']
											 )	  );

		$this->ipsclass->DB->simple_exec();
	}	
}

<<< СОХРАНЯЕМ >>>

Открываем ./sources/classes/post/class_post_new.php

--- Ищем ---

	//-----------------------------------------
	// If we are a member, lets update thier last post
	// date and increment their post count.
	//-----------------------------------------

	$this->pf_increment_user_post_count();

--- Добавляем перед ---

	//-----------------------------------------
	// If we are a member, update points
	//-----------------------------------------

	$this->pf_update_user_points('points_post');

<<< СОХРАНЯЕМ >>>

Открываем ./sources/classes/post/class_post_reply.php

--- Ищем ---

	//-----------------------------------------
	// If we are a member, lets update thier last post
	// date and increment their post count.
	//-----------------------------------------

	if ( ! $this->is_merging_posts )
	{
		$this->pf_increment_user_post_count();
	}

--- Добавляем перед ---

	//-----------------------------------------
	// If we are a member, update points
	//-----------------------------------------

	if ( ! $this->is_merging_posts )
	{
		$this->pf_update_user_points('points_reply');
	}

<<< СОХРАНЯЕМ >>>

Открываем ./sources/sql/mysql_queries.php

--- Ищем ---

function topics_get_posts( $a )
{
	# topics.php

	return "SELECT p.*,

--- Добавляем после p.*, ---

m.points, 

--- Ищем ---

function topics_get_posts_with_join( $a )
{
	# topics.php

	return "SELECT p.*,

--- Добавляем Добавляем после p.*, ---

m.points, 

<<< СОХРАНЯЕМ >>>

Открываем ./cache/lang_cache/ru/lang_global.php

--- Ищем ---

$lang = array (

--- Добавляем после ---

'points' => 'Деньги',

 

Нужно пользователям с определёнными id(около 30-50 человек) прплюсовать через БД к имеющимся деньгам ещё определённую сумму(одну и ту же). Подскажите, как можно это сделать через запрос к БД.

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

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

  • 0

И снова запрос)

Мод денег тот же. При установке мода магазина случайно дропнута таблица, которая создаваеться этим запросом:

ALTER TABLE `ibf_members` ADD `points` INT( 10 ) DEFAULT '100' NOT NULL;

Таблица восстановлена заново. Перед установкой мода был сделан бэкап БД. Теперь надо к имеющимся сейчас значениям в этом поле в БД форума приплюсовать те, что были в БД на момент её бэкапа.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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