- Работа как псевдо торрент трекер;
- Отображение для торрент файлов статистики: сколько раз скачан, популярность, сиды, пиры, название, общий размер, SHA Hash, анонсы;
- Отображаются файлы которые находятся в торрнете
- Возможность добавлять dcls файлы. для него отображаются такие данные: сколько раз скачан, количество папок, количество файлов, общий размер
- Отображение файлов описанных в dcls файле + удобная навигация по папкам. Для медиа файлов всплывающие подсказки по битрейду файлов, качеству звука и разрешению видео
- Удобная админка модуля
- Возможность включать и выключать модуль через админку
- Функция формирования магнет ссылок для торрент файлов
- Возможность выбирать какую ссылку давать на торрент (магнет ссылку, ссылку на торрент файл или обе ссылки сразу)
- Возможность добавлять к торрент файлу свой ретрекер
- Возможность изменить комментарий в торрент файле и вставить в нём ссылку на новость на вашем сайте
- Возможность включить или выключить показ дополнительных данных для медиа файлов которые описаны в DCLS файле
- Возможность добавлять сколько угодно торрент и DCLS файлов в одну новость
- Возможность шифровать ссылки на скачки
- Вывод стилизован под nnm-club
- Настройка вывода через шаблон
- Возможность вывода торрента отдельным тегом
- Поиск похожих раздач на rutor.org
- Закиньте все файлы и папки из папки uploads в корень сайта, предварительно заменив {ВАШАТЕМА} на имя вашей темы
- Откройте файл functions.php который находится в деректории /engine/modules/ . После строк
PHP:if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); }
PHP:include(ENGINE_DIR.'/modules/torrent/psxtorrent.php');
PHP:function show_attach($story, $id, $static = false) { global $db, $config, $lang, $user_group, $member_id; $find_1 = array(); $find_2 = array(); $replace_1 = array(); $replace_2 = array(); if( $static ) { if( is_array( $id ) and count( $id ) ) $where = "static_id IN (" . implode( ",", $id ) . ")"; else $where = "static_id = '".intval($id)."'"; $db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_static_files WHERE $where" ); $area = "&area=static"; } else { if( is_array( $id ) and count( $id ) ) $where = "news_id IN (" . implode( ",", $id ) . ")"; else $where = "news_id = '".intval($id)."'"; $db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_files WHERE $where" ); $area = ""; } while ( $row = $db->get_row() ) { $size = formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) ); $row['name'] = explode( "/", $row['name'] ); $row['name'] = end( $row['name'] ); $find_1[] = '[attachment=' . $row['id'] . ']'; $find_2[] = "#\[attachment={$row['id']}:(.+?)\]#i"; if ( ! $user_group[$member_id['user_group']]['allow_files'] ) { $replace_1[] = "<span class=\"attachment\">{$lang['att_denied']}</span>"; $replace_2[] = "<span class=\"attachment\">{$lang['att_denied']}</span>"; } elseif( $config['files_count'] == 'yes' ) { $replace_1[] = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >{$row['name']}</a> [{$size}] ({$lang['att_dcount']} {$row['dcount']})</span>"; $replace_2[] = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >\\1</a> [{$size}] ({$lang['att_dcount']} {$row['dcount']})</span>"; } else { $replace_1[] = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >{$row['name']}</a> [{$size}]</span>"; $replace_2[] = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >\\1</a> [{$size}]</span>"; } } $db->free(); $story = str_replace ( $find_1, $replace_1, $story ); $story = preg_replace( $find_2, $replace_2, $story ); return $story; }
- Откройте файл files.php который находится в папке /engine/inc/ . В нём после строк
PHP:if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); }
PHP:require_once ENGINE_DIR . '/classes/torrent.class.php'; include_once(ENGINE_DIR . '/data/dcls.config.php');
PHP:if( @file_exists( ROOT_DIR . "/uploads/files/" . $file_prefix . $image_name ) ) {
PHP:if ($dclsconfig[vkl] == "on" ){ // проверяем включен ли модуль $fidname = '.torrent'; $proverka = strpos($image_name, $fidname); if ($proverka !== false) { $torrent = new Torrent( ROOT_DIR . "/uploads/files/" . $file_prefix . $image_name ); if ( $errorss = $torrent->errors() ) { // проверка на ошибки и если они есть то ничего не делаем } else { // если же ошибки нет то выполняем работу с торренто if ( $dclsconfig[retreck] == "on" ) { // проверяем нужен добавлять ли ретрекер $massivtreck = array_merge_recursive( $torrent->announce() , explode( "," , str_replace( " ", "", $dclsconfig[retrecker] ) ) ); $torrent->announce(false); $torrent->announce($massivtreck); // добавляем свой трекер } if ( $dclsconfig[trcomment] = "on" ){ // проверяем нужно ли добавление коммента if ( $news_id == 0 ) { $commenttr = 10101 ; $torrent->comment($commenttr); // добавляем коммент } else { $commenttr = str_replace("%link%", $config[http_home_url] . "index.php?newsid=" . /*$_REQUEST['news_id']*/$news_id, $dclsconfig[commenttr]); // формируем коммент $torrent->comment($commenttr); // добавляем коммент } } $torrent->save( ROOT_DIR . "/uploads/files/" . $file_prefix . $image_name ); // сохраняем изменения в торренте } } }
- Откройте файл download.php который находится в папке /engine/ в нём найдите строку
PHP:
$id = intval ( $_REQUEST['id'] );
PHP:if ($_REQUEST['idd'] == "" ){ $id = intval ( $_REQUEST['id'] ); } else { $idd = base64_decode($_REQUEST['idd']); $id = intval ( $idd ); }
- Откройте файл main.tpl и перед </head> вставьте
PHP:
<script type="text/javascript" src="{THEME}/dcls.js"></script>
- Откройте ваш файл style.css и в конец файла вставьте
PHP:/* dcls типа */ .btTbl { BORDER-RIGHT: #98aab1 0px solid; BORDER-TOP: #98aab1 0px solid; BORDER-LEFT: #98aab1 0px solid; BORDER-BOTTOM: #98aab1 0px solid; BACKGROUND-COLOR: #6699cc } .row1 { BACKGROUND-COLOR: #f4f8fb } .row3 { BACKGROUND-COLOR: #AACCFF; font-weight: bold; } .gen { FONT-SIZE: 10pt } .genmed { FONT-SIZE: 9pt } .gensmall { FONT-SIZE: 8pt } .spoiler-wrap { CLEAR: both; BORDER-RIGHT: #c3cbd1 1px solid; BORDER-TOP: #c3cbd1 1px solid; BACKGROUND: #AACCFF; MARGIN: 6px auto; BORDER-LEFT: #c3cbd1 2px solid; WIDTH: 95%; BORDER-BOTTOM: #c3cbd1 1px solid; } .spoiler-wrap-title a{ color: #3030BB; } .spoiler-wrap-title a:visited{ color: #3030BB; } .spoiler-wrap-title a:active{ color: #3030BB; } .spoiler-head { PADDING-RIGHT: 14px; PADDING-LEFT: 14px; FONT-SIZE: 11px; PADDING-BOTTOM: 3px; MARGIN-LEFT: 6px; LINE-HEIGHT: 15px; PADDING-TOP: 1px; } .spoiler-body { PADDING-RIGHT: 6px; BORDER-TOP: #c3cbd1 1px solid; DISPLAY: none; PADDING-LEFT: 6px; BACKGROUND: #f5f5f5; PADDING-BOTTOM: 2px; PADDING-TOP: 1px; } .nik_images {max-width:150px; vertical-align: bottom; margin-top:-6px} /* поиск rutor */ .restable { border-left: 1px solid #ebebeb; border-right: 1px solid #ebebeb; } .restable th { width: 100px; padding: 6px; text-align: left; } .restable thead tr { cursor: pointer; background: #AACCFF; border: 1px solid #98aab1; border-radius: 5px; color: #fff; text-shadow: 1px 1px 2px black; } .restable a { text-decoration:none; } .restable a:hover { text-decoration:underline; } .restable tr:nth-child(2n) { background-color:#f7f7f7; } .restable tr { background-color:#fefefe; } .restable tbody tr:hover { background-color:#e7e7e7; } .restable td { padding:6px; vertical-align:middle; border-bottom: 1px solid #cccccc; color: #333333; font-size:12px; } #pselect { display: inline; padding: 5px 12px; background: #ebebeb; border-bottom: 1px solid rgba(0, 0, 0, 0.251); cursor: pointer; border-radius: 5px; color: #808080; text-shadow: white 0px 1px 2px; margin: 3px; font-size: 15px; } #pselect.active, #pselect:hover { background: #97d234 !important; border-bottom: 1px solid rgba(0, 0, 0, 0.251); text-shadow: 1px 1px 2px black; color: #fff !important; } .restable th { white-space: inherit; } .restable th > span { background: url("../images/torrent/nosorted.gif") 0px 50% no-repeat; padding-left: 8px; } .restable .up > span { background: url("../images/torrent/down.gif") 0px 50% no-repeat; padding-left: 8px; } .restable .down > span { background: url("../images/torrent/up.gif") 0px 50% no-repeat; padding-left: 8px; } .restable b { background: #e4ffb5; } .restable a:hover { color: #5f8f0b; }
- Выполнить запрос к базе данных
Код:INSERT INTO `префикс_admin_sections` (`name`, `title`, `descr`, `icon`, `allow_groups`) VALUES ('dclsinc', 'Работа с DCLS и Torrent файлами', 'Модуль для отображения содержимого dcls и torrent файлов', 'dc.png', '1');
- В настройках сайта разрешить загрузку torrent и dcls файлов