У становка модуля "Псевдо торрент трекер + DCLS v1.3" для DLE

Возможности мода :

    1. Работа как псевдо торрент трекер;
    2. Отображение для торрент файлов статистики: сколько раз скачан, популярность, сиды, пиры, название, общий размер, SHA Hash, анонсы;
    3. Отображаются файлы которые находятся в торрнете
    4. Возможность добавлять dcls файлы. для него отображаются такие данные: сколько раз скачан, количество папок, количество файлов, общий размер
    5. Отображение файлов описанных в dcls файле + удобная навигация по папкам. Для медиа файлов всплывающие подсказки по битрейду файлов, качеству звука и разрешению видео
    6. Удобная админка модуля
    7. Возможность включать и выключать модуль через админку
    8. Функция формирования магнет ссылок для торрент файлов
    9. Возможность выбирать какую ссылку давать на торрент (магнет ссылку, ссылку на торрент файл или обе ссылки сразу)
    10. Возможность добавлять к торрент файлу свой ретрекер
    11. Возможность изменить комментарий в торрент файле и вставить в нём ссылку на новость на вашем сайте
    12. Возможность включить или выключить показ дополнительных данных для медиа файлов которые описаны в DCLS файле
    13. Возможность добавлять сколько угодно торрент и DCLS файлов в одну новость
    14. Возможность шифровать ссылки на скачки
    15. Вывод стилизован под nnm-club
    16. Настройка вывода через шаблон
    17. Возможность вывода торрента отдельным тегом
    18. Поиск похожих раздач на rutor.org

Изменения в версии 1.4 :

    1. Исправлены ошибки с языковым файлом
    2. Возможность добавлять несколько ретрекеров
    3. Поиск похожих раздач на rutor.org (в основе использовал уге готовый модуль переделав егопод себя)
    4. Вывод отдельным тегом в короткой новости
    5. Вывод отдельным тегом в полной новости
>
  1. Перезалейте файлы модуля
  2. В папке темы удалите файлы dcls.tpl , dclslist.tpl , torrent.tpl , torrentlist.tpl
  3. Откройте файл files.php который находится в папке /engine/inc/ в нём найдите
                    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" ) { // проверяем нужен добавлять ли ретрекер
    $torrent->announce($dclsconfig[retrecker]); // добавляем свой трекер
    }
    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 ); // сохраняем изменения в торренте
    }
    }
    }
    и замените на
                    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 ); // сохраняем изменения в торренте
    }
    }
    }
  4. После чего зайдите в админку модуля и сохраните настройки.
>
  1. Удалить папку do в корне сайта
  2. В папке /engine/modules удалить файлы:
    1. psxtorrent.php
    2. gett.php
    3. dcls.php
  3. Закиньте все файлы и папки из папки uploads в корень сайта, предварительно заменив {TEMPLATES} на имя вашей темы
  4. Откройте файл functions.php которы находится в деректории /engine/modules/ в нём замените строку
    include(ENGINE_DIR.'/modules/psxtorrent.php');
    на
    include(ENGINE_DIR.'/modules/torrent/psxtorrent.php');
  5. Откройте файл files.php который находится в папке /engine/inc/ в нём найдите
                    if ($dclsconfig[vkl] == "on" ){ //  проверяем включен ли модуль
    $fidname = '.torrent';
    $proverka = strpos($image_name, $fidname);
    if ($proverka !== false) {
    $torrent = new Torrents( ROOT_DIR . "/uploads/files/" . $file_prefix . $image_name );
    if ( $errorss = $torrent->errors() ) { // проверка на ошибки и если они есть то ничего не делаем

    } else { // если же ошибки нет то выполняем работу с торренто
    if ( $dclsconfig[retreck] == "on" ) { // проверяем нужен добавлять ли ретрекер
    $torrent->announce($dclsconfig[retrecker]); // добавляем свой трекер
    }
    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 ); // сохраняем изменения в торренте
    }
    }
    }
    и замените на
                    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" ) { // проверяем нужен добавлять ли ретрекер
    $torrent->announce($dclsconfig[retrecker]); // добавляем свой трекер
    }
    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 ); // сохраняем изменения в торренте
    }
    }
    }
  6. Откройте файл download.php который находится в папке /engine/ в нём найдите строку
    $id = intval ( $_REQUEST['id'] );
    и замените на
    if ($_REQUEST['idd'] == "" ){
    $id = intval ( $_REQUEST['id'] );
    } else {
    $idd = base64_decode($_REQUEST['idd']);
    $id = intval ( $idd );
    }
>
  1. Закиньте все файлы и папки из папки uploads в корень сайта, предварительно заменив {TEMPLATES} на имя вашей темы
  2. Откройте файл functions.php который находится в деректории /engine/modules/ . После строк
    if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
    }
    добавьте строку
    include(ENGINE_DIR.'/modules/torrent/psxtorrent.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;

    }

    и удалите её
  3. Откройте файл files.php который находится в папке /engine/inc/ . В нём после строк
    if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
    }
    добавьте
    require_once ENGINE_DIR . '/classes/torrent.class.php';
    include_once(ENGINE_DIR . '/data/dcls.config.php');
    Затем найдите строку
    			if( @file_exists( ROOT_DIR . "/uploads/files/" . $file_prefix . $image_name ) ) {
    и после неё вставьте
                    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 ); // сохраняем изменения в торренте
    }
    }
    }
  4. Откройте файл download.php который находится в папке /engine/ в нём найдите строку
    $id = intval ( $_REQUEST['id'] );
    и замените на
    if ($_REQUEST['idd'] == "" ){
    $id = intval ( $_REQUEST['id'] );
    } else {
    $idd = base64_decode($_REQUEST['idd']);
    $id = intval ( $idd );
    }
  5. Откройте файл show.full.php который находится в дериктории /engine/modules/ в нём найдите строку
    if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
    }
    и ниже вставьте
    include_once(ENGINE_DIR . '/data/dcls.config.php');
    include(ENGINE_DIR.'/modules/torrent/fullnews.php');
    затем найдите
    		$tpl->set( '{login}', $row['autor'] );
    
    и ниже вставьте
            if ( $dclsconfig[fullnews] == "on" ) {
    $tpl->set( '{torrents}', torrentsinfo($row['id']) );
    } else {
    $tpl->set( '{torrents}', "" );
    }
  6. Откройте файл show.short.php который находится в дериктории /engine/modules/ в нём найдите строки
    if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
    }
    и ниже вставьте строки
    include_once(ENGINE_DIR . '/data/dcls.config.php');
    include(ENGINE_DIR.'/modules/torrent/shortnews.php');
    затем найдите строку
    		$tpl->set( '{login}', $row['autor'] );
    и ниже вставьте
            if ($dclsconfig[shortnews] == "on") {
    $tpl->set( '{torretinfo}' , torrentinfo($row['id']) );
    } else {
    $tpl->set( '{torretinfo}' , "" );
    }
  7. Откройте файл main.tpl и перед </head> вставьте
    <script type="text/javascript" src="{THEME}/dcls.js"></script>
  8. Откройте ваш файл style.css и в конец файла вставьте
    /*  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;
     }
  9. Выполнить запрос к базе данных
    INSERT INTO `префикс_admin_sections` (`name`, `title`, `descr`, `icon`, `allow_groups`) VALUES
    ('dclsinc', 'Работа с DCLS и Torrent файлами', 'Модуль для отображения содержимого dcls и torrent файлов', 'dc.png', '1');
    где префикс заменить на префикс вашей базы данных. (поумолчанию это dle)
  10. В настройках сайта разрешить загрузку torrent и dcls файлов