Фрилич за сид-бонус 1.0.1

Добавляет пользователям возможность скидываться на всеобщий фрилич (на месяц).

  1. dredd
    Совместимость:
    проверялся на совместимость
    Изменения в БД:
    требуются
    Автор:
    dredd
    Общественное достояние:
    нет
    Описание: добавляет пользователям возможность скидываться на всеобщий фрилич (на месяц).

    Перечислять можно как с главной страницы, так и со страницы обмена сид-бонуса. Фрилич на месяц (пока не опционально).
    Инструкция по установке:
    -- выполнить запросы
    PHP:
    CREATE TABLE IF NOT EXISTS `bb_freeleech` (
      `
    idint(10NOT NULL AUTO_INCREMENT,
      `
    user_idmediumint(8NOT NULL,
      `
    madefloat(16,2NOT NULL,
      `
    dateint(11NOT NULL,
      
    PRIMARY KEY (`id`),
      
    KEY `id` (`id`)
    ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=;

    INSERT INTO `bb_config` (`config_name`, `config_value`) VALUES
    ('freeleech_enabled''1'),
    (
    'freeleech_cost''500000.00'),
    (
    'freeleech_time_end''0000-00-00 00:00');
    -- ajax.php
    - найти
    PHP:
    'manage_group'      => array('user'),
    - после добавить
    PHP:
    'freeleech'         => array('user'),
    - найти
    PHP:
    function sitemap()
    {
        require(
    AJAX_DIR .'sitemap.php');
    }
    - после добавить
    PHP:
        function freeleech()
        {
            global 
    $bb_cfg$userdata$lang;

            if(
    $bb_cfg['freeleech_enabled'] && (strtotime($bb_cfg['freeleech_time_end'], TIMENOW) > TIMENOW)) $this->ajax_die('На трекере уже идёт фрилич!');

            
    $points = (float) $this->request['points'];
            
    $user_id $userdata['user_id'];

            if(
    $points $userdata['user_points'])
            {
                
    $this->ajax_die($lang['BONUS_NOT_SUCCES']);
            }
            else
            {
                
    DB()->query("INSERT INTO bb_freeleech(id, user_id, made, date) VALUES('', '" $user_id "', '" $points "', '" TIMENOW "')");
                
    DB()->query("UPDATE bb_users SET user_points = user_points - $points WHERE user_id = $user_id");
                
    cache_rm_user_sessions($user_id);

                
    $freel DB()->fetch_row("SELECT SUM(made) AS mades FROM bb_freeleech");
                if(
    $freel['mades'] >= $bb_cfg['freeleech_cost'])
                {
                    
    bb_update_config(array('freeleech_enabled' => 1'freeleech_time_end' => bb_date(TIMENOW 2592000)));
                    
    DB()->query("TRUNCATE bb_freeleech");
                    
    $message 'Сумма для активации фрилича собрана! Фрилич активирован до ' bb_date(TIMENOW 2592000) . '';
                }
                else
                {
                    
    $message 'Вы успешно перевели средства для фрилича.';
                }
                
    $this->ajax_die($message);
            }
        }
        
    -- tr_cleanup_and_dlstat.php
    - найти
    PHP:
                // Update TOTAL user's dlstat
                
    DB()->query("
                    UPDATE
                        "
    BB_BT_USERS             ." u,
                        "
    NEW_BB_BT_LAST_USERSTAT ." ub
                    SET
                        u.u_up_total   = u.u_up_total   + ub.up_add,
                        u.u_down_total = u.u_down_total + ub.down_add,
                        u.u_up_release = u.u_up_release + ub.release_add,
                        u.u_up_bonus   = u.u_up_bonus   + ub.bonus_add,
                        u.up_today         = u.up_today         + ub.up_add,
                        u.down_today       = u.down_today       + ub.down_add,
                        u.up_release_today = u.up_release_today + ub.release_add,
                        u.up_bonus_today   = u.up_bonus_today   + ub.bonus_add
                    WHERE u.user_id = ub.user_id
                "
    );
    - заменить на
    PHP:
        if($bb_cfg['freeleech_enabled'] && (strtotime($bb_cfg['freeleech_time_end'], TIMENOW) < TIMENOW))
        {
            
    bb_update_config(array('freeleech_enabled'  => 0));
        }
        
    // Update TOTAL user's dlstat
        
    if ($bb_cfg['freeleech_enabled'] && (strtotime($bb_cfg['freeleech_time_end'], TIMENOW) > TIMENOW))
        {
            
    DB()->query("
                    UPDATE
                        "
    BB_BT_USERS             ." u,
                        "
    NEW_BB_BT_LAST_USERSTAT ." ub
                    SET
                        u.u_up_total   = u.u_up_total   + ub.up_add,
                        u.u_down_total = u.u_down_total,
                        u.u_up_release = u.u_up_release + ub.release_add,
                        u.u_up_bonus   = u.u_up_bonus   + ub.bonus_add,
                        u.up_today         = u.up_today         + ub.up_add,
                        u.down_today       = u.down_today       + ub.down_add,
                        u.up_release_today = u.up_release_today + ub.release_add,
                        u.up_bonus_today   = u.up_bonus_today   + ub.bonus_add
                    WHERE u.user_id = ub.user_id
                "
    );
        }
        else
        {
            
    DB()->query("
                    UPDATE
                        "
    BB_BT_USERS             ." u,
                        "
    NEW_BB_BT_LAST_USERSTAT ." ub
                    SET
                        u.u_up_total   = u.u_up_total   + ub.up_add,
                        u.u_down_total = u.u_down_total + ub.down_add,
                        u.u_up_release = u.u_up_release + ub.release_add,
                        u.u_up_bonus   = u.u_up_bonus   + ub.bonus_add,
                        u.up_today         = u.up_today         + ub.up_add,
                        u.down_today       = u.down_today       + ub.down_add,
                        u.up_release_today = u.up_release_today + ub.release_add,
                        u.up_bonus_today   = u.up_bonus_today   + ub.bonus_add
                    WHERE u.user_id = ub.user_id
                "
    );
        }
    -- bonus.php
    - найти
    PHP:
    else
    {
        
    $template->assign_vars(array(
            
    'U_USER_PROFILE'  => PROFILE_URL $user_id,
       
    - перед добавить
    PHP:
    //Freeleech START
    elseif(isset($_POST['submit']) && isset($_POST['points_fr']))
    {
        if(
    $bb_cfg['freeleech_enabled'] && (strtotime($bb_cfg['freeleech_time_end'], TIMENOW) > TIMENOW))
        {
            
    $message 'На трекере уже идёт фрилич!<br /><br /><a href="'BONUS_URL .'">'$lang['BONUS_RETURN'] .'</a><br /><br /><a href="'PROFILE_URL $userdata['user_id'] .'">'$lang['RETURN_PROFILE'] .'</a><br /><br />';
            
    bb_die($message);
        }
        else
        {
            
    $points_fr = (int) $_POST['points_fr'];

            if(
    $points_fr $userdata['user_points'])
            {
                
    meta_refresh('index.php'5);

                
    $message $lang['BONUS_NOT_SUCCES'] .'<br /><br /><a href="'BONUS_URL .'">'$lang['BONUS_RETURN'] .'</a><br /><br /><a href="'PROFILE_URL $userdata['user_id'] .'">'$lang['RETURN_PROFILE'] .'</a><br /><br />'sprintf($lang['CLICK_RETURN_INDEX'],  '<a href="index.php">''</a>');

                
    bb_die($message);
            }
            else
            {
                
    DB()->query("INSERT INTO bb_freeleech(id, user_id, made, date) VALUES('', '" $user_id "', '" $points_fr "', '" TIMENOW "')");
                
    DB()->query("UPDATE bb_users SET user_points = user_points - $points_fr WHERE user_id = $user_id");
                
    cache_rm_user_sessions($user_id);

                
    $freel DB()->fetch_row("SELECT SUM(made) AS mades FROM bb_freeleech");
                if(
    $freel['mades'] >= $bb_cfg['freeleech_cost'])
                {
                    
    bb_update_config(array('freeleech_enabled' => 1'freeleech_time_end' => bb_date(TIMENOW 2592000)));
                    
    DB()->query("TRUNCATE bb_freeleech");
                    
    $message 'Сумма для активации фрилича собрана! Фрилич активирован до ' bb_date(TIMENOW 2592000) . ' <br /><br /><a href="'BONUS_URL .'">'$lang['BONUS_RETURN'] .'</a><br /><a href="'PROFILE_URL $userdata['user_id'] .'">'$lang['RETURN_PROFILE'] .'</a><br /><br />';
                }
                else
                {
                    
    $message 'Вы успешно перевели средства для фрилича.<br /><br /><a href="'BONUS_URL .'">'$lang['BONUS_RETURN'] .'</a><br /><a href="'PROFILE_URL $userdata['user_id'] .'">'$lang['RETURN_PROFILE'] .'</a><br /><br />';
                }
                
    bb_die($message);
            }
        }
    }
    //Freeleech END
    - найти
    PHP:
    else
    {

        
    $template->assign_vars(array(
            
    'U_USER_PROFILE'  => PROFILE_URL $user_id,
            
    'S_MODE_ACTION'     => 'profile.php?mode=bonus',
            
    'PAGE_TITLE'     => $lang['EXCHANGE_BONUS'],
            
    'MY_BONUS'        => sprintf($lang['MY_BONUS'], $user_points),
        ));
        
    - заменить на
    PHP:
    else
    {
        
    $freel DB()->fetch_row("SELECT SUM(made) AS mades FROM bb_freeleech");

        
    $template->assign_vars(array(
            
    'U_USER_PROFILE'  => PROFILE_URL $user_id,
            
    'S_MODE_ACTION'     => 'profile.php?mode=bonus',
            
    'PAGE_TITLE'     => $lang['EXCHANGE_BONUS'],
            
    'MY_BONUS'        => sprintf($lang['MY_BONUS'], $user_points),
            
    //Freeleech START
            
    'FREELEECH'       => $bb_cfg['freeleech_enabled'] && (strtotime($bb_cfg['freeleech_time_end'], TIMENOW) > TIMENOW),
            
    'MADE'            => ($freel['mades'] == 0) ? $freel['mades'],
            
    'COST_FREE'       => $bb_cfg['freeleech_cost'],
            
    //Freeleech END
        
    ));
        
    -- admin_board.php
    - найти
    PHP:
    'SEED_BONUS_USER_REGDATE' => $new['seed_bonus_user_regdate'],
    - после вставить
    PHP:
    //Freeleech START
    'FREELEECH_ENABLED'       => $new['freeleech_enabled'],
    'FREELEECH_COST'          => $new['freeleech_cost'],
    'FREELEECH_TIME_END'      => $new['freeleech_time_end'],
    //Freeleech END
    -- admin_board.tpl
    - найти
    HTML:
    <!-- END bonus -->
    <tr class="row3 med"><td colspan="2"></td></tr>
    <tr id="bonus_upload">
        <td><h4>{L_SEED_BONUS_ROPORTION}</h4><h6></h6></td>
        <td>
            <input class="post" type="text" size="5" name="bonus_upload[]" value="" />&nbsp;{L_GB} <br />
            <input class="post" type="text" size="5" name="bonus_upload_price[]" value="" />&nbsp;{L_PRICE}
            <input onclick="$('#bonus_upload').clone().appendTo('.bonus_upload');" class="post" type="button" size="2" value="+" />
            <input onclick="$('#bonus_upload').remove();" class="post" type="button" size="2" value="-" />
        </td>
    </tr>
    <tbody class="bonus_upload"></tbody>
    
    - после вставить
    HTML:
    <tr class="row3 med">
        <td class="bold tCenter" colspan="2">Настройки фрилича</td>
    </tr>
    <tr>
        <td><h4>Включить/отключить фрилич</h4></td>
        <td>
            <label><input type="radio" name="freeleech_enabled" value="1" <!-- IF FREELEECH_ENABLED -->checked="checked"<!-- ENDIF --> />{L_ENABLED}</label>&nbsp;&nbsp;
            <label><input type="radio" name="freeleech_enabled" value="0" <!-- IF not FREELEECH_ENABLED -->checked="checked"<!-- ENDIF --> />{L_DISABLED}</label>
        </td>
    </tr>
    <tr>
        <td><h4>Стоимость фрилича</h4></td>
        <td><input class="post" type="text" size="25" maxlength="100" name="freeleech_cost" value="{FREELEECH_COST}" /></td>
    </tr>
    <!-- IF FREELEECH_ENABLED -->
    <tr>
        <td><h4>Дата окончания фрилича</h4></td>
        <td><input class="post" type="text" size="25" maxlength="100" name="freeleech_time_end" value="{FREELEECH_TIME_END}" /></td>
    </tr>
    <!-- ENDIF -->
    
    -- usercp_bonus.tpl
    - найти

    <!-- END bonus_upload -->

    - после вставить
    HTML:
    <!-- IF not FREELEECH -->
    <tr class="sectionFooter med">
        <td class="bold tCenter">{L_DESCRIPTION}</td>
        <td class="bold tCenter">{L_PRICE}</td>
        <td class="bold tCenter">Уже внесено</td>
    </tr>
    <tr class="row2 med">
        <td class="tLeft">
            Хотите скачивать раздачи не думая о рейтинге? Вы можете пожертвовать свои очки сидирования для всеобщего фрилича.
            <input type="text" name="points_fr" placeholder="Введите количество сид-бонусов для пожертвования" value="">
        </td>
        <td>{COST_FREE}</td>
        <td>{MADE}</td>
    </tr>
    <!-- ENDIF -->
    
    -- page_header.tpl
    - найти
    HTML:
    <!--logo-->
    - перед вставить
    HTML:
    <script type="text/javascript">
        ajax.freeleech = function() {
            ajax.exec({
                action  : 'freeleech',
                points  : 100.00,
            });
        };
        ajax.callback.freeleech = function(data) {};
    </script>
    
    - найти
    HTML:
    <a href="{U_INDEX}"><img src="styles/images/logo/logo.png" alt="{SITENAME}" /></a>
    - после вставить
    HTML:
    <span title="Добавить 100 очков в копилку для фрилича" style="margin: 56px 867px 10px -25px" class="UserOnline" onclick="ajax.freeleech();"><span></span>+100</span>
    -- main.css
    - вставить
    HTML:
    .UserOnline, .UserOnlineInvisible {
        background: url("../images/category-23px-light.png") repeat-x scroll center top #6CB2E4;
        border: 1px solid #6CB2E5;
        border-radius: 3px 0 3px 3px;
        box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);
        color: #FCFCFF;
        display: block;
        float: right;
        font-size: 9px;
        margin: -15px -5px 5px -25px;
        padding: 3px 4px;
        position: relative;
    }
    .UserOnline span, .UserOnlineInvisible span {
        background-color: #6CB2E4;
        border-top-right-radius: 3px;
        height: 4px;
        position: absolute;
        right: -1px;
        top: -4px;
        width: 5px;
    }
    .UserOnline {
        background: url("../images/category-23px-light.png") repeat-x scroll center top #62A641;
        border: 1px solid #5FA23E;
    }
    .UserOnline span {  background-color: #5FA23E; }
    

    Изображения

    1. 1.png
    2. 2.png
    3. 3.png
    4. 4.png
    5. 5.png
    6. 6.png
    Bender и PheRum нравится это.

Последние обнoвления

  1. Обновление 1.0.1
  2. Обновление 1.0.0
  3. Обновление 0.2