Лента постеров 2015-11-28

Вывод постеров в ленту

  1. Kryl
    Совместимость:
    проверялся на совместимость
    Изменения в БД:
    требуются
    Дополнительные требования:
    Dredd
    Общественное достояние:
    да
    Вывод постеров в ленту.
    Выбор количества постеров через админку
    Удаление старых постеров через cron
    Инструкция по установке:
    Раскидать файлы по папкам

    PHP:
    запросы:

    ALTER TABLE `bb_topicsADD  `topic_imageVARCHAR255 NOT NULL DEFAULT  '';
    INSERT INTO `bb_config` (`config_name`, `config_value`) VALUES ('posters''1');
    INSERT INTO `bb_config` (`config_name`, `config_value`) VALUES ('last_added_num''20');
    INSERT INTO `bb_cronVALUES (''1'Очистка устаревших постеров''clean_posters.php''weekly''1''05:00:00'30'0000-00-00 00:00:00''0000-00-00 00:00:00'NULL0''000);

    открыть common.php и найти:

    'network_news'           => 'build_cat_forums.php',

    после вставить:

    'last_added'             => 'build_cat_forums.php',

    открыть sessions.php и найти:

    'h_tsp'    => 0,     // show released title {...}

    после вставить:

    'h_poster' => 1,     // show posters

    открыть functions_torrent.php и найти:

    if (
    $reg_mode == 'request' || $reg_mode == 'newtopic')

    перед вставить:

    update_last_added();

    найти:

    function 
    send_torrent_with_passkey ($filename)

    перед вставить:

    function 
    update_last_added()
    {
        global 
    $datastore;

        
    $datastore->update('last_added');
    }

    открыть page_header.php и найти:

    'SIMPLE_HEADER'      => !empty($gen_simple_header),

    после вставить:

    'LAST_ADDED'         => ($bb_cfg['posters'] && BB_SCRIPT == 'index'),
    'LAST_ADDED_JS'      => $user->opt_js['h_poster'],

    открыть admin_board.php и найти:

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

    после вставить:

    'POSTERS'                 => $new['posters'],
    'LAST_ADDED_NUM'          => $new['last_added_num'],

    открыть posting.php и найти:

    if (
    defined('TORRENT_ATTACH_ID') && $bb_cfg['bt_newtopic_auto_reg'] && !$error_msg)

    перед вставить:

    if((
    $mode == 'newtopic' || $mode == 'editpost') && defined('TORRENT_ATTACH_ID') && $bb_cfg['bt_newtopic_auto_reg'] && !$error_msg)
            {
                if(
    $bb_cfg['posters'])
                {
                    
    $row DB()->fetch_row("SELECT post_text FROM "BB_POSTS_TEXT ." WHERE post_id = $post_id");
                    
    preg_match_all('/\[poster\](.*?)\[\/poster\]/i'$row['post_text'], $posterPREG_SET_ORDER);
                    
    preg_match_all('/\[img=right\](.*?)\[\/img\]/i'$row['post_text'], $poster2PREG_SET_ORDER);
                    
    preg_match_all('/\[img=left\](.*?)\[\/img\]/i'$row['post_text'], $poster3PREG_SET_ORDER);
                    
    preg_match_all('/\[img\](.*?)\[\/img\]/i'$row['post_text'], $poster4PREG_SET_ORDER);
                    
    $url '';
                    if(isset(
    $poster[0][1])) $url $poster[0][1];
                    elseif(isset(
    $poster2[0][1])) $url $poster2[0][1];
                    elseif(isset(
    $poster3[0][1])) $url $poster3[0][1];
                    elseif(isset(
    $poster4[0][1])) $url $poster4[0][1];
                    else 
    $url '/styles/images/no_poster.png';
                    
    DB()->query("UPDATE "BB_TOPICS ." SET topic_image = '$url' WHERE topic_id = '$topic_id'");
                    
    $datastore->update('last_added');
                    
    $row DB()->fetch_row("SELECT pt.post_text
                        FROM "
    BB_BT_TORRENTS ." tr
                        LEFT JOIN "
    BB_TOPICS ." t ON(tr.topic_id = t.topic_id)
                        LEFT JOIN "
    BB_POSTS_TEXT ." pt ON(pt.post_id = tr.post_id)
                    WHERE t.topic_id  = 
    $topic_id");
                    
    CACHE('bb_cache')->set("lenta-$topic_id"$row300);
                }
            }

    открыть index.php и найти:

    // Network news
    if ($bb_cfg['show_network_news'])

    перед вставить:

    // BEGIN last 10.
    if($bb_cfg['posters'])
    {

        if (!
    $last_added $datastore->get('last_added'))
        {
            
    $datastore->update('last_added');
            
    $last_added $datastore->get('last_added');
        }

        if(empty(
    $last_added))
        {
            
    $template->assign_vars(array(
                
    'EMPTY' => true,
            ));
        }
        else
        {
            
    $template->assign_vars(array(
                
    'EMPTY' => false,
            ));

            foreach (
    $last_added as $last_add)
            {
                
    $template->assign_block_vars('lastAdded', array(
                    
    'TITLE' => wbr(str_short($last_add['topic_title'], 50)),
                    
    'TOPIC_ID' => $last_add['topic_id'],
                    
    'FORUM' => $last_add['forum_name'],
                    
    'FORUM_ID' => $last_add['forum_id'],
                    
    'POSTER' => profile_url(array('username' => $last_add['username'], 'user_rank' => $last_add['user_rank'])),
                    
    'POSTER_ID' => $last_add['user_id'],
                    
    'TORRENT_TIME' => bb_date($last_add['reg_time'], 'd-M''false'),
                    
    'POSTER_FULL'  => $last_add['topic_image'],
                    
    'SIZE' => humn_size($last_add['size']),
                )) ;
            }
        }
    }
    // END last 10

    открыть admin_board.tpl и найти:

    <
    tbody class="bonus_upload"></tbody>

    после вставить:

    <
    tr class="row3 med">
        <
    td class="bold tCenter" colspan="2">Лента новинок</td>
    </
    tr>
    <
    tr>
        <
    td><h4>Включить/отключить ленту</h4></td>
        <
    td>
            <
    label><input type="radio" name="posters" value="1" <!-- IF POSTERS -->checked="checked"<!-- ENDIF --> />{L_ENABLED}</label>&nbsp;&nbsp;
            <
    label><input type="radio" name="posters" value="0" <!-- IF not POSTERS -->checked="checked"<!-- ENDIF --> />{L_DISABLED}</label>
        </
    td>
    </
    tr>
    <
    tr>
        <
    td><h4>Количество постеров в ленте</h4></td>
        <
    td><input class="post" type="text" size="25" maxlength="2" name="last_added_num" value="{LAST_ADDED_NUM}" />&nbsp;</td>
    </
    tr>

    открыть index.tpl и найти:

    <
    class="menu-root" href="#only-new-options">{L_DISPLAYING_OPTIONS}</a>

    перед вставить:

    <!-- IF 
    LAST_ADDED --><class="menu-root" href="#hide-posters">Лента новинок</a> &middot; <!-- ENDIF -->

    открыть page_header.tpl и найти:

    function 
    post2url (urlparams) {
        
    params params || {};
        var 
    document.createElement('form');
        
    f.setAttribute('method''post');
        
    f.setAttribute('action'url);
        
    params['form_token'] = '{FORM_TOKEN}';
        for (var 
    k in params) {
            var 
    document.createElement('input');
            
    h.setAttribute('type''hidden');
            
    h.setAttribute('name'k);
            
    h.setAttribute('value'params[k]);
            
    f.appendChild(h);
        }
        
    document.body.appendChild(f);
        
    f.submit();
        return 
    false;
    }

    после вставить:

    var 
    hidePostImg false;

    function 
    initPostImages(context)
    {
        if (
    hidePostImg) return;
        var 
    $in_spoilers = $('div.sp-body var.postImg'context);
        $(
    'var.postImg'context).not($in_spoilers).each(function(){
            var 
    $v = $(this);
            var 
    src $v.attr('title');
            var 
    $img = $('<img src="'src +'" class="'$v.attr('class') +'" alt="pic" />');
            
    $img fixPostImage($img);
            var 
    maxW = ($v.hasClass('postImgAligned')) ? postImgAligned_MaxWidth postImg_MaxWidth;
            
    $img.bind('click', function(){ return imgFit(thismaxW); });
            if (
    user.opt_js.i_aft_l) {
                $(
    '#preload').append($img);
                var 
    loading_icon '<a href="'src +'" target="_blank"><img src="{SITE_URL}styles/images/pic_loading.gif" alt="" /></a>';
                
    $v.html(loading_icon);
                if ($.
    browser.msie) {
                    
    $v.after('<wbr>');
                }
                
    $img.one('load', function(){
                    
    imgFit(thismaxW);
                    
    $v.empty().append(this);
                });
            }
            else {
                
    $img.one('load', function(){ imgFit(thismaxW) });
                
    $v.empty().append($img);
                if ($.
    browser.msie) {
                    
    $v.after('<wbr>');
                }
            }
        });
        $(
    'var.posterImg'context).each(function(){
            var 
    $v = $(this);
            var 
    src $v.attr('title');
            var 
    $img = $('<img src="'src +'" class="'$v.attr('class') +'" width="260px;" alt="Загружается..." border="0" />');
            
    $img fixPostImage($img);
            
    $v.empty().append($img);
            if ($.
    browser.msie) {
                
    $v.after('<wbr>');
            }
        });
    }

    найти:

    </
    div><!--/only-new-options-->
    <!-- ENDIF / 
    SHOW_ONLY_NEW_MENU -->

    после вставить:

    <!-- IF 
    LAST_ADDED -->
    <
    div class="menu-sub" id="hide-posters">
        <
    table cellspacing="1" cellpadding="4">
            <
    tr>
                <
    th>Опции ленты новинок</th>
            </
    tr>
            <
    tr>
                <
    td>
                    <
    fieldset id="ajax-topics">
                        <
    legend>Настройка ленты</legend>
                        <
    div class="pad_4">
                            <
    label>
                                <
    input type="checkbox" <!-- IF LAST_ADDED_JS -->{CHECKED}<!-- ENDIF -->
                                
    onclick="user.set('h_poster', this.checked ? 1 : 0);"
                                
    />Показывать ленту
                            
    </label>
                        </
    div>
                    </
    fieldset>
                </
    td>
            </
    tr>
            <
    tr>
                <
    td class="cat tCenter pad_4"><input type="button" value="{L_SUBMIT}" onclick="window.location.reload();" /></td>
            </
    tr>
        </
    table>
    </
    div>
    <!-- ENDIF -->

    найти:

    <!--/
    menus-->

    после вставить:

    <!-- IF 
    LAST_ADDED && LAST_ADDED_JS && not EMPTY -->
    <
    script type="text/javascript" src="{SITE_URL}styles/js/jquery.cluetip.js"></script>
    <
    script type="text/javascript" src="{SITE_URL}styles/js/jquery.scrollable.js"></script>
    <
    script type="text/javascript" src="{SITE_URL}styles/js/jquery.mousewheel.js"></script>
    <
    link type="text/css" rel="stylesheet" href="{SITE_URL}styles/templates/default/css/cluetip.css"/>
    <
    script type="text/javascript">
        $(
    document).ready(function() {
            $(
    'div.load-local').cluetip({local:truecursor'pointer',showTitletrue,arrowstrue});
            $(
    "div.scrollable").scrollable({size8items"#thumbs"hoverClass"hover"keyboardtrueloopfalse });
        });
    </
    script>

    <
    table cellpadding="0" cellspacing="0" class="poster">
        <
    tr>
            <
    td>
                <!-- 
    root element for scrollable -->
                <
    div class="scrollable">
                    <
    div id="thumbs">
                        <!-- 
    BEGIN lastAdded -->
                        <
    div class="load-local" rel="#loadme_{lastAdded.TOPIC_ID}" title="{lastAdded.TITLE}" onclick="top.location.href='viewtopic.php?t={lastAdded.TOPIC_ID}';" onmouseover="initPostImages($('#loadme_{lastAdded.TOPIC_ID}'));">
                            <
    a href="/viewtopic.php?t={lastAdded.TOPIC_ID}"><img src="/thumb.php?t={lastAdded.TOPIC_ID}" alt=""></a>&nbsp;
                            <
    div style="display:none;" id="loadme_{lastAdded.TOPIC_ID}" >
                                <
    center><img src="{lastAdded.POSTER_FULL}" width="260" alt=""></center>
                                <
    br /> {L_FORUM}: <b>{lastAdded.FORUM}</b>
                                <
    br /> {L_AUTHOR}: <b>{lastAdded.POSTER}</b>
                                <
    br /> {L_DATE}: <b>{lastAdded.TORRENT_TIME}</b>
                                <
    br /> {L_SIZE}: <b>{lastAdded.SIZE}</b>
                            </
    div>
                        </
    div>
                        <!-- 
    END lastAdded -->
                    </
    div>
                </
    div>
            </
    td>
        </
    tr>
    </
    table>
    <!-- ENDIF -->

    открыть build_cat_forums.php и найти:

    //
    // Network_news
    //

    перед вставить:

    //Store LastAdded
    if($bb_cfg['posters'])
    {
        
    $data DB()->fetch_rowset("SELECT
                tr.topic_id, tr.forum_id, tr.reg_time, tr.size,
                t.topic_title, t.topic_image,
                f.forum_name,
                u.username, u.user_id, u.user_rank
            FROM
                "
    BB_BT_TORRENTS ." tr
            LEFT JOIN "
    BB_TOPICS ." t ON tr.topic_id = t.topic_id
            LEFT JOIN "
    BB_FORUMS ." f ON tr.forum_id = f.forum_id
            LEFT JOIN "
    BB_USERS ." u  ON tr.poster_id = u.user_id
            ORDER BY
                tr.reg_time DESC
            LIMIT 0," 
    $bb_cfg['last_added_num']);
        
    $this->store('last_added'$data);
    }

    Изображения

    1. 55000.jpg
    2. 55001.jpg
    First_Semyon и serega нравится это.

Пoследние рецензии

  1. Анонимный пользователь
    Анонимный пользователь
    1/5,
    Версия: 2015-11-28
    нет пояснений