Решил я тут заморочиться с этим говномодом и доработать до новой версии DLE 11.1
запрос в базу
ALTER TABLE `ВАШПРЕФИКС_files` ADD `size` BIGINT NOT NULL AFTER `onserver`; ALTER TABLE `ВАШПРЕФИКС_static_files` ADD `size` BIGINT NOT NULL AFTER `onserver`; ALTER TABLE `ВАШПРЕФИКС_usergroups` ADD dp_timer VARCHAR(10) NOT NULL DEFAULT '0';
в корне создаем файл dpi.php и запускаем
<?PHP error_reporting(7); ini_set('display_errors', true); ini_set('html_errors', false); define('DATALIFEENGINE', true); define('ROOT_DIR', dirname(__FILE__)); define('ENGINE_DIR', ROOT_DIR . '/engine'); include ('engine/api/api.class.php'); require_once(ENGINE_DIR . '/classes/mysql.php'); require_once(ENGINE_DIR . '/data/dbconfig.php'); $config['charset'] = "utf-8"; $db_charset = "utf8"; $db_collate = "utf8_general_ci"; $dle_api->install_admin_module('downpage', 'DownPage Ultimate 7.1', 'DownPage Ultimate for DLE 11', 'dp_icon.jpg', '1'); echo<<<HTML <div style="padding:40px; text-align:center;">Выполнение SQL запросов было успешно завершено.<br />Удалите файл HTML; echo __FILE__; ?>
в файл .htaccess после RewriteEngine ON вставляем
#Downpage Mod RewriteRule ^save_file-([0-9]+)+$ /engine/downpage.php?get=$1 [L] RewriteRule ^save_staticfile-([0-9]+)+$ /engine/downpage.php?get=$1&area=static [L]
в файле functions.php меняем
$tpl->set( '{link}', $config['http_home_url']."engine/download.php?id=".$row['id'].$area );
на
$st_p_hpu=($area) ? 'static' : ''; $tpl->set( '{link}', $config['http_home_url']."save_".$st_p_hpu."file-".$row['id'].$area );
в этом же файле находим
$row['name'] = explode( "/", $row['name'] );
выше вставляем
if (!empty($row['size']) AND $row['size']>0) { $size = formatsize($row['size']); } else{ $binsize = (@filesize(ROOT_DIR . '/uploads/files/' . $row['onserver'])); $size_arr[$row['id']]=$binsize; //$db->query( "UPDATE " . PREFIX . "_files SET size='{$size}' WHERE onserver = '{$row['onserver']}'" ); $size = formatsize($binsize); }
в этом же файле находим
return $story;
выше вставляем
$static_prefix=($static) ? '_static' : ''; if(is_array($size_arr) && count($size_arr)){ foreach($size_arr as $key=>$value) { $query = 'UPDATE ' . PREFIX . $static_prefix.'_files SET '; $query .= "`size` = '".$value."'"; $query .= ' WHERE `id` = \''.$key.'\';'; $db->query($query); } }
в паке engine создаем файл downpage.php
<?php /* ===================================================== DownPage Ultimate for DLE ----------------------------------------------------- iGrock. Yeti. Simon. Dr.Soft. HAMMER. fix for 9.6 kiua ----------------------------------------------------- Данный код защищен авторскими правами ===================================================== */ error_reporting(E_ALL ^ E_NOTICE); define('DATALIFEENGINE', true); define('ROOT_DIR', '..'); define('ENGINE_DIR', dirname (__FILE__)); # >>> Для того что бы не появились лишние запросы, подключаем всё по отдельности а не одним файлом через /init.php require_once ENGINE_DIR. '/data/config.php'; require_once ENGINE_DIR. '/data/dp_conf.php'; require_once ENGINE_DIR. '/classes/mysql.php'; require_once ENGINE_DIR. '/data/dbconfig.php'; require_once ENGINE_DIR. '/modules/functions.php'; require_once ENGINE_DIR. '/modules/sitelogin.php'; require_once ENGINE_DIR . '/data/dp_conf.php'; if ($config['allow_gzip'] == "1") { //require_once ENGINE_DIR. '/modules/gzip.php'; } require_once ENGINE_DIR. '/classes/templates.class.php'; require_once ROOT_DIR. '/language/'.$config['langs'].'/downpage.lng'; # <<< Конец $tpl = new dle_template; $tpl->dir = ROOT_DIR.'/templates/'.$config['skin']; define('TEMPLATE_DIR', $tpl->dir); if ($config['allow_gzip'] == "1") { //$Timer = new microTimer; //$Timer->start(); } switch ($_REQUEST['action']) { default: if ($config['http_home_url'] == ""){ $config['http_home_url'] = "http://{$_SERVER['HTTP_HOST']}"; } if ($config['files_antileech']){ function reset_url($url){ $value = str_replace("http://", "", $url); $value = str_replace("www.", "", $value); $value = explode("/", $value); $value = reset($value); return $value; } $_SERVER['HTTP_REFERER'] = reset_url($_SERVER['HTTP_REFERER']); $_SERVER['HTTP_HOST'] = reset_url($_SERVER['HTTP_HOST']); //vd($_SERVER['HTTP_REFERER']); //vd($_SERVER['HTTP_HOST'],1); //die(); if ($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER']){ header("Location: {$config['http_home_url']}"); } } $tpl->load_template('downpage.tpl'); $file_id = intval($_REQUEST['get']); if ($_REQUEST['area'] == "static") { $db->query("SELECT id, name, onserver, author, dcount, size FROM ".PREFIX."_static_files WHERE id = '$file_id'"); } else { $db->query("SELECT id, name, onserver, author, dcount, size FROM ".PREFIX."_files WHERE id = '$file_id'"); } while($row = $db->get_row()){ if ($file_id == $row['id']){ if ($dp_conf['log_save'] == 1) { $log_date = date ("Y-m-d H:i:s"); $log_ip = $_SERVER['REMOTE_ADDR']; $dp_func_log=fopen("../engine/data/dp_log.txt","a"); if (!$is_logged) {$member_id['name'] = $dplang[info_guest_name];} fwrite($dp_func_log,$member_id['name']."|".$log_date."|".$log_ip."|".$row['name']."\n"); fclose ($dp_func_log); } $type = $dplang[info_file_notype]; # >>> Определение типа файла. По такой же схеме можно добавлять свои типы if(strpos($row['name'], ".zip") !== false) $type = 'ZIP архив (*.zip)'; if(strpos($row['name'], ".jar") !== false) $type = 'JAVA архив (*.jar)'; if(strpos($row['name'], ".rar") !== false) $type = 'RAR архив (*.rar)'; if(strpos($row['name'], ".7z") !== false) $type = '7Z архив (*.7z)'; if(strpos($row['name'], ".swf") !== false) $type = 'Flash анимация (*.swf)'; if(strpos($row['name'], ".flv") !== false) $type = 'Flash видео (*.flv)'; if(strpos($row['name'], ".txt") !== false) $type = 'Текстовый файл (*.txt)'; if(strpos($row['name'], ".mp3") !== false) $type = 'Аудио файл (*.mp3)'; if(strpos($row['name'], ".exe") !== false) $type = 'Исполняемый файл Windows (*.exe)'; if(strpos($row['name'], ".doc") !== false) $type = 'Документ MS Office (*.doc, *.docx)'; if(strpos($row['name'], ".pdf") !== false) $type = 'Документ Adobe Reader (*.pdf)'; # <<< Конец $size = formatsize(@filesize(ROOT_DIR."/uploads/files/".$row['onserver'])); if($config['files_count'] == "1"){ $sdownload = $row['dcount']; } $tpl->set('{THEME}', ROOT_DIR.'/templates/'.$config['skin']); $tpl->set('{filecount}', $sdownload); $tpl->set('{filename}', $row['name']); $tpl->set('{filetype}', $type); $tpl->set('{filesize}', $size); $tpl->set('{fileuploader}', $row['author']); $tpl->set('{sha256}', @hash_file('sha256', ROOT_DIR . '/uploads/files/' . $row['onserver'] ) ); $tpl->set( '{md5}', @md5_file( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) ); } $user_group = array (); $db->query("SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC"); while($row = $db->get_row()){ $user_group[$row['id']] = array(); foreach ($row as $key => $value){ $user_group[$row['id']][$key] = $value; } } set_vars ("usergroup", $user_group); if (!$is_logged) {$member_id['user_group'] = 5;} //var_dump($member_id['user_group']); $dp_timer = isset($user_group[$member_id['user_group']]['dp_timer'])?$user_group[$member_id['user_group']]['dp_timer']:5; if ($dp_conf['allow_download'] == "1") { $js_timer = <<<HTML \n \n<div id="save-btn"> <form name="download" method="GET" action="../engine/download.php"> <input type="hidden" name="id" value="{$file_id}"><input type="hidden" name="area" value="{$_REQUEST['area']}"> <button id="btnn" type="submit" disabled class="btn btn-default">{$dplang['info_download_file']}</button> </form> </div> <script type="text/javascript"> function timer() { if(c>0) { $('#btnn').text('{$dplang['info_download_timer']}: '+c+' {$dplang['info_secs']}'); c=c-1; setTimeout("timer()", 1000); } else { $('#btnn').text('{$dplang['info_download_file']}'); $('#btnn').removeAttr('disabled'); //document.getElementById("res").innerHTML = '<center><form name="download" method="GET" action="../engine/download.php"><input type="hidden" name="id" value="{$file_id}"><input type="hidden" name="area" value="{$_REQUEST['area']}"><input type="submit" class="btn btn-default" value="{$dplang['info_download_file']}" class="button"></form></center>'; } } var c={$dp_timer}; timer(); </script> <noscript><font face="Verdana"><b style="color: red;">{$dplang['info_no_javascript']}<br /></b></font></noscript> HTML; } else { $js_timer = <<<HTML \n<p><b style="color: red;">{$dplang['info_offline_download']}<br /></b></p> HTML; } $complaint_link = <<<HTML <a href="#complaint" onClick="window.open('/engine/downpage.php?get={$file_id}&action=complaint', '_blank', 'Toolbar=0, Scrollbars=0, Resizable=0, Width=320, resize=no, Height=450');">{$dplang['info_complaint_button']}</a> HTML; if ($dp_conf['complaint_online'] == "1"){ $tpl->set('{complaint}', $complaint_link); if ($_REQUEST['area'] == "static") $tpl->set('{complaint}', ""); } else { $tpl->set('{complaint}', ''); } $tpl->set('{timer}', $js_timer); $tpl->compile('downpage'); echo $tpl->result['downpage']; $tpl->global_clear(); } $db->free(); break; case "complaint": $file_id = intval($_REQUEST['get']); $db->query("SELECT id, name, onserver, author FROM ".PREFIX."_files WHERE id = '$file_id'"); while($row = $db->get_row()){ echo <<<HTML <html> <head> <link href="{THEME}/css/front.css" rel="stylesheet" type="text/css" /> <title>{$dplang['info_complaint_button']}</title> </head> <body> <b>{$dplang['cmpl_file_info']}</b><br /><br /> {$dplang['cmpl_ids']}: {$file_id}<br /> {$dplang['cmpl_filename']}: {$row['name']}<br /> {$dplang['cmpl_uploader']}: {$row['author']}<br /><br /> <form action="" name="complaint" method="post"> <input type="hidden" name="action" value="sendcomplaint"> <input type="hidden" name="get" value="{$file_id}"> <b>{$dplang['info_complaint_button']}</b><br /><br /> {$dplang['cmpl_reasontype']}: <select name="reason"> <option value=""></option> <option value="{$dplang['cmpl_reason_1']}">{$dplang['cmpl_reason_1']}</option> <option value="{$dplang['cmpl_reason_2']}">{$dplang['cmpl_reason_2']}</option> <option value="{$dplang['cmpl_reason_3']}">{$dplang['cmpl_reason_3']}</option> </select><br /><br /> {$dplang['cmpl_comment']}: <br /><br /><textarea name="comment">{$dplang['cmpl_commenttext']}</textarea> <br /><br /><input type="submit" style="width:155px;" value="{$dplang['cmpl_complaint_send']}" class="button"> </form> {$dplang['cmpl_global_info']} </body> </html> HTML; } $db->free(); break; case "sendcomplaint": $file_id = $_REQUEST['get']; $time = time()+($config['date_adjust']*60); $db->query("SELECT id, name, onserver, author FROM ".PREFIX."_files WHERE id = '$file_id'"); while($row = $db->get_row()){ $filename = $row['name']; $fileuploader = $row['author']; } $complaint_message = "<b>".$dplang['info_complaint_button']."</b><br /><br /><b>".$dplang['cmpl_ids'].":</b> {$file_id}<br /><b>".$dplang['cmpl_filename'].":</b> {$filename}<br /><b>".$dplang['cmpl_uploader'].":</b> {$fileuploader}<br /><br /><b>".$dplang['cmpl_send_reason'].":</b> ".$_POST['reason']."<br /><b>".$dplang['cmpl_send_comm'].":</b> ".$_POST['comment']; $db->query("INSERT INTO ".USERPREFIX."_pm (subj, text, user, user_from, date, pm_read, folder) VALUES ( '".$dplang['info_complaint_button']. "ID-".$file_id."', '".$complaint_message."', '".$dp_conf['complaint_adm_id']."', '".$member_id['name']."', '".$time."', '".$dp_conf['complaint_messread']."', 'inbox' )"); if ($dp_conf['complaint_messread'] == "1"){$dp_conf['complaint_messread'] = "0";} else {$dp_conf['complaint_messread'] = "1";} $db->query("UPDATE ".USERPREFIX."_users set pm_all=pm_all+1, pm_unread=pm_unread+".$dp_conf['complaint_messread']." where user_id='".$dp_conf['complaint_adm_id']."'"); echo <<<HTML <html> <head> <style type="text/css"> html, body {font-family: verdana; font-size: 12px; color: #000000;} </style> <title>{$dplang['info_complaint_button']}</title> </head> <body> <b>{$dplang['info_complaint_button']} {$row['name']} {$dplang['cmpl_send_ok']}</b><br><br> {$dplang['cmpl_adm_text']}:<br><br><hr>{$complaint_message}<hr> <br />{$dplang['cmpl_global_2info']} </body> </html> HTML; $db->free(); break; } $db->close(); //if ($config['allow_gzip'] == "1") GzipOut(); ?>
в папке data создаем файл dp_conf.php
<?php $dp_conf = array( 'online' => "1", 'allow_download' => "1", 'allow_hpu' => "1", 'log_save' => "1", 'complaint_online' => "1", 'complaint_messread' => "no", 'complaint_adm_id' => "1", 'ftp_function' => "1", 'users' => "0", 'ftp_login' => "", 'ftp_pass' => "", 'vers' => "Ultimate", ); ?>
в папке шаблона создаем downpage.tpl
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="robots" content="noindex, nofollow" /> <title>Скачивание файла {filename}</title> <link href="{THEME}/css/front.css" rel="stylesheet" type="text/css" /> <link href="{THEME}/css/dwn.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/engine/classes/min/index.php?charset=utf-8&g=general&18"></script> </head> <body> <div class="wrp"> <div class="container lines-bg"> <div class="white-bg"> <div class="block-head"> <h1 class="dwn-title h3">Скачивание файла {filename}</h1><hr /> </div> <div class="block-body"> <p><b>Имя:</b> {filename}</p> <p><b>Тип:</b> {filetype}</p> <p><b>Размер:</b> {filesize}</p> <p><b>Проверено на вирусы:</b> <a target="_blank" href="https://www.virustotal.com/ru/file/{sha256}/analysis/" rel="noopener noreferrer">Virustotal</a></p> <p><b>MD5:</b> {md5}</p> <p><b>Скачиваний:</b> {filecount}</p> <p><b>Загрузил:</b> <a href="/user/{fileuploader}" target="_blank" rel="noopener noreferrer"> {fileuploader}</a></p> <p>{timer}</p> </div> <div class="block-foot"> <p class="gray">Чтобы сократить время ожидания <a href="/reg.html">зарегистрируйтесь</a> на сайте</p> <p>[group=1,2,3,4,5]{complaint} · [/group][group=5]<a href="/reg.html" target="_blank" rel="noopener noreferrer"><b>Надоело ждать?</b></a> · [/group] <a href="/">Главная</a> · <a href="/mods/">Моды</a> · <a href="/maps/">Карты</a> · <a href="/resource-packs/">Ресурспаки</a></p> </div> </div> </div> <script> jQuery(function($){ $.get("/view/minecraft/images/sprite.svg", function(data) { var div = document.createElement("div"); div.innerHTML = new XMLSerializer().serializeToString(data.documentElement); document.body.insertBefore(div, document.body.childNodes[0]); }); }); </script> {include file="modules/foot.tpl"} </div> </body> </html>
в папку Russian файл downpage.lng
<?php $dplang_adm = array ( 'global_opt' => "Общие настройки", 'global_opt_i' => "Настройки модуля, управление некоторыми функциями", 'ultimate' => "Настройка модуля на внешние файлы", 'log_opt' => "Лог файл скачиваний", 'log_opt_i' => "Лог файл скачиваний файлов с вашего сервера", 'mod_online' => "Модуль включен", 'mod_offline' => "Модуль выключен", 'mod_name' => "Название", 'mod_vers' => "Версия", 'mod_starus' => "Режим", 'mod_author' => "Авторы модификаций", 'other' => "Дополнительно", 'opt_group' => "Настройка групп пользователей", 'opt_complaint' => "Настройка системы жалоб на файлы", 'opt_exit' => "Выйти в главное меню", 'mkopt_on' => "Включен", 'mkopt_off' => "Отключен", 'mkopt_on2' => "Включена", 'mkopt_off2' => "Отключена", 'mkopt_yes' => "Да", 'mkopt_no' => "Нет", 'global_opt_1_online' => "Режим работы модуля", 'global_opt_1_online_i' => "Если 'Отключен' - будет использоватся обычное скачивание файла", 'global_opt_1_allowdown' => "Пользователи могут скачивать файлы", 'global_opt_1_allowdown_i' => "Если 'Нет' - то у всех пользователей вместо таймера с ожиданием времени будет надпись мол "Скачивание файлов с сервера временно не возможно, повторите свой запрос через некоторое время..."", 'global_opt_1_hpu' => "ЧПУ для модуля", 'global_opt_1_hpu_i' => "Eсли 'Да', то ссылки на файлы будут форсироваться в виде псевдо URL, которые улучшают визуальное восприятие ссылки. Например http://yoursite.ru/savefile-ID", 'global_opt_1_savelog' => "Ведение лога скачиваний файлов", 'global_opt_1_savelog_i' => "Включение / Отключение ведения лог файла скачиваний файлов с вашего сервера. Включение данной опции увеличивает нагрузку на процессор сервера", 'global_opt_3_allowcomplaint' => "Система жалоб на файлы", 'global_opt_3_allowcomplaint_i' => "Если 'Включена' то у пользователей будет возможность использовать систему жалоб на файлы", 'global_opt_3_complmessread' => "Сообщение с жалобой прочитано", 'global_opt_3_complmessread_i' => "Если 'Да' то окно об новом входящем сообщение всплывать не будет", 'global_opt_3_adminid' => "Индендификатор администратора", 'global_opt_3_adminid_i' => "Введите индендификатор того администратора которому необходимо отправлять сообщения содержащие жалобы на файлы. Пример: Если вы устанавливали DLE на сервер, вам был присвоен интенфикатор '1'", 'fftp_size' => "Использовать функцию ftp_size () для определения размера файла.", 'fftp_size_i' => "Может некорректно определять если размер файла превышает 2 гб. Если выбрано Нет используется функция которую писал Simon под свой фтп. Работоспособность на вашем сервере не гарантируется.", 'ftp_on2' => "Да", 'ftp_off2' => "Нет", 'users' => "Подсчёт скачиваний", 'users_i' => "Подсчет кликов по ссылке или количество зарегистрированных пользователей скачавших файл.", 'users_y' => "Клики", 'users_n' => "Пользователи", 'ftp_login' => "FTP логин", 'ftp_login_i' => "Если поле пустое логин = anonymous", 'ftp_pass' => "FTP пароль", 'ftp_pass_i' => "Если поле пустое пароль = anonymous", 'opt_allsave' => "Сохранить и применить настройки", 'log_0' => "Лог файл пуст...", 'log_sort_login' => "Логин", 'log_sort_date' => "Дата - Время", 'log_sort_ip' => "IP-адресс", 'log_sort_file' => "Имя файла", 'log_clear' => "Лог файл был успешно очишен!", 'opt_back' => "Вернутся назад", 'opt_allsave_ok' => "Настройки успешно сохранены!", 'mod_log_addon' => "Плагин", 'mod_log_help' => " Вы также можите просмотреть данный файл с помощью FTP клиента, путь: <b>/engine/data/dp_log.txt</b><br> Синтакис его будет таков: <b>Логин_скачавшего|Дата_время|IP_адресс|Имя_файла</b><br><br> Выполнять очистку лог файла рекомендуется как минимум 1 раз в неделю, т.к. данный файл может стать больших размеров", 'opt_log_clear' => "Очистить лог файл", 'global_linktoback' => "вернуться назад", 'global_modhome' => "Главная страница", 'mod_install_check' => "<b>Внимание!</b><br>После установки модуля на сервер Вы не удалили файл <b>dp_install.php</b> - это делает Ваш сайт уязвимым. Прежде чем продолжить работу, удалите данный файл с Вашего сервера!", ); $dplang = array ( 'info_sdownloads' => "Скачиваний", 'info_noperms' => "У вас не достаточно прав для скачивания файлов.", 'info_download_timer' => "Ожидайте", 'info_secs' => "секунд(ы)", 'info_download_file' => "Скачать файл", 'info_no_javascript' => "Включите у браузера поддержку JavaScript!", 'info_offline_download' => "Скачивание файлов с сервера временно не возможно, повторите свой запрос через некоторое время...", 'info_complaint_button' => "Битый файл?", 'cmpl_file_info' => "Данные об файле", 'cmpl_ids' => "ID файла", 'cmpl_filename' => "Имя файла", 'cmpl_uploader' => "Загрузил", 'cmpl_reasontype' => "Тип жалобы", 'cmpl_comment' => "Комментарий к жалобе", 'cmpl_commenttext' => "Текст вашей жалобы...", 'cmpl_complaint_send' => "Отправить жалобу", 'cmpl_global_info' => "* - Все поля обязательны к заполнению.<br /><br /><b>Внимание:</b> За ложную отправку жалобы - вы получите бан.", 'cmpl_reason_1' => "В файле вирус", 'cmpl_reason_2' => "Битый архив", 'cmpl_reason_3' => "Укажу ниже...", 'cmpl_send_comm' => "Комментарий", 'cmpl_send_reason' => "Причина", 'cmpl_send_ok' => "отправлена.", 'cmpl_adm_text' => "Ниже приведён текст который был отправлен администратору", 'cmpl_global_2info' => "<b>Внимание:</b> За ложную отправку жалобы - вы получите бан.", 'info_guest_name' => "Гость", 'info_file_notype' => "Неопределенно...", ); ?>
Открываем /engine/inc/usergroup.php и ищем:
$max_pm_value = $user_group[$id]['max_pm'];
Меняем на код:
$max_pm_value = $user_group[$id]['max_pm']; $dp_timer = $user_group[$id]['dp_timer'];
Снова ищем в этом файле:
$max_files = intval( $_REQUEST['max_files'] );
Изменяем:
$max_files = intval( $_REQUEST['max_files'] ); $dp_timer = intval($_REQUEST['dp_timer']);
Снова ищем:
$db->query( "UPDATE " . USERPREFIX . "_usergroups SET group_name='$group_name',
Изменяем на:
$db->query("UPDATE " . USERPREFIX . "_usergroups SET group_name='$group_name', dp_timer='$dp_timer',
ищем
<tr> <td><h6>{$lang['group_mpm']}</h6><span class="note large">{$lang['hint_gmpm']}</span></td> <td><input type="text" size="20" name="max_pm" value="{$max_pm_value}"></td> </tr>
выше вставляем
<tr> <td><b>Ожидание перед скачиванием файла</b><br /> <span class="small">Вы можете указать количичество секунд которые необходимо ждать пользователю перед тем как начнётся скачивание файла. Если установить значение в "0" - Выводится сразу ссылка на загрузку файла. Если оставить пустым будет выведенно сообщение мол "Вы не можите скачивать файлы"</span></td> <td><input class="edit" type="text" size="10" name="dp_timer" value="{$dp_timer}"> </td> </tr>
создаем файл в папке engine/inc/downpage.php
<?php /* ===================================================== DownPage Ultimate for DLE версия от Yeti ----------------------------------------------------- (c) 2012 iGrock. Yeti. Simon. Dr.Soft. HAMMER fix kiua ----------------------------------------------------- Данный код защищен авторскими правами ===================================================== */ if (!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } if ($member_id['user_group'] != 1) { msg("error", $lang_p['opt_denied'], $lang_p['opt_denied']); } require_once (ENGINE_DIR . '/data/dp_conf.php'); include_once (ROOT_DIR . '/language/' . $config['langs'] . '/downpage.lng'); function dp_cp_styles() { echo <<< HTML <style> .opacity{opacity:0.60; -moz-opacity:0.60; filter:alpha(opacity=60);} .opacity:hover {opacity:1.0; -moz-opacity:1.0; filter:alpha(opacity=100);} </style> HTML; } function open_table() { echo <<< HTML <table width="100%"> <tr> <td style="padding:5px;" bgcolor="#FFFFFF"> HTML; } function close_table() { echo <<< HTML </td> </tr> </table> HTML; } function unterline() { echo "<div class="unterline"></div>"; } function tableheader($header_name, $link_to_back) { global $dplang_adm; if ($link_to_back == 1) { $link_to_back = " [ <a href="$PHP_SELF?mod=downpage">" . $dplang_adm['global_linktoback'] . "</a> ]"; } else { $link_to_back = ""; } echo <<< HTML <table width="100%"> <tr> <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">DownPage Ultimate for DLE {$header_name}{$link_to_back}</div></td> </tr> </table> HTML; unterline(); } function navig() { global $dplang_adm; open_table(); tableheader("-> {$dplang_adm['global_modhome']}", 0); echo <<< HTML <table width="100%"> <tr> </tr> <tr> <td width="50%"><div class="quick"><a href="$PHP_SELF?mod=downpage&action=options"><h3>{$dplang_adm['global_opt']}</h3>{$dplang_adm['global_opt_i']}</a></div></td> <td width="50%"><div class="quick"><a href="$PHP_SELF?mod=downpage&action=log"><h3>{$dplang_adm['log_opt']}</h3>{$dplang_adm['log_opt_i']}</a></div></td> </tr> </table> HTML; close_table(); } if ($_REQUEST['action'] == "") { echoheader("", ""); navig(); open_table(); dp_cp_styles(); if ($dp_conf['online'] == "1") { $dp_onl_info = $dplang_adm['mod_online']; } else { $dp_onl_info = "<font color=red>{$dplang_adm[mod_offline]}</font>"; } ; echo <<< HTML <table> <tr> <td class="navigation" style="padding: 1px;"> </td> <td class="navigation" style="padding: 1px;"> <b>{$dplang_adm['mod_name']}</b>: DownPage Ultimate for DLE 11 версия от ZeroT01erance<br /> <b>{$dplang_adm['mod_vers']}</b>: {$dp_conf['vers']} от 07.09.2016<br /> <b>{$dplang_adm['mod_starus']}</b>: {$dp_onl_info}<br /> <b>{$dplang_adm['mod_author']}</b>: iGrock. Yeti. Simon. Dr. Soft. HAMMER. fix for 9.6 kiua<br /><br /> </td> </tr> </table> HTML; if (@file_exists("dp_ultimate_install.php")) { echo "<br><table width="100%" align=center><tr><td style='padding:3px; border:1px dashed red; background-color:lightyellow;' class=main>" . $dplang_adm['mod_install_check'] . "</td></tr></table>"; } close_table(); echofooter(); } if ($_REQUEST['action'] == "options") { echoheader("", ""); open_table(); tableheader("-> {$dplang_adm['global_opt']}", 1); function showRow($title = "", $description = "", $field = "") { echo "<tr> <td style="padding:4px" class="option"> <b>$title</b><br /><span class=small>$description</span> <td width=394 align=middle > $field </tr><tr><td background="engine/skins/images/mline.gif" height=1 colspan=2></td></tr>"; $bg = ""; $i++; } function makeDropDown($options, $name, $selected) { $output = "<select name="$name">\r\n"; foreach ($options as $value => $description) { $output .= "<option value="$value""; if ($selected == $value) { $output .= " selected "; } $output .= ">$description</option>\n"; } $output .= "</select>"; return $output; } foreach ($user_group as $group) $sys_group_arr[$group['id']] = $group['group_name']; echo <<< HTML <script language='JavaScript' type="text/javascript"> function ChangeOption(selectedOption) { document.getElementById('global').style.display = "none"; document.getElementById('ultimate').style.display = "none"; document.getElementById('complaint').style.display = "none"; if(selectedOption == 'global') {document.getElementById('global').style.display = "";} if(selectedOption == 'ultimate') {document.getElementById('ultimate').style.display = "";} if(selectedOption == 'complaint') {document.getElementById('complaint').style.display = "";} } </script> <div style="padding-top:5px;padding-bottom:2px;"> <table width="100%"> <tr> <td style="padding:2px;"> <table style="text-align:center;" width="100%" height="35px"> <tr style="vertical-align:middle;" > <td class=tableborder><a href="javascript:ChangeOption('global');"><h5>{$dplang_adm['global_opt']}</h5></a></td> <td class=tableborder><a href="javascript:ChangeOption('ultimate');"><h5>{$dplang_adm['ultimate']}</h5></a></td> <td class=tableborder><a href="javascript:ChangeOption('complaint');"><h5>{$dplang_adm['opt_complaint']}</h5></a></td> <td class=tableborder><a href="$PHP_SELF?mod=downpage"><h5>{$dplang_adm['opt_exit']}</h5></a></td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </div> HTML; echo <<< HTML <div class="container padded-right"> <form action="" method="post"> <div style="padding-top:5px;padding-bottom:2px;"> <table width="100%"> <tr> </tr> <tr> <td style="padding:5px;" bgcolor="#FFFFFF"> <table width="100%"> <tr style='' id="global"><td> <table width="100%"> HTML; echo <<< HTML <tr> <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$dplang_adm['global_opt']}:</div></td> </tr> </table> <div class="unterline"></div><table width="100%"> HTML; showRow("{$dplang_adm['global_opt_1_online']}", "{$dplang_adm['global_opt_1_online_i']}", makeDropDown(array("1" => "{$dplang_adm['mkopt_on']}", "0" => "{$dplang_adm['mkopt_off']}"), "save_con[online]", "{$dp_conf['online']}")); showRow("{$dplang_adm['global_opt_1_allowdown']}", "{$dplang_adm['global_opt_1_allowdown_i']}", makeDropDown(array("1" => "{$dplang_adm['mkopt_yes']}", "0" => "{$dplang_adm['mkopt_no']}"), "save_con[allow_download]", "{$dp_conf['allow_download']}")); showRow("{$dplang_adm['global_opt_1_hpu']}", "{$dplang_adm['global_opt_1_hpu_i']}", makeDropDown(array("1" => "{$dplang_adm['mkopt_yes']}", "0" => "{$dplang_adm['mkopt_no']}"), "save_con[allow_hpu]", "{$dp_conf['allow_hpu']}")); showRow("{$dplang_adm['global_opt_1_savelog']}", "{$dplang_adm['global_opt_1_savelog_i']}", makeDropDown(array("1" => "{$dplang_adm['mkopt_yes']}", "0" => "{$dplang_adm['mkopt_no']}"), "save_con[log_save]", "{$dp_conf['log_save']}")); echo "</table></td></tr>"; echo <<< HTML <tr style='display:none' id="ultimate"><td> <table width="100%"> <tr> <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$dplang_adm['ultimate']}:</div></td> </tr> </table> <div class="unterline"></div><table width="100%"> HTML; showRow("{$dplang_adm['fftp_size']}", "{$dplang_adm['fftp_size_i']}", makeDropDown(array("on" => "{$dplang_adm['ftp_on2']}", "off" => "{$dplang_adm['ftp_off2']}"), "save_con[ftp_function]", "{$dp_conf['ftp_function']}")); showRow("{$dplang_adm['users']}", "{$dplang_adm['users_i']}", makeDropDown(array ("on" => "{$dplang_adm['users_y']}", "off" => "{$dplang_adm['users_n']}"), "save_con[users]", "{$dp_conf['users']}")); showRow("{$dplang_adm['ftp_login']}", "{$dplang_adm['ftp_login_i']}", "<input type=text style='text-align: center;' size=10 class=edit name='save_con[ftp_login]' value='{$dp_conf['ftp_login']}'>", ""); showRow("{$dplang_adm['ftp_pass']}", "{$dplang_adm['ftp_pass_i']}", "<input type=text style='text-align: center;' size=10 class=edit name='save_con[ftp_pass]' value='{$dp_conf['ftp_pass']}'>", ""); echo "</table></td></tr>"; echo <<< HTML <tr style='display:none' id="complaint"><td> <table width="100%"> <tr> <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$dplang_adm['opt_complaint']}:</div></td> </tr> </table> <div class="unterline"></div><table width="100%"> HTML; showRow("{$dplang_adm['global_opt_3_allowcomplaint']}", "{$dplang_adm['global_opt_3_allowcomplaint_i']}", makeDropDown(array("1" => "{$dplang_adm['mkopt_on2']}", "0" => "{$dplang_adm['mkopt_off2']}"), "save_con[complaint_online]", "{$dp_conf['complaint_online']}")); showRow("{$dplang_adm['global_opt_3_complmessread']}", "{$dplang_adm['global_opt_3_complmessread_i']}", makeDropDown(array("yes" => "{$dplang_adm['mkopt_yes']}", "no" => "{$dplang_adm['mkopt_no']}"), "save_con[complaint_messread]", "{$dp_conf['complaint_messread']}")); showRow("{$dplang_adm['global_opt_3_adminid']}", "{$dplang_adm['global_opt_3_adminid_i']}", "<input type=text style='text-align: center;' size=10 class=edit name='save_con[complaint_adm_id]' value='{$dp_conf['complaint_adm_id']}'>", ""); echo "</table></td></tr>"; echo <<< HTML <tr> <td style="padding-top:10px; padding-bottom:10px;padding-right:10px;"><input type=hidden name=mod value=downpage> <input type=hidden name=action value=save><input type="submit" class="buttons" value=" {$dplang_adm['opt_allsave']} "></td> </tr> </table> </form> </div> HTML; close_table(); echofooter(); } if ($_REQUEST['action'] == "log") { echoheader("", ""); dp_cp_styles(); echo <<< HTML <style>table.bt1,table.bt1 td {border:1px solid #f4f4f4;border-collapse:collapse;padding:3;}</style> <script>function bg1(t){t.style.background="#FFF9E0";}function bg(t){t.style.background="";}</script> HTML; open_table(); tableheader("-> {$dplang_adm['log_opt']}", 1); $mass = file(ENGINE_DIR . '/data/dp_log.txt'); if ($mass == "" or $mass[0] == "") { $dp_log_mass = " <table width=100% class=bt1> <tr onmouseover='bg1(this)' onmouseout='bg(this)'> <td style="padding-left:5px;">{$dplang_adm['log_0']}</td> </tr></table>"; } else { $dp_log_mass .= <<< HTML <table width="100%" class=bt1> <tr onmouseover='bg1(this)' onmouseout='bg(this)'> <td width="200"><b>{$dplang_adm['log_sort_login']}</b></td> <td width="300"><b>{$dplang_adm['log_sort_file']}</b></td> <td width="200"><b>{$dplang_adm['log_sort_date']}</b></td> <td><b>{$dplang_adm['log_sort_ip']}</b></td> </tr> HTML; for ($x = 0; $x < count($mass); $x++) { list($user_login, $datetime, $ip, $file) = explode("|", trim($mass[$x])); $dp_log_mass .= <<< HTML <tr onmouseover='bg1(this)' onmouseout='bg(this)'> <td>{$user_login}</td> <td>{$file}</td> <td>{$datetime}</td> <td>{$ip}</td> </tr> HTML; } } echo "$dp_log_mass"; if ($dp_conf[log_save] == "1") { $dp_log_save_info = "{$dplang_adm['mkopt_on']}"; } else { $dp_log_save_info = "{$dplang_adm['mkopt_off']}"; } ; echo <<< HTML <table> <tr><br><td background="engine/skins/images/mline.gif" height=1 colspan=2></td></tr> <tr> <td class="navigation" style="padding: 1px;"> </td> <td class="navigation" style="padding: 1px;"> <br> {$dplang_adm['mod_log_addon']}: {$dp_log_save_info}<br> <br> {$dplang_adm['other']}:<br><br> {$dplang_adm['mod_log_help']}<br><br> <form action="" method=""><input type=hidden name=mod value=downpage><input type=hidden name=action value=clearlog> <input type="submit" class="buttons" value=" {$dplang_adm['opt_log_clear']} "></form><br> <form action="" method=""><input type=hidden name=mod value=downpage> <input type="submit" class="buttons" value=" {$dplang_adm['opt_back']} "><br><br></td></form> </td> </tr> <tr><td background="engine/skins/images/mline.gif" height=1 colspan=2></td></tr> </table> HTML; close_table(); echofooter(); } if ($_REQUEST['action'] == "clearlog") { $f = fopen(ENGINE_DIR . '/data/dp_log.txt', "w"); fclose($f); msg("info", "DownPage Ultimate for DLE", "{$dplang_adm['log_clear']}<br /><br /><a href=$PHP_SELF?mod=downpage>{$dplang_adm['opt_back']}</a>"); die(); } //var_dump($_POST); //die(); if ($_POST['action'] == "save") { $find[] = "'\r'"; $replace[] = ""; $find[] = "'\n'"; $replace[] = ""; $save_con['vers'] = "Ultimate"; $save_con = array_merge ($save_con, $_POST["save_con"]); $handler = fopen(ENGINE_DIR . '/data/dp_conf.php', "w"); fwrite($handler, "<?php\n\$dp_conf = array(\n"); foreach ($save_con as $name => $value) { $value = trim(stripslashes($value)); $value = htmlspecialchars($value, ENT_QUOTES); $value = preg_replace($find, $replace, $value); fwrite($handler, "'{$name}' => "{$value}",\n"); } fwrite($handler, ");\n?>"); fclose($handler); clear_cache(); msg("info", "DownPage Ultimate for DLE", "{$dplang_adm['opt_allsave_ok']}<br /><br /><a href=$PHP_SELF?mod=downpage>{$dplang_adm['opt_back']}</a>"); } ; ?>