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

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

PHP:
запросы:

ALTER TABLE `bb_topics` ADD  `topic_image` VARCHAR( 255 ) 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_cron` VALUES ('', 1, 'Очистка устаревших постеров', 'clean_posters.php', 'weekly', '1', '05:00:00', 30, '0000-00-00 00:00:00', '0000-00-00 00:00:00', NULL, 0, '', 0, 0, 0);

открыть 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'], $poster, PREG_SET_ORDER);
                preg_match_all('/\[img=right\](.*?)\[\/img\]/i', $row['post_text'], $poster2, PREG_SET_ORDER);
                preg_match_all('/\[img=left\](.*?)\[\/img\]/i', $row['post_text'], $poster3, PREG_SET_ORDER);
                preg_match_all('/\[img\](.*?)\[\/img\]/i', $row['post_text'], $poster4, PREG_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", $row, 300);
            }
        }

открыть 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 и найти:

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

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

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

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

function post2url (url, params) {
    params = params || {};
    var f = document.createElement('form');
    f.setAttribute('method', 'post');
    f.setAttribute('action', url);
    params['form_token'] = '{FORM_TOKEN}';
    for (var k in params) {
        var h = 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(this, maxW); });
        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(this, maxW);
                $v.empty().append(this);
            });
        }
        else {
            $img.one('load', function(){ imgFit(this, maxW) });
            $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:true, cursor: 'pointer',showTitle: true,arrows: true});
        $("div.scrollable").scrollable({size: 8, items: "#thumbs", hoverClass: "hover", keyboard: true, loop: false });
    });
</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);
}
Автор
Kryl
Скачивания
100
Первый выпуск
Обновление
Оценка
4.00 звёзд 4 оценок

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

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

  • Anonymous
  • 1.00 звёзд
  • Версия: 2015-11-28
нет пояснений