Подарки

Подарки 1.0.0

Нет прав для скачивания
Совместимость
не проверялся на совместимость
Изменения в БД
требуются
Автор
_Xz_
Общественное достояние
да
Описание: добавляет систему обмена виртуальными подарками между пользователями. Некий аналог системы обмена подарками в социальных сетях. Подарки покупаются за сидбонусы. У администратора есть возможность добавления неограниченного числа категорий подарков и самих подарков.
Инструкция по установке
PHP:
##############################################################
## Название мода: Подарки
## Автор мода: _Xz_ http://torrentpier.com/members/_xz_.2/
## Описание мода: Мод позволяет дарить подарки пользователям за очки сидирования
##
## Уровень инсталяции: простой
## Время установки: 5 минут
##############################################################


#
#--[SQL]--------------------------------
#

CREATE TABLE IF NOT EXISTS `bb_presents` (
  `present_id` mediumint(8) unsigned NOT NULL auto_increment,
  `present_name` varchar(255) default NULL,
  `present_pic` varchar(255) default NULL,
  `present_price` mediumint(8) NOT NULL default '0',
  `present_active` tinyint(1) NOT NULL default '1',
  `present_type` mediumint(8) default '0',
  PRIMARY KEY  (`present_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `bb_users_presents` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `user_id` mediumint(8) default '0',
  `present_id` mediumint(8) default '0',
  `given_id` mediumint(8) NOT NULL default '0',
  `time` int(11) NOT NULL default '0',
  `given_hide` tinyint(1) NOT NULL default '0',
  `comment` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

INSERT INTO `bb_config` VALUES ('presents', '1');

#
#-----[ OPEN ]------------------------------------------
#

init_bb.php

#
#-----[ FIND ]------------------------------------------
#

define('BB_WORDS',                'bb_words');

#
#-----[ BEFORE, ADD ]-----------------------------------
#

define('BB_PRESENTS',              'bb_presents');
define('BB_USERS_PRESENTS',         'bb_users_presents');

#
#-----[ OPEN ]------------------------------------------
#

admin_board.php

#
#-----[ FIND ]------------------------------------------
#

'SEED_BONUS_USER_REGDATE' => $new['seed_bonus_user_regdate'],

#
#-----[ AFTER, ADD ]-----------------------------------
#

'PRESENTS' => $new['presents'],

#
#-----[ OPEN ]------------------------------------------
#

admin_board.tpl

#
#-----[ FIND ]------------------------------------------
#

<tr>
    <td><h4>{L_SEED_BONUS}</h4></td>
    <td>
        <label><input type="radio" name="seed_bonus_enabled" value="1" <!-- IF SEED_BONUS_ENABLED -->checked="checked"<!-- ENDIF --> />{L_ENABLED}</label>&nbsp;&nbsp;
        <label><input type="radio" name="seed_bonus_enabled" value="0" <!-- IF not SEED_BONUS_ENABLED -->checked="checked"<!-- ENDIF --> />{L_DISABLED}</label>
    </td>
</tr>

#
#-----[ AFTER, ADD ]-----------------------------------
#

<tr>
    <td><h4>{L_PRESENTS}</h4></td>
    <td>
        <label><input type="radio" name="presents" value="1" <!-- IF PRESENTS -->checked="checked"<!-- ENDIF --> />{L_ENABLED}</label>&nbsp;&nbsp;
        <label><input type="radio" name="presents" value="0" <!-- IF not PRESENTS -->checked="checked"<!-- ENDIF --> />{L_DISABLED}</label>
    </td>
</tr>

#
#-----[ OPEN ]------------------------------------------
#

usercp_viewprofile.php

#
#-----[ FIND ]------------------------------------------
#

print_page('usercp_viewprofile.tpl');

#
#-----[ BEFORE, ADD ]-----------------------------------
#

if ($bb_cfg['seed_bonus_enabled'] && $bb_cfg['presents'])
{
    $count = DB()->fetch_row("SELECT COUNT(present_id) as present FROM ". BB_USERS_PRESENTS ." WHERE user_id = {$profiledata['user_id']}");

    $start = isset($_REQUEST['start']) ? abs(intval($_REQUEST['start'])) : 0;

    if($count['present'])
    {
        $sql = DB()->fetch_rowset("SELECT pre.*, p.*, u.username, u.user_rank FROM ". BB_USERS_PRESENTS ." pre, ". BB_PRESENTS ." p, ". BB_USERS ." u WHERE pre.present_id = p.present_id AND pre.given_id = u.user_id AND pre.user_id = {$profiledata['user_id']} ORDER BY pre.time DESC LIMIT $start, 8");

        $presentrow = array();
        foreach($sql as $row)
        {
            $presentrow[] = $row;
        }

        if (!$presentrow)
        {
            $template->assign_block_vars('not_present', array());
        }

        for ($j = 0; $j < count($presentrow); $j += 4)
        {
            $template->assign_block_vars('presentrow', array());

            for ($i = $j; $i < ($j + 4); $i++)
            {
                if( $i >= count($presentrow) )
                {
                    $template->assign_block_vars('presentrow.not', array());
                    continue;
                }
              
                if ($presentrow[$i]['given_hide'] && !IS_ADMIN)
                {
                    $given_user = '<b>'. $lang['ANONYMOUS'] .'</b>';
                }
                elseif ($presentrow[$i]['given_hide'] && IS_ADMIN)
                {
                    $given_user = profile_url(array('username' => "<b>[{$presentrow[$i]['username']}]</b>", 'user_id' => $presentrow[$i]['given_id'], 'user_rank' => $presentrow[$i]['user_rank']));
                }
                else
                {
                    $given_user = profile_url(array('username' => "<b>{$presentrow[$i]['username']}</b>", 'user_id' => $presentrow[$i]['given_id'], 'user_rank' => $presentrow[$i]['user_rank']));
                }

                $template->assign_block_vars('presentrow.presentcol', array(
                    'NAME'            => $presentrow[$i]['present_name'],
                    'PIC'            => $presentrow[$i]['present_pic'],
                    'PRICE'            => $presentrow[$i]['present_price'],
                    'ID'            => $presentrow[$i]['present_id'],
                    'GIVEN'            => $given_user
                ));
            }
        }

        generate_pagination(PROFILE_URL . $profiledata['user_id'], $count['present'], 8, $start, false, 'presents');
    }
}

#
#-----[ OPEN ]------------------------------------------
#

lang_main.php

#
#-----[ FIND ]---------------------------------------
#

$lang['BONUS_RETURN'] = 'Вернуться к обмену Сид бонусов';

#
#-----[ AFTER, ADD ]-------------------------------------------
#

// Presents
$lang['PRESENTS'] = 'Подарки за СидБонус';
$lang['PRESENTS_OFF'] = 'Мод отключен администратором';
$lang['PRESENTS_CATALOG'] = 'Каталог подарков';
$lang['BAY_PRESENT'] = 'Купить подарок';
$lang['GIVE_PRESENT'] = 'Подарить подарок';
$lang['ADD_PRESENT'] = 'Добавить подарок';
$lang['CHANGING_PRESENT'] = 'Изменение подарка';
$lang['PRESENT'] = 'Подарок';
$lang['PRESENT_NAME'] = 'Название подарка';
$lang['PRESENT_PRICE'] = 'Цена подарка';
$lang['PRESENT_TYPE'] = 'Тип';
$lang['PRESENT_ACTIVE'] = 'Активный';
$lang['PRESENT_DESC'] = 'Описание подарка';
$lang['PRESENT_ERROR_PIC'] = 'Картинка отсутствует';
$lang['PRESENT_ERROR_NAME'] = 'Не указано название подарка';
$lang['PRESENT_ERROR_PRICE'] = 'Не указано цена подарка';
$lang['PRESENT_ERROR_TYPE'] = 'Не указан тип подарка';
$lang['ANONYMOUS'] = 'Аноним';
$lang['NAME'] = 'Название';
$lang['GIVE'] = 'Подарить';
$lang['ADD'] = 'Добавить';
$lang['PRESENT_MAKE_ANONYMOUS'] = 'Сделать подарок анонимным';
$lang['PRESENT_TO'] = 'Кому подарить';
$lang['PRESENT_WISH'] = 'Пожелание';
$lang['PRESENT_NOT_SELECT'] = 'Вы не выбрали подарок';
$lang['PRESENT_NO'] = 'Такого подарка не существует';
$lang['PRESENT_DELETE'] = 'Подарок удален';
$lang['PRESENT_NOT_SELECT_USER'] = 'Вы не выбрали кому подарите подарок';
$lang['PRESENT_NOT_FOUND_USER'] = 'Пользователь не найден';
$lang['PRESENT_NOT_YOURSELF'] = 'Нельзя себе делать подарки';
$lang['PRESENT_NOT_ANONYMOUS'] = 'Подарки можно дарить только пользователям';
$lang['PRESENT_NOT_BOT'] = 'Нельзя делать подарки боту';
$lang['PRESENT_TOO_HIGH'] = 'Этот подарок для вас слишком дорогой';
$lang['PRESENT_GIFTED'] = 'Подарок подарен пользователю';
$lang['PRESENT_NEW'] = 'У вас новый подарок';
$lang['PRESENT_COMMENT'] = 'Так же вам оставил пожелаение';
$lang['PRESENT_INCOGNITO'] = 'оставшийся неизвестным';
$lang['PRESENT_PRICE_MESS'] = '(у вас в наличии <b>%s</b>)';
$lang['PRESENT_MESSAGE'] = 'Пользователь %s подарил Вам подарок.%s[br][br]Вы его можете посмотреть в своём профиле перейдя по [url=%s]ссылке[/url].[br][br][align=right]Сообщение сгенерировано автоматически.[/align]';
$lang['PRESENT_BONUS'] = 'Описание подарка';
$lang['PRESENT_ADD'] = 'Подарок добавлен';
$lang['PRESENT_NO_ADD'] = 'Подарок не добавлен';
$lang['PRESENT_EDITED'] = 'Подарок изменен';
$lang['WRONG_FORMAT'] = 'Нн верный формат файла';

// Presents types
$lang['PRESENT_SPECITY_TYPE'] = 'Укажите тип';
$lang['PRESENT_TIMELESS'] = 'Вечные подарки';
$lang['PRESENT_BALOONS'] = 'Воздушные шары';
$lang['PRESENT_MASKS'] = 'Головные уборы и маски';
$lang['PRESENT_FOR_LOVERS'] = 'Для влюбленных';
$lang['PRESENT_FOR_GIRLS'] = 'Для девушек';
$lang['PRESENT_FOR_MEN'] = 'Для мужчин';
$lang['PRESENT_FOOD'] = 'Еда';
$lang['PRESENT_ANIMALS'] = 'Животные';
$lang['PRESENT_COMPUTERS'] = 'Компьютерная техника';
$lang['PRESENT_SUMMER'] = 'Летние подарки';
$lang['PRESENT_PRIVATE'] = 'Личный инструктор';
$lang['PRESENT_STUFFED_TOYS'] = 'Мягкие игрушки';
$lang['PRESENT_DRINKS'] = 'Напитки';
$lang['PRESENT_KISSES'] = 'Поцелуи';
$lang['PRESENT_OTHER'] = 'Разное';
$lang['PRESENT_SUNGLASSES'] = 'Солнцезащитные очки';
$lang['PRESENT_SPORT'] = 'Спорт';
$lang['PRESENT_STATUES'] = 'Статуэтки';
$lang['PRESENT_DECORATION'] = 'Украшения';
$lang['PRESENT_HOBBY'] = 'Хобби';
$lang['PRESENT_FLOWERS'] = 'Цветы';
$lang['PRESENT_NEW_YEAR'] = 'Новогодние подарки';

#
#-----[ FIND ]---------------------------------------
#

$lang['DELETE_IMAGE'] = 'Удалить изображение';

#
#-----[ BEFORE, ADD ]-------------------------------------------
#

$lang['SELECT_IMAGE'] = 'Выберите изображение';

#
#-----[ OPEN ]------------------------------------------
#

functions.php

#
#-----[ FIND AND REPLACE ]---------------------------------------
#

function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = true, $style = false)
{
    global $lang, $template;

// Pagination Mod
    $begin_end = 3;
    $from_middle = 1;
/*
    By default, $begin_end is 3, and $from_middle is 1, so on page 6 in a 12 page view, it will look like this:

    a, d = $begin_end = 3
    b, c = $from_middle = 1

"begin"        "middle"           "end"
    |              |                 |
    |     a     b  |  c     d        |
    |     |     |  |  |     |        |
    v     v     v  v  v     v        v
    1, 2, 3 ... 5, 6, 7 ... 10, 11, 12

    Change $begin_end and $from_middle to suit your needs appropriately
*/

    $total_pages = ceil($num_items/$per_page);

    if ( $total_pages == 1 || $num_items == 0 )
    {
        return '';
    }

    if($style) $style = "#$style";

    $on_page = floor($start_item / $per_page) + 1;

    $page_string = '';
    if ( $total_pages > ((2*($begin_end + $from_middle)) + 2) )
    {
        $init_page_max = ( $total_pages > $begin_end ) ? $begin_end : $total_pages;
        for($i = 1; $i < $init_page_max + 1; $i++)
        {
            $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . "&amp;start=" . ( ( $i - 1 ) * $per_page ) . $style .'">' . $i . '</a>';
            if ( $i <  $init_page_max )
            {
                $page_string .= ", ";
            }
        }
        if ( $total_pages > $begin_end )
        {
            if ( $on_page > 1  && $on_page < $total_pages )
            {
                $page_string .= ( $on_page > ($begin_end + $from_middle + 1) ) ? ' ... ' : ', ';

                $init_page_min = ( $on_page > ($begin_end + $from_middle) ) ? $on_page : ($begin_end + $from_middle + 1);

                $init_page_max = ( $on_page < $total_pages - ($begin_end + $from_middle) ) ? $on_page : $total_pages - ($begin_end + $from_middle);

                for($i = $init_page_min - $from_middle; $i < $init_page_max + ($from_middle + 1); $i++)
                {
                    $page_string .= ($i == $on_page) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . "&amp;start=" . ( ( $i - 1 ) * $per_page ) . $style .'">' . $i . '</a>';
                    if ( $i <  $init_page_max + $from_middle )
                    {
                        $page_string .= ', ';
                    }
                }
                $page_string .= ( $on_page < $total_pages - ($begin_end + $from_middle) ) ? ' ... ' : ', ';
            }
            else
            {
                $page_string .= '&nbsp;...&nbsp;';
            }
            for($i = $total_pages - ($begin_end - 1); $i < $total_pages + 1; $i++)
            {
                $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>'  : '<a href="' . $base_url . "&amp;start=" . ( ( $i - 1 ) * $per_page ) . $style .'">' . $i . '</a>';
                if( $i <  $total_pages )
                {
                    $page_string .= ", ";
                }
            }
        }
    }
    else
    {
        for($i = 1; $i < $total_pages + 1; $i++)
        {
            $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . "&amp;start=" . ( ( $i - 1 ) * $per_page ) . $style .'">' . $i . '</a>';
            if ( $i <  $total_pages )
            {
                $page_string .= ', ';
            }
        }
    }

    if ( $add_prevnext_text )
    {
        if ( $on_page > 1 )
        {
            $page_string = ' <a href="' . $base_url . "&amp;start=" . ( ( $on_page - 2 ) * $per_page ). $style .'">' . $lang['PREVIOUS'] . '</a>&nbsp;&nbsp;' . $page_string;
        }

        if ( $on_page < $total_pages )
        {
            $page_string .= '&nbsp;&nbsp;<a href="' . $base_url . "&amp;start=" . ( $on_page * $per_page ) . $style .'">' . $lang['NEXT'] . '</a>';
        }

    }

    $pagination = ($page_string) ? '<a class="menu-root" href="#pg-jump">'. $lang['GOTO_PAGE'] .'</a> :&nbsp;&nbsp;'. $page_string : '';
    $pagination = str_replace('&amp;start=0', '', $pagination);

    $template->assign_vars(array(
        'PAGINATION'   => $pagination,
        'PAGE_NUMBER'  => sprintf($lang['PAGE_OF'], ( floor($start_item/$per_page) + 1 ), ceil( $num_items / $per_page )),
        'PG_BASE_URL'  => $base_url,
        'PG_PER_PAGE'  => $per_page,
    ));

    return $pagination;
}

#
#-----[ OPEN ]------------------------------------------
#

main.css

#
#-----[ ADD ]-------------------------------------------
#

#present {
    height:150px; position: relative;
    background:url(../images/gift_bg.png) repeat-x bottom;
    border: 1px solid #ccc;
}
#present .lblock {
    background:url(../images/left.png) no-repeat top right;
    width:85px; height:32px;
    line-height:35px; position:absolute;
    top:135px; left:-7px;
    color: #FFFFFF;
}
#present .rblock {
    color:#FFF; background:url(../images/right.png) no-repeat top left;
    font-weight: bold; width:72px; height:32px;
    line-height:35px; position:absolute;
    top:135px; right:-6px;
}
#present b { color: #FFFFFF; }
#present b:hover { color: #FF8000;}
#present b:active { color: #FF8000 !important; position: relative; top: 1px; }
#present a:hover, #present a:active {
    text-decoration: none !important;
}1px; }
#present a:hover, #present a:active {
    text-decoration: none !important;
}

#
#-----[ OPEN ]------------------------------------------
#

usercp_viewprofile.tpl

#
#-----[ FIND ]------------------------------------------
#

</table><!--/user_profile-->

#
#-----[ ADD ]-------------------------------------------
#

<!-- IF PAGINATION -->
<p class="small" style="padding: 1px 6px 5px;"><b>{PAGINATION}</b></p>
<!-- ENDIF -->
<!-- IF SHOW_PRESENTS -->
<table class="tCenter borderless" width="100%">
    <tr><th class="cat border bw_TRBL" colspan="4"><a href="presents.php<!-- IF not EDIT_PROF -->?u={PROFILE_USER_ID}<!-- ENDIF -->">{L_GIVE_PRESENT}</a></th></tr>
    <!-- BEGIN presentrow -->
    <tr>
        <!-- BEGIN presentcol -->
        <td class="row1 pad_10" width="25%">
        <div id="present" class="pad_10">
            <div style="color: #c80; font-size:14px;">{presentrow.presentcol.NAME}</div>
            <img src="images/presents/{presentrow.presentcol.PIC}">
            <div class="lblock tLeft nowrap">&nbsp;&nbsp;{L_REPORT_BY}&nbsp;{presentrow.presentcol.GIVEN}</div>
        </div>
        </td>
        <!-- END presentcol -->
        <!-- BEGIN not -->
        <td class="row1" align="center" width="25%">&nbsp;</td>
        <!-- END not -->
    </tr>
    <!-- END presentrow -->
    <!-- BEGIN not_present -->
    <tr>
        <td colspan="3" class="row1 tCenter pad_8">{L_NONE}</td>
    </tr>
    <!-- END not_present -->
</table>
<!-- ENDIF -->

#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------
#
Автор
Exile
Скачивания
83
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

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