DownPage : скачивание файлов на отдельной странице

DownPage : скачивание файлов на отдельной странице

Хак позволяет организовать скачивание файлов на отдельной странице с таймером. То есть при нажатии на скачать файл открывается другая страница, где уже есть прямая ссылка на файл, на которой можно разместить рекламу или что то другое.


Установка:
1. Открыть engine/download.php и найти:
$row = $db->super_query ( "SELECT news_id, name, onserver FROM " . PREFIX . "_files WHERE id ='{$id}'" );

Заменить на:
$row = $db->super_query ( "SELECT news_id, name, onserver, author, date, dcount FROM " . PREFIX . "_files WHERE id ='{$id}'" );

Найти:
$row_news = $db->super_query ( "SELECT id, autor, date, category, alt_name, approve, access FROM " . PREFIX . "_post LEFT JOIN " . PREFIX . "_post_extras ON (" . PREFIX . "_post.id=" . PREFIX . "_post_extras.news_id) WHERE id ='{$row['news_id']}'" );

Заменить на:
$row_news = $db->super_query ( "SELECT id, autor, date, title, category, alt_name, approve, access FROM " . PREFIX . "_post LEFT JOIN " . PREFIX . "_post_extras ON (" . PREFIX . "_post.id=" . PREFIX . "_post_extras.news_id) WHERE id ='{$row['news_id']}'" );

Найти:
$url = @parse_url ( $row['onserver'] );

Добавить ниже:
$timer = 10;    //обратный отсчет, секунды
$offline_time = 1;    //Сколько минут ссылка будет рабочей

if( !$_GET['hash'] OR !$_SESSION['download_timer'] OR $_GET['hash'] != md5( $id . $row['onserver'] . $_SESSION['download_timer'] ) OR $_SESSION['download_timer'] > time() OR $_SESSION['download_timer'] + $offline_time*60 < time() )
{
    $_SESSION['download_timer'] = time() + $timer;

    $cat_info = get_vars( "category" );
    if( ! is_array( $cat_info ) ) {
        $cat_info = array ();
        $db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
        while ( $row = $db->get_row() ) $cat_info[$row['id']] = array_map("stripslashes",$row);
        set_vars( "category", $cat_info );
        $db->free();
    }
  
    $tpl = file_get_contents( ROOT_DIR . "/templates/{$config['skin']}/downpage.tpl" );

    $tpl = str_ireplace( "{category}", $cat_info[$row_news['category']]['name'], $tpl );
    $tpl = str_ireplace( "{category-link}", $config['http_home_url'] . get_url( intval($row_news['category'] )) . "/", $tpl );
    $tpl = str_ireplace( "{author}", "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['author'] ) . "/" . "\">" . $row['author'] . "</a>", $tpl );
    $tpl = str_ireplace( "{title}", stripslashes( $row_news['title'] ), $tpl );   
    $tpl = str_ireplace( "{full_link}", $full_link, $tpl );  
    $tpl = str_ireplace( "{filename}", stripslashes( $row['name'] ), $tpl );
    $tpl = str_ireplace( "{size}", formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) ), $tpl );
    $tpl = str_ireplace( "{date}", date( "d.m.Y, H:i", $row['date'] ), $tpl );
    $tpl = str_ireplace( "{count}", $row['dcount'], $tpl );
    $tpl = str_ireplace( "{timer}", $timer, $tpl );
    $tpl = str_ireplace( "{downlink}", "/engine/download.php?id=$id&hash=" . md5( $id . $row['onserver'] . $_SESSION['download_timer'] ), $tpl );
    $tpl = str_ireplace( "{charset}", $config['charset'], $tpl );
    $tpl = str_ireplace( "{THEME}", $config['http_home_url'] . 'templates/' . $config['skin'], $tpl );
  
    echo $tpl;
    die();
}else $_SESSION['download_timer'] = time();

И настроить под себя:
$timer = 10; //обратный отсчет, секунды
$offline_time = 1; //Сколько минут ссылка будет рабочей

2. В папке с шаблоном создать downpage.tpl и добавить в него следующий код:

Готово!

downpage-skachivanie-fajlov-na-otdelnoj-stranice.zip
Создайте аккаунт или авторизуйтесь для скачивания
 
Версия DLE: 12.х-14.х
Кодировка: win-1251 + utf-8
Автор: Sander
Модификация: SX2

Примечание от Oxigen: Добавлена установка в виде плагина

Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.

Комментариев 4

dds 4 января 2022 16:47
Mansurjon1112, Пробуй так:
Замени:
$url = @parse_url ( $row['onserver'] );

на:
$file_name = pathinfo($row['onserver']);


$row = $db->super_query ( "SELECT news_id, name, onserver FROM " . PREFIX . "_files WHERE id ='{$id}'" );

на:
$row = $db->super_query ( "SELECT news_id, name, onserver, driver FROM " . PREFIX . "_files WHERE id ='{$id}'" );

И про совет от Oxigen снизу не забудь. Должно работать.
Mansurjon1112 4 января 2022 12:45
Имя файла engine/download.php - Ошибка: Не удалось найти код:
$url = @parse_url ( $row['onserver'] );

Имя файла engine/download.php - Ошибка: Не удалось найти код:
$row = $db->super_query ( "SELECT news_id, name, onserver FROM " . PREFIX . "_files WHERE id ='{$id}'" );
Oxigen 7 ноября 2018 09:16
Цитата: Dj_AlexN
Модуль не работает на DLE 13.X - после нажатия на загрузку, сбой на главной странице...

Попробуй заменить:
$tpl = str_ireplace( "{downlink}", "/engine/download.php?id=$id&hash=" . md5( $id . $row['onserver'] . $_SESSION['download_timer'] ), $tpl );

Этим:
$tpl = str_ireplace( "{downlink}", "index.php?do=download&id=$id&hash=" . md5( $id . $row['onserver'] . $_SESSION['download_timer'] ), $tpl );
--------------------
Всё, что вы напишите, будет использовано против вас при показе контекстной рекламы :)
Dj_AlexN 6 ноября 2018 16:10
Модуль не работает на DLE 13.X - после нажатия на загрузку, сбой на главной странице...