DataLife Engine > Версия для печати > Attachment для незарегистрированных пользователей для DLE 10.2

Этот хак позволяет для неавторизованных пользователей при клике на attachment вывести модальное окно с таймером и рекламой. Пользователю в свою очередь следует подождать 30 секунд или нажать на одну ссылку из рекламы. Прелесть этого хака состоит в том, что он не меняет вывод стандартного attachment и добовляет модальное окно только для гостей сайта.

Работа хака по пунктам:

1) Неавторизованный пользователь клацает по ссылке;2) Открывается модальное окно с просьбой подождать 30 сек. или нажать на одну из ссылок;3) Гость ждет или нажимает на рекламу и Вы получаете свои копеечки;4) В конце появляется ссылка на скачивание файла.

Установка:

Открываем файл engine/modules/functions.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[] = "{$lang['att_denied']}";
            $replace_2[] = "{$lang['att_denied']}";

        } elseif( $config['files_count'] ) {

            $replace_1[] = "{$row['name']} [{$size}] ({$lang['att_dcount']} {$row['dcount']})";
            $replace_2[] = "1 [{$size}] ({$lang['att_dcount']} {$row['dcount']})";

        } else {

            $replace_1[] = "{$row['name']} [{$size}]";
            $replace_2[] = "1 [{$size}]";

        }

    }

    $db->free();

    $story = str_replace ( $find_1, $replace_1, $story );
    $story = preg_replace( $find_2, $replace_2, $story );

    return $story;

}

Заменяем на:

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";

        global $is_logged;

        if(!$is_logged)
        {
            $attachment_guest = "

            Уважаемый Пользователь!
Для того что бы скачать с нашего сервера файл Вам надо быть зарегистрированным на сайте или подождать 30 сек.!

Чтобы ускорить процесс нажмите на одну из ниже представленных ссылок:


Скачать:
var rkcls = '.takru'; // Для wmlink: '.wmlinkru, .wmlinkrul', для Tak.ru: '.takru' var rkink = $('.attachment').html(); $('.attachment a').attr('href', 'javascript://'); $(rkcls).attr('target', '_blank'); $('.attachment').click(function () { $('#comrules').dialog({ autoOpen: true, width: 500, buttons: { 'Закрыть' : function() { $(this).dialog('close'); } } }); setTimeout(rktimer,1000); }); $(rkcls).click(function () { $('#linkHidden').append(rkink); }); function rktimer() { var obj = document.getElementById('rktimer-sec'); obj.innerHTML--; if(obj.innerHTML==0) { $('#linkHidden').html(rkink); } else setTimeout(rktimer,1000); } "; } if ( ! $user_group[$member_id['user_group']]['allow_files'] ) { $replace_1[] = "{$lang['att_denied']}" . $attachment_guest; $replace_2[] = "{$lang['att_denied']}" . $attachment_guest; } elseif( $config['files_count']) { $replace_1[] = "{$row['name']} [{$size}] ({$lang['att_dcount']} {$row['dcount']})" . $attachment_guest; $replace_2[] = "1 [{$size}] ({$lang['att_dcount']} {$row['dcount']})" . $attachment_guest; } else { $replace_1[] = "{$row['name']} [{$size}]" . $attachment_guest; $replace_2[] = "1 [{$size}]" . $attachment_guest; } } $db->free(); $story = str_replace ( $find_1, $replace_1, $story ); $story = preg_replace( $find_2, $replace_2, $story ); return $story; }

Где: заменяем на свой код от Tak.ru или другой системы.

P.S. Некорректно работает для двух и более attachment на странице

Вернуться назад