############################################################## ## Мод: Top Stats — Last added, Top torrents, Top users ## Автор оригинала: RoadTrain (2011) ## Автор адаптация: DimaUZB2001 ## Адаптация: TorrentPier 2.4.x — 2.8.x ## Версия: 2.0 ############################################################## ============================================================ ФАЙЛ 1: config/config.php (или library/config.php) ============================================================ --- НАЙТИ: --- $bb_cfg['latest_news_forum_id'] = '1'; --- ПОСЛЕ ВСТАВИТЬ: --- // ========== Sidebar Stats Mod ========== // Последние добавленные торренты (кол-во для отображения, 0 = выкл.) $bb_cfg['sidebar_last_added_num'] = 7; // Топ скачиваемых торрентов (кол-во, 0 = выкл.) $bb_cfg['sidebar_top_downloaded'] = 7; // Топ сидеров (кол-во, 0 = выкл.) $bb_cfg['sidebar_top_uploaders'] = 5; // Топ личеров (кол-во, 0 = выкл.) $bb_cfg['sidebar_top_downloaders'] = 5; // ======================================== ============================================================ ФАЙЛ 2: src/Legacy/Datastorecommon.php ============================================================ --- НАЙТИ: --- 'latest_news' => 'build_cat_forums.php', --- ПОСЛЕ ВСТАВИТЬ: --- // Sidebar Stats Mod 'sidebar_last_added' => 'build_cat_forums.php', 'sidebar_top_downloaded' => 'build_cat_forums.php', 'sidebar_top_uploaders' => 'build_cat_forums.php', 'sidebar_top_downloaders'=> 'build_cat_forums.php', ============================================================ ФАЙЛ 3: index.php ============================================================ --- НАЙТИ: --- if ($bb_cfg['show_latest_news']) { $datastore->enqueue('latest_news'); } --- ПОСЛЕ ВСТАВИТЬ: --- // Sidebar Stats Mod — enqueue if (!empty($bb_cfg['sidebar_last_added_num'])) { $datastore->enqueue('sidebar_last_added'); } if (!empty($bb_cfg['sidebar_top_downloaded'])) { $datastore->enqueue('sidebar_top_downloaded'); } if (!empty($bb_cfg['sidebar_top_uploaders'])) { $datastore->enqueue('sidebar_top_uploaders'); } if (!empty($bb_cfg['sidebar_top_downloaders'])) { $datastore->enqueue('sidebar_top_downloaders'); } --- НАЙТИ: --- if ($bb_cfg['birthday']['check_day'] && $bb_cfg['birthday']['enabled']) { --- ПЕРЕД (выше) ВСТАВИТЬ: --- // ========================================== // Sidebar Stats Mod — отображение данных // ========================================== // --- Последние добавленные торренты --- if (!empty($bb_cfg['sidebar_last_added_num'])) { if (!$sidebar_last_added = $datastore->get('sidebar_last_added')) { $datastore->update('sidebar_last_added'); $sidebar_last_added = $datastore->get('sidebar_last_added'); } if ($sidebar_last_added) { $template->assign_vars([ 'SIDEBAR_LAST_ADDED_ON' => true, ]); foreach ($sidebar_last_added as $item) { $template->assign_block_vars('sidebar_last_added', [ 'TITLE' => $item['topic_title'], 'TOPIC_ID' => $item['topic_id'], 'FORUM' => $item['forum_name'], 'FORUM_ID' => $item['forum_id'], 'POSTER' => profile_url(['username' => $item['username'], 'user_rank' => $item['user_rank'], 'user_id' => $item['user_id']]), 'POSTER_ID' => $item['user_id'], 'TORRENT_TIME' => bb_date($item['reg_time'], 'd-M', false), ]); } } } // --- Топ скачиваемых торрентов --- if (!empty($bb_cfg['sidebar_top_downloaded'])) { if (!$sidebar_top_downloaded = $datastore->get('sidebar_top_downloaded')) { $datastore->update('sidebar_top_downloaded'); $sidebar_top_downloaded = $datastore->get('sidebar_top_downloaded'); } if ($sidebar_top_downloaded) { $template->assign_vars([ 'SIDEBAR_TOP_DOWNLOADED_ON' => true, ]); foreach ($sidebar_top_downloaded as $item) { $template->assign_block_vars('sidebar_top_downloaded', [ 'TITLE' => $item['topic_title'], 'TOPIC_ID' => $item['topic_id'], 'FORUM' => $item['forum_name'], 'FORUM_ID' => $item['forum_id'], 'POSTER' => profile_url(['username' => $item['username'], 'user_rank' => $item['user_rank'], 'user_id' => $item['user_id']]), 'POSTER_ID' => $item['user_id'], 'COMPLETED' => (int)$item['complete_count'], 'DOWNLOAD_COUNT' => (int)$item['download_count'], 'TORRENT_TIME' => bb_date($item['reg_time'], 'd-M', false), ]); } } } // --- Топ сидеров --- if (!empty($bb_cfg['sidebar_top_uploaders'])) { if (!$sidebar_top_uploaders = $datastore->get('sidebar_top_uploaders')) { $datastore->update('sidebar_top_uploaders'); $sidebar_top_uploaders = $datastore->get('sidebar_top_uploaders'); } if ($sidebar_top_uploaders) { $template->assign_vars([ 'SIDEBAR_TOP_UPLOADERS_ON' => true, ]); foreach ($sidebar_top_uploaders as $item) { $template->assign_block_vars('sidebar_top_uploaders', [ 'USER_ID' => $item['user_id'], 'UPL_NAME' => profile_url(['username' => $item['username'], 'user_rank' => $item['user_rank'], 'user_id' => $item['user_id']]), 'UPLOADED' => humn_size($item['total_uploaded']), ]); } } } // --- Топ личеров --- if (!empty($bb_cfg['sidebar_top_downloaders'])) { if (!$sidebar_top_downloaders = $datastore->get('sidebar_top_downloaders')) { $datastore->update('sidebar_top_downloaders'); $sidebar_top_downloaders = $datastore->get('sidebar_top_downloaders'); } if ($sidebar_top_downloaders) { $template->assign_vars([ 'SIDEBAR_TOP_DOWNLOADERS_ON' => true, ]); foreach ($sidebar_top_downloaders as $item) { $template->assign_block_vars('sidebar_top_downloaders', [ 'USER_ID' => $item['user_id'], 'DOWNL_NAME' => profile_url(['username' => $item['username'], 'user_rank' => $item['user_rank'], 'user_id' => $item['user_id']]), 'DOWNLOADED' => humn_size($item['total_downloaded']), ]); } } } // ========================================== // Конец Sidebar Stats Mod // ========================================== ============================================================ ФАЙЛ 4: library/includes/datastore/build_cat_forums.php ============================================================ --- НАЙТИ: --- $this->store('latest_news', $data); } --- ПОСЛЕ ВСТАВИТЬ: --- // ========================================== // Top Stats Mod — datastore builders // ========================================== // --- Последние добавленные торренты --- if (!empty($bb_cfg['sidebar_last_added_num'])) { $limit = (int)$bb_cfg['sidebar_last_added_num']; $data = DB()->fetch_rowset(" SELECT tr.topic_id, tr.forum_id, tr.reg_time, t.topic_title, 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 $limit "); $this->store('sidebar_last_added', $data); } // --- Топ скачиваемых торрентов --- // complete_count = завершённые скачивания (скачал все файлы, стал сидером) // download_count = скачиваний .torrent-файла (нажал кнопку Скачать) if (!empty($bb_cfg['sidebar_top_downloaded'])) { $limit = (int)$bb_cfg['sidebar_top_downloaded']; $data = DB()->fetch_rowset(" SELECT tr.topic_id, tr.forum_id, tr.reg_time, tr.complete_count, COALESCE(ad.download_count, 0) AS download_count, t.topic_title, 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 LEFT JOIN " . BB_ATTACHMENTS_DESC . " ad ON tr.attach_id = ad.attach_id WHERE tr.complete_count > 0 ORDER BY tr.complete_count DESC LIMIT $limit "); $this->store('sidebar_top_downloaded', $data); } // --- Топ сидеров (по объёму отданного) --- if (!empty($bb_cfg['sidebar_top_uploaders'])) { $limit = (int)$bb_cfg['sidebar_top_uploaders']; $data = DB()->fetch_rowset(" SELECT bt.user_id, u.username, u.user_rank, SUM(bt.u_up_total) AS total_uploaded FROM " . BB_BT_USERS . " bt LEFT JOIN " . BB_USERS . " u ON bt.user_id = u.user_id WHERE bt.u_up_total > 0 GROUP BY bt.user_id, u.username, u.user_rank ORDER BY total_uploaded DESC LIMIT $limit "); $this->store('sidebar_top_uploaders', $data); } // --- Топ личеров (по объёму скачанного) --- if (!empty($bb_cfg['sidebar_top_downloaders'])) { $limit = (int)$bb_cfg['sidebar_top_downloaders']; $data = DB()->fetch_rowset(" SELECT bt.user_id, u.username, u.user_rank, SUM(bt.u_down_total) AS total_downloaded FROM " . BB_BT_USERS . " bt LEFT JOIN " . BB_USERS . " u ON bt.user_id = u.user_id WHERE bt.u_down_total > 0 GROUP BY bt.user_id, u.username, u.user_rank ORDER BY total_downloaded DESC LIMIT $limit "); $this->store('sidebar_top_downloaders', $data); } // Конец Sidebar Stats Mod ============================================================ ФАЙЛ 5: library/language/ru/main.php ============================================================ --- В КОНЕЦ ФАЙЛА (перед закрывающим ?> если есть) ВСТАВИТЬ: --- // Sidebar Stats Mod $lang['SIDEBAR_LAST_ADDED'] = 'Новые торренты'; $lang['SIDEBAR_TOP_DOWNLOADED'] = 'Топ скачиваемых'; $lang['SIDEBAR_TOP_SEEDERS'] = 'Топ сидеров'; $lang['SIDEBAR_TOP_LEECHERS'] = 'Топ личеров'; $lang['SIDEBAR_TIMES'] = 'раз'; $lang['SIDEBAR_COMPLETED'] = 'Завершено'; $lang['SIDEBAR_DL_TORRENT'] = 'Скачано .torrent'; ============================================================ ФАЙЛ 6: library/language/en/main.php ============================================================ --- В КОНЕЦ ФАЙЛА (перед закрывающим ?> если есть) ВСТАВИТЬ: --- // Sidebar Stats Mod $lang['SIDEBAR_LAST_ADDED'] = 'Latest Torrents'; $lang['SIDEBAR_TOP_DOWNLOADED'] = 'Most Downloaded'; $lang['SIDEBAR_TOP_SEEDERS'] = 'Top Seeders'; $lang['SIDEBAR_TOP_LEECHERS'] = 'Top Leechers'; $lang['SIDEBAR_TIMES'] = 'times'; $lang['SIDEBAR_COMPLETED'] = 'Completed'; $lang['SIDEBAR_DL_TORRENT'] = 'Torrent DLs'; ============================================================ ФАЙЛ 7: templates/default/page_header.tpl ============================================================ --- НАЙТИ (в области sidebar): --- --- ПЕРЕД ВСТАВИТЬ: --- ============================================================ ФАЙЛ 8: CSS (добавить в styles/default/globals.css) ============================================================ --- В КОНЕЦ ФАЙЛА ВСТАВИТЬ: --- /* Sidebar Stats Mod */ .sidebar-stats-block { margin-bottom: 10px; border: 1px solid #C3CBD1; border-radius: 3px; background: #F5F5F5; } .sidebar-stats-block .cat-title { margin: 0; padding: 5px 8px; font-size: 11px; font-weight: bold; background: #E5EDF2; border-bottom: 1px solid #C3CBD1; color: #333; } .sidebar-stats-list { padding: 0; } .sidebar-stats-item { padding: 5px 8px; border-bottom: 1px solid #E0E0E0; } .sidebar-stats-item:last-child { border-bottom: none; } .sidebar-stats-title { font-size: 11px; line-height: 1.3; margin-bottom: 2px; } .sidebar-stats-title a { color: #006699; text-decoration: none; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 200px; } .sidebar-stats-title a:hover { text-decoration: underline; } .sidebar-stats-meta { font-size: 10px; color: #777; line-height: 1.4; } .sidebar-stats-meta a { color: #006699; text-decoration: none; } .sidebar-stats-meta b { color: #333; } .sidebar-stats-table { width: 100%; border-collapse: collapse; } .sidebar-stats-table tr { border-bottom: 1px solid #E0E0E0; } .sidebar-stats-table tr:last-child { border-bottom: none; } .sidebar-stats-table td { padding: 4px 8px; font-size: 11px; } .sidebar-stats-user { text-align: left; } .sidebar-stats-value { text-align: right; white-space: nowrap; font-weight: bold; } ============================================================ КОНЕЦ ИНСТРУКЦИИ ============================================================