Медали

Медали 1.0.0

Нет прав для скачивания
Совместимость
проверялся на совместимость
Изменения в БД
требуются
Автор
Wertos
Общественное достояние
да
Описание: добавляет систему наград для пользователей в виде виртуальных медалей.
Инструкция по установке
Код:
SQL

CREATE TABLE IF NOT EXISTS `bb_medal` (
  `medal_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `cat_id` mediumint(8) unsigned NOT NULL DEFAULT '1',
  `medal_name` varchar(40) NOT NULL,
  `medal_description` varchar(255) NOT NULL,
  `medal_image` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`medal_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `bb_medal_cat` (
  `cat_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `cat_title` varchar(100) NOT NULL,
  `cat_order` mediumint(8) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`cat_id`),
  KEY `cat_order` (`cat_order`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `bb_medal_mod` (
  `mod_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `medal_id` mediumint(8) unsigned NOT NULL,
  `user_id` mediumint(8) unsigned NOT NULL,
  PRIMARY KEY (`mod_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `bb_medal_user` (
  `issue_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `medal_id` mediumint(8) unsigned NOT NULL,
  `user_id` mediumint(8) unsigned NOT NULL,
  `issue_reason` varchar(255) NOT NULL,
  `issue_time` int(11) NOT NULL,
  PRIMARY KEY (`issue_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

INSERT INTO `bb_config` VALUES('dis_medal_display', '1');
INSERT INTO `bb_config` VALUES('medal_display_row', '1');
INSERT INTO `bb_config` VALUES('medal_display_col', '3');
INSERT INTO `bb_config` VALUES('medal_display_width', '');
INSERT INTO `bb_config` VALUES('medal_display_height', '');
INSERT INTO `bb_config` VALUES('medal_display_order', '0');


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

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;
}
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', array(

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

    // 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;

                while (list($medal_image, $medal) = @each($rowset))
                {
                    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]
   
   
    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>
   
   
    usercp_viewprofile.tpl
   
    найти
   
    <h4 class="cat border bw_TB" id="username">{L_CONTACT} <span class="editable bold">{USERNAME}</span></h4>
   
    перед добавить
   
        <!-- BEGIN switch_display_medal -->
        <!-- BEGIN details -->
        &nbsp;{switch_display_medal.details.MEDAL_IMAGE_SMALL}&nbsp;
        <!-- END details -->
        <!-- END switch_display_medal -->
       
usercp_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;

        while (list($medal_name, $data) = @each($rowset))
        {
            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
Автор
Exile
Скачивания
85
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Exile

Сверху