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

Помогите с БД


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

Имеется форум на движке версии 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' => 'Деньги',

 

 

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

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

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

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

ну а прочитать мануал по мускулю ведь можно). На форуме много тем, где можно найти ответ (поиск). Из бекапа вырываются запросы и вгоняются в phpmyadmin
Ссылка на комментарий
Поделиться на других сайтах

Такое поле уже есть в существующей таблице. Задача сложить это поле для каждого юзера со значением поля из бэкапа БД.
Ссылка на комментарий
Поделиться на других сайтах

×
×
  • Создать...

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

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