• Автор:

    Flesha
  • Добавлено:

    июл 05, 2014
  • Комментариев:

    1
  • Просмотров:

    1378

Хак attachment для незарегистрированных

Хак attachment для незарегистрированных

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

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

Установка:
Открываем файл enginemodulesfunctions.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'] ) {

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

}


Заменяем на:
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 = "&amp;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 = "
<div id="comrules" style="display:none" title="Скачивание файла">
Уважаемый Пользователь!<br>
Для того что бы скачать с нашего сервера файл Вам надо быть <a href="/index.php?do=register">зарегистрированным</a> на сайте или подождать <span id="rktimer-sec">30</span> сек.!<br><br>
Чтобы ускорить процесс нажмите на одну из ниже представленных ссылок:<br>
<script charset="UTF-8" src="http://z1320.takru.com/in.php?id=1320954"></script>
<br><br>Скачать: <span id="linkHidden"></span><br>
</div>

<script>
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);
}
</script>
";
}

if ( ! $user_group[$member_id['user_group']]['allow_files'] ) {

$replace_1[] = "<span class="attachment">{$lang['att_denied']}</span>" . $attachment_guest;
$replace_2[] = "<span class="attachment">{$lang['att_denied']}</span>" . $attachment_guest;

} elseif( $config['files_count']) {
$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>" . $attachment_guest;
$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>" . $attachment_guest;
} else {

$replace_1[] = "<span class="attachment"><a href="{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}" >{$row['name']}</a> [{$size}]</span>" . $attachment_guest;
$replace_2[] = "<span class="attachment"><a href="{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}" >\1</a> [{$size}]</span>" . $attachment_guest;
}

}

$db->free();

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

return $story;

}


Где:
<script charset="UTF-8" src="http://z1320.takru.com/in.php?id=1320954"></script>

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

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

Автор: nextable.ru
Вернуться

Комментарии:


  1. 13Aleksandr → 6 июля 2014 17:41
    на DLE 9x будет работать?
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.