------------------ Мод медали ------------------
Автор: ycl6
Адаптировал под версию TP 2.4.11: DimaUZB2001
----------------------------------- Открыть library/includes/init_bb.php и найти --------------------------------------------------------------------

define('BB_WORDS', 'bb_words');

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

//Medal MOD
define('POST_MEDAL_URL', 'm');	// Medal MOD
define('MEDAL_CAT_URL', 'mc');	// Medal MOD
define('PAGE_MEDALS', -2115);	// Medal MOD

define('BB_MEDAL', 'bb_medal');		// Medal MOD
define('BB_MEDAL_MOD', 'bb_medal_mod');	// Medal MOD
define('BB_MEDAL_USER', 'bb_medal_user');	// Medal MOD
define('BB_MEDAL_CAT', 'bb_medal_cat');	// Medal MOD

------------------------------- library/includes/functions.php добавить в конец -------------------------------------------------------------

// Medals
function check_medal_mod($medal_id)
{
	global $userdata;

	$sql = "SELECT *
	FROM " . BB_MEDAL_MOD . "
	WHERE medal_id =" . $medal_id;

	if ( !($result = DB()->sql_query($sql)) )
	{
		bb_die('Could not obtain user and medal information');
	}

	$medal_info = array();
	$found = FALSE;
	while ( $medal_info = DB()->sql_fetchrow($result) )
	{

		$medal_moderator = $medal_info['user_id'];

		if ( $medal_moderator == $userdata['user_id'] )
		{
			$found = TRUE;
		}
	}
	DB()->sql_freeresult($result);

	return $found;
}

-----------------------------------------------------------------------------------------------------------------------
------------------------------------ library/language/ru/main.php и самый внизу добавить ------------------------------

// Medal MOD
$lang['Medals'] = 'Администраторы медали';
$lang['Medal_Config'] = 'Настройка мода наград';
$lang['Medal_Config_explain'] = 'Эта форма позволит вам настроить общие параметры наград';
$lang['Medal_setting'] = 'Настройки наград';
$lang['Allow_medal'] = 'Показывать медали в темах';
$lang['Medal_rand'] = 'Разрешить случайное изображение наград в темах';
$lang['Medal_rand_explain'] = 'Изображение будет отображаться в случайном порядке, только если вы позволите показывать награды в теме';
$lang['Medal_display'] = 'Таблица наград (строки х столбцы)';
$lang['Medal_display_explain'] = 'Определить, сколько строк и столбцов таблицы должно быть в теме.<br /> Лучше всего поставить значение <b>1х3</b>.';
$lang['Medal_size'] = 'Максимальный размер награды в теме';
$lang['Medal_size_explain'] = '(Высота x ширина в пикселах)<br />Если оставить поля пустыми, награда будет в оригинальном размере';
$lang['Click_return_medalcfg'] = '%sВернуться%s к настройке мода наград';
$lang['Medal_admin'] = 'Управление наградами';
$lang['Medal_admin_explain'] = 'Из этой панели можно управлять всеми вашими наградами. Вы можете удалять, создавать и редактировать существующие награды.';
$lang['Updated_medal'] = 'Медаль была успешно обновлена';
$lang['Updated_medal_category'] = 'Категория успешно обновлена';
$lang['Added_new_medal'] = 'Новая медаль была успешно создана';
$lang['Added_new_category'] = 'Новая категория была успешно создана';
$lang['Deleted_medal'] = 'Награда успешно удалена';
$lang['Deleted_medal_category'] = 'Категория успешно удалена';
$lang['New_medal'] = 'Новая награда';
$lang['medal_name'] = 'Название награды';
$lang['medal_description'] = 'Описание награды';
$lang['medal_image'] = 'Изображение награды';
$lang['medal_image_explain'] = 'Используйте это, чтобы определить изображение, связанное с медалью <br /> (Относительно phpBB2 корневой каталог)';
$lang['No_medal_name'] = 'Вы должны указать имя для этой медали';
$lang['No_medal_description'] = 'Вы должны указать описание для этой медали';
$lang['No_medal_image'] = 'Вы должны указать изображения для этой медали';
$lang['Must_select_medal'] = 'Необходимо указать медаль';
$lang['Click_return_medaladmin'] = '%sВернуться к управлению наградами%s';
$lang['Medal_mod'] = 'Модератор награды';
$lang['Medal_mod_admin'] = 'Администрация медали';
$lang['Medal_mod_admin_explain'] = 'Из этой панели можно назначить модератора медали.';
$lang['Medal_mod_username'] = 'Назначить одного или нескольких пользователей модераторами награды';
$lang['Medal_unmod_username'] = 'Удалить одного или нескольких модераторов';
$lang['Medal_unmod_username_explain'] = 'Выделите модератора(ов) которых нужно удалить';
$lang['No_medal_mod'] = 'Модератор не назначен';
$lang['No_medal_in_cat'] = 'Нет медали в этой категории';
$lang['Must_delete_medal'] = 'Вы должны удалить все медали, прежде чем удалить эту категорию';
$lang['Category_delete'] = 'Delete Medal Category';
$lang['Category_delete_explain'] = 'Форма позволит вам удалить категорию и решить, куда вы хотите поместить все медали, которые в ней содержатся.';
$lang['Move_medals'] = 'Перемещение медали';
$lang['Category_name'] = 'Название категории';
$lang['Medal_mod_update_sucessful'] = 'Модератор медали был успешно обновлен';
$lang['Click_return_medal_mod_admin'] = '%sВернуться к администрированию медалей.%s';
//Medal MOD [END]

// Medal MOD
$lang['Medal_Control_Panel'] = 'Панель управления наградой';
$lang['Medals'] = 'Награды';
$lang['View_More'] = 'Подробнее';
$lang['Medal_amount'] = 'Количество: ';
$lang['Medal_Information'] = 'Информация о награде';
$lang['Medal_name'] = 'Название';
$lang['Medal_description'] = 'Описание награды';
$lang['Medal_image'] = 'Изображение';
$lang['Medal_details'] = 'Подробнее';
$lang['Medal_reason'] = 'Причина награждения';
$lang['Medal_reason_explain'] = 'Вы можете написать причину награждения<br />Это поле не обязательно для заполнения';
$lang['Medal_no_reason'] = '<i>Не указана</i>';
$lang['Medal_time'] = 'Время награждения';
$lang['Medal_moderator'] = 'Модератор награды';
$lang['No_medal_mod'] = 'Модератор еще не назначен';
$lang['Medal_userlist'] = 'У кого есть?';
$lang['Medal_Members'] = 'Награжденные пользователи';
$lang['Medal_Members_explain'] = 'Нажмите на никнейм, чтобы отредактировать причину вручения';
$lang['No_medal_members'] = 'Никто еще не награжден';
$lang['No_medals_exist'] = 'Нет Медалей';
$lang['Medal_not_exist'] = 'Это медаль не существует';
$lang['No_username_specified'] = 'Не задано имя пользователя';
$lang['No_medal_id_specified'] = 'Медаль не указана';
$lang['Medal_user_username'] = 'Наградить пользователя';
$lang['Medal_unmedal_username'] = 'Удалить эту награду у одного или нескольких пользователей';
$lang['Medal_unmedal_username_explain'] = 'Выделите пользователей у которых нужно убрать награду';
$lang['Medal_added'] = 'Вы были награждены этой медалью.';
$lang['Medal_update_sucessful'] = 'Изменения внесены успешно';
$lang['Could_not_anonymous_user'] = 'Нельзя давать награду Anonymous';
$lang['Not_medal_moderator'] = 'Вы не модератор этой награды';
$lang['Link_to_cp'] = 'Управление наградой';
$lang['Click_return_medal'] = '%sВернуться к управлению наградой%s';
$lang['No_medal'] = 'Нет медали в наличии';
//Medal MOD [END]

----------------------------- viewtopic.php и найти -------------------------------------------------

 $template->assign_block_vars('postrow', [

----------------------------- перед добавить ---------------------------------------------------------

	// Medal MOD
	$medal ='';
	$sql = "SELECT m.medal_id, m.medal_name
		FROM " . BB_MEDAL . " m, " . BB_MEDAL_USER . " mu
		WHERE mu.user_id = '" . $postrow[$i]['user_id'] . "'
		AND m.medal_id = mu.medal_id
		ORDER BY m.medal_name";

	if(!$result = DB()->sql_query($sql))
	{
		bb_die("Error getting medal information");
	}

	$medal_list = DB()->sql_fetchrowset($result);
	$medal_count = count($medal_list);

	if ( $postrow[$i]['user_id'] == GUEST_UID )
	{
		$medal_count = '';
	}
	else
	{
		$medal_count = ($medal_count) ? $lang['Medals'] . ': <b>' . $medal_count . '</b>' . '  (<a href="profile.php?mode=viewprofile&amp;'. POST_USERS_URL .'='. $postrow[$i]['user_id'] . '#medal" class="gensmall">' . $lang['View_More'] . '</a>)' : $lang['Medals'] . ': ' . $lang['NONE'];
	}
        //Medal [END]

-----------------------------------------------------------------------------------------------------------------------------
-------------------------------------- Найти --------------------------------------------------------------------------------
	
	'POSTER_AVATAR' => $poster_avatar,
	
------------------------------------ добавить -------------------------------------------------------------------------------
	
	'POSTER_MEDAL_COUNT' => $medal_count, 

-------------------------------------- найти ---------------------------------------------------------------------------------
	
	    'RG_SIG_ATTACH' => $postrow[$i]['attach_rg_sig']
         ]);
	
------------------------------------- добавить -------------------------------------------------------------------------------
	
	//Medal MOD
	if ( $bb_cfg['dis_medal_display'] )
	{
		$order = ( $bb_cfg['medal_display_order'] ) ? "RAND()" : "m.medal_name";

		$template->assign_block_vars('postrow.medal', array());

		$sql = "SELECT m.medal_id, m.medal_name, m.medal_image
			FROM " . BB_MEDAL . " m, " . BB_MEDAL_USER . " mu
			WHERE mu.user_id = '" . $poster_id . "'
			AND m.medal_id = mu.medal_id
			ORDER BY " . $order;

		if ($result = DB()->sql_query($sql))
		{
			$rowset = array();
			while ($row = DB()->sql_fetchrow($result))
			{
				$rowset[$row['medal_image']]['medal_name'] = $row['medal_name'];
				if ($rowset[$row['medal_image']]['medal_name'] == $row['medal_name'])
				$rowset[$row['medal_image']]['medal_count'] = 1;
			}

			// Check Medal config in ACP
			$medal_rows = $bb_cfg['medal_display_row'];
			$medal_cols = $bb_cfg['medal_display_col'];
			$medal_width = ( $bb_cfg['medal_display_width'] ) ? 'width="'.$bb_cfg['medal_display_width'].'"' : '';
			$medal_height = ( $bb_cfg['medal_display_height'] ) ? 'height="'.$bb_cfg['medal_display_height'].'"' : '';

			if ($medal_list)
			{
				$split_row = $medal_cols - 1;

				$s_colspan = 0;
				$row = 0;
				$col = 0;

				foreach ($rowset as $medal_image => $medal)
				{
					if (!$col)
			       		{
						$template->assign_block_vars('postrow.medal.medal_row', array());
					}

					$template->assign_block_vars('postrow.medal.medal_row.medal_col', array(
						'MEDAL_IMAGE' => BB_ROOT . $medal_image,
						'MEDAL_WIDTH' => $medal_width,
						'MEDAL_HEIGHT' => $medal_height,
						'MEDAL_NAME' => $medal['medal_name'],
						'MEDAL_COUNT' => '('. $lang['Medal_amount'] . $medal['medal_count']. ')')
					);

					$s_colspan = max($s_colspan, $col + 1);

					if ($col == $split_row)
					{
						if ($row == $medal_rows - 1)
						{
							break;
						}
						$col = 0;
						$row++;
					}
					else
					{
						$col++;
					}
				}
			}
		}
		DB()->sql_freeresult($result);
	}
      //Medal MOD [END]
	
----------------------------------------------------------------------------------------------------------------------------------------------------------	
------------------------------- Открыть styles/templates/default/viewtopic.tpl и найти --------------------------------------------------------------------
	
	<!-- IF postrow.POSTER_FROM --><p class="from"><em>{L_LOCATION}:</em> {postrow.POSTER_FROM}</p><!-- ENDIF -->
	
-------------------------------------------------------- после добавить ------------------------------------------------------------------------------------------
	
		<br /><br />{postrow.POSTER_MEDAL_COUNT}<br />
		<hr>
		<center>
		<!-- BEGIN medal -->
	    <table border="0" cellspacing="0" cellpadding="5">
		<!-- BEGIN medal_row -->
		<tr align="left" valign="middle">
		<!-- BEGIN medal_col -->
		<td><img src="{postrow.medal.medal_row.medal_col.MEDAL_IMAGE}" border="0" alt="{postrow.medal.medal_row.medal_col.MEDAL_NAME} {postrow.medal.medal_row.medal_col.MEDAL_COUNT}" title="{postrow.medal.medal_row.medal_col.MEDAL_NAME} {postrow.medal.medal_row.medal_col.MEDAL_COUNT}" {postrow.medal.medal_row.medal_col.MEDAL_WIDTH} {postrow.medal.medal_row.medal_col.MEDAL_HEIGHT} /></td>
		<!-- END medal_col -->
		</tr>
		<!-- END medal_row -->
	</table>
	<!-- END medal -->
	</center>
	
----------------------------------------------------------------------------------------------------------------------------------------------------------	
------------------------------ Открыть styles/templates/default/usercp_viewprofile.tpl и найти ----------------------------------------------------------------------------
	
		<h4 class="cat border bw_TB">{L_CONTACT}&nbsp;{USERNAME}</span></h4>
	
------------------------------------------- перед добавить ----------------------------------------------------------------------------------------------------------------
	
	<!-- BEGIN switch_display_medal -->
       <h4 class="cat border bw_TB" style="color:#000;">Награды {USERNAME}</h4>
        <!-- BEGIN details -->
        &nbsp;{switch_display_medal.details.MEDAL_IMAGE_SMALL}&nbsp;
        <!-- END details -->
        <!-- END switch_display_medal -->
		
----------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------ Открыть styles/templates/default/page_header.tpl и найти ----------------------------------------------------------------------------------

<a href="{U_MEMBERLIST}"><b>{L_MEMBERLIST}</b></a><span style="color:#CDCDCD;">|</span>

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

<a href="medals.php"><b>Медали</b></a><span style="color:#CDCDCD;">|</span>

------------------------------------ Открыть library/includes/ucp/viewprofile.php и найти -------------------------------------------------------------------------------
	
} else {
    $email = '';
}

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

// Medal MOD

//
// Category
//

$sql = "SELECT cat_id, cat_title
	FROM " . BB_MEDAL_CAT . "
	ORDER BY cat_order";
if( !($result = DB()->sql_query($sql)) )
{
	bb_die('Could not query medal categories list');
}

$category_rows = array();
while ( $row = DB()->sql_fetchrow($result) )
{
	$category_rows[] = $row;
}
DB()->sql_freeresult($result);

$sql = "SELECT m.medal_id, mu.user_id
	FROM " . BB_MEDAL . " m, " . BB_MEDAL_USER . " mu
	WHERE mu.user_id = '" . $profiledata['user_id'] . "'
	AND m.medal_id = mu.medal_id
	ORDER BY m.medal_name";

if($result = DB()->sql_query($sql))
{
	$medal_list = DB()->sql_fetchrowset($result);
	$medal_count = count($medal_list);

	if ( $medal_count )
	{
		$medal_count = '<b>' . $medal_count . '</b>';

		$template->assign_block_vars('switch_display_medal', array());

		$template->assign_block_vars('switch_display_medal.medal', array(
			'MEDAL_BUTTON' => '<button onclick="ToggleBox(\'toggle_medal\')">'.$lang['Medal_details'].'</button>')
		);
	}
}

for ($i = 0; $i < count($category_rows); $i++)
{
	$cat_id = $category_rows[$i]['cat_id'];

	$sql = "SELECT m.medal_id, m.medal_name,m.medal_description, m.medal_image, m.cat_id, mu.issue_reason, mu.issue_time, c.cat_id, c.cat_title
		FROM " . BB_MEDAL . " m, " . BB_MEDAL_USER . " mu, " . BB_MEDAL_CAT . " c
		WHERE mu.user_id = '" . $profiledata['user_id'] . "'
		AND m.cat_id = c.cat_id
		AND m.medal_id = mu.medal_id
		ORDER BY c.cat_order, m.medal_name, mu.issue_time";

	if ($result = DB()->sql_query($sql))
	{
		$row = $rowset = array();
		$medal_time = $lang['Medal_time'] . ':&nbsp;';
		$medal_reason = $lang['Medal_reason'] . ':&nbsp;';
		while ($row = DB()->sql_fetchrow($result))
		{
			if (empty($rowset[$row['medal_name']]))
			{
				$rowset[$row['medal_name']]['cat_id'] = $row['cat_id'];
				$rowset[$row['medal_name']]['cat_title'] = $row['cat_title'];
				$rowset[$row['medal_name']]['medal_description'] = $row['medal_description'];
				$rowset[$row['medal_name']]['medal_image'] = $row['medal_image'];
				$row['issue_reason'] = ( $row['issue_reason'] ) ? $row['issue_reason'] : $lang['Medal_no_reason'];
				$rowset[$row['medal_name']]['medal_issue'] = '<tr><td><span class="genmed">' . $medal_time . bb_date($row['issue_time']) . '</span></td></tr><tr><td><span class="genmed">' . $medal_reason . $row['issue_reason']  . '</span><hr></td></tr>';
				$rowset[$row['medal_name']]['medal_count'] = '1';
			}
			else
			{
				$row['issue_reason'] = ( $row['issue_reason'] ) ? $row['issue_reason'] : $lang['Medal_no_reason'];
				$rowset[$row['medal_name']]['medal_issue'] .= '<tr><td><span class="genmed">' . $medal_time . bb_date($row['issue_time']) . '</span></td></tr><tr><td><span class="genmed">' . $medal_reason . $row['issue_reason'] . '</span><hr /></td></tr>';
				$rowset[$row['medal_name']]['medal_count'] += '1';
			}
		}

		$medal_width = ( $bb_cfg['medal_display_width'] ) ? 'width="'.$bb_cfg['medal_display_width'].'"' : '';
		$medal_height = ( $bb_cfg['medal_display_height'] ) ? 'height="'.$bb_cfg['medal_display_height'].'"' : '';

		$medal_name = array();
		$data = array();

		//
		// Should we display this category/medal set?
		//
		$display_medal = 0;

		foreach ($rowset as $medal_name => $data)
		{
			if ( $cat_id == $data['cat_id'] ) { $display_medal = 1; }

			if ( !empty($display_medal) )
			{
				$template->assign_block_vars('switch_display_medal.details', array(
					'MEDAL_CAT' => $data['cat_title'],
					'MEDAL_NAME' => $medal_name,
					'MEDAL_DESCRIPTION' => $data['medal_description'],
					'MEDAL_IMAGE' => '<img src="'. BB_ROOT . $data['medal_image'] . '" border="0" alt="' . $medal_name . '" title="' . $medal_name . '" />',
					'MEDAL_IMAGE_SMALL' => '<img src="'. BB_ROOT . $data['medal_image'] . '" border="0" alt="' . $medal_name . '" title="' . $medal_name . '"' . $medal_width . $medal_height . ' />',
					'MEDAL_ISSUE' => $data['medal_issue'],
					'MEDAL_COUNT' => $lang['Medal_amount'] . $data['medal_count'],

					'L_MEDAL_DESCRIPTION' => $lang['Medal_description'])
				);
				$display_medal = 0;
			}
		}
	}
}
//Medal MOD [END]

----------------------------------------------------------- найти ---------------------------------------------------------------------------------------------------

'TRAF_STATS' => !(IS_AM || $profile_user_id),

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

	'L_USER_MEDAL' => $lang['Medals'],	// Medal MOD
	'USER_MEDAL_COUNT' => $medal_count,	// Medal MOD
	'L_MEDAL_INFORMATION' => $lang['Medal_Information'], // Medal MOD
	'L_MEDAL_NAME' => $lang['Medal_name'],		// Medal MOD
	'L_MEDAL_DETAIL' => $lang['Medal_details'],	// Medal MOD

-------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------- Выполнить запрос базы в папке SQL есть два выбора --------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------- КОНЕЦ ---------------------------------------------------------------------------------------