<?php
// Уведомление о закрытии форума
if ($system['downloads_module'] == '2' && !user_access('view_closed_modules')) {
# Шапка модуля
require_once(HOME .'/incfiles/header.php');
echo '<div class="title">Технические работы</div>
<div class="menu">
'. output($system['downloads_module_about']) .'
</div>';
echo '<div class="block">
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
# ID папки
$dir_id = num($_GET['dir_id']);
# Проверка наличия папки с таким ID
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `id` = '$dir_id'"), 0) == 0) $dir_id = 0;
// Создаем массив с данными папки
if ($dir_id != 0) {
# Массив с данными
$dir = mysql_fetch_assoc(mysql_query("SELECT * FROM `downloads` WHERE `id` = '$dir_id' LIMIT 1"));
$dir_path = $dir['path'];
} else {
$dir_path = '/';
}
// Удаление папки
if (isset($_GET['delete_id']) && (!user_access('add_dir_downloads') || mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0) == 0)) {
header('Location: /downloads/index.php?dir_id='. $dir_id);
}
// Удаление папки
if (isset($_GET['delete_id']) && user_access('add_dir_downloads') && mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0) != 0 && isset($_POST['no'])) {
header('Location: /downloads/index.php?dir_id='. $dir_id);
}
// Сортировка
if (isset($_GET['sort'])) {
# Фильтр
$sort = txt($_GET['sort']);
# Проверка формата
if ($sort != 'name' && $sort != 'time') $err .= 'Неверный формат сортировки.<br />';
// Сохраняем параметры
if (!isset($err)) {
# Записываем параметры в сессию
$_SESSION['sort'] = $sort;
}
}
# Заголовок модуля
$system['page_title'] = ($dir_id != 0?$dir['name']:'Загруз-центр');
# Шапка модуля
require_once(HOME .'/incfiles/header.php');
// Создание папки
if (isset($_GET['add_dir']) && user_access('add_dir_downloads') && isset($_POST['add_dir'])) {
# Отображаемое имя
$view_name = txt($_POST['view_name']);
# Имя на сервере
$server_name = txt($_POST['server_name']);
# Проверка ввода
if (empty($view_name)) $err .= 'Не введено отображаемое имя<br />';
# Проверка ввода
if (empty($server_name)) $err .= 'Не введено имя на сервере<br />';
# Проверка длины
if (!empty($server_name) && (strlen($server_name) < 3 || strlen($server_name) > 64)) $err .= 'Неверная длина имени на сервере. Допустимо от 3 до 64 символов<br />';
# Проверка длины
if (!empty($view_name) && (strlen($view_name) < 3 || strlen($view_name) > 64)) $err .= 'Неверная длина отображаемого имени. Допустимо от 3 до 64 символов<br />';
# Проверка допустимых символов
if (!empty($server_name) && !preg_match("#^([A-z0-9\-\_])+$#ui", $server_name)) $err .= 'Запрещенные символы в имени на сервере. Разрешены символы A-z0-9-_<br />';
# Проверка занятости
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `name` = '". input($view_name) ."' AND `server_name` = '". input($server_name) ."' AND `dir_id` = '$dir_id'"), 0) != 0) $err .= 'Папка с таким именем уже существует.<br />';
if (!isset($err)) {
$dir_path1 = './files/downloads'. $dir_path . $server_name;
$dir_n = $dir_path . $server_name .'/';
# Запрос в базу
mysql_query("INSERT INTO `downloads` (`id`, `dir_id`, `path`, `type`, `name`, `server_name`, `time`, `user_id`, `file_ext`, `screen1`, `screen2`, `screen3`, `about`, `producer`, `year_release`, `rate_promob`, `loads`, `rate`) VALUES (NULL, '$dir_id', '$dir_n', '1', '$view_name', '$server_name', '". time() ."', '$user[id]', 'dir', '', '', '', '', '', '', '', '', '')");
mkdir($dir_path1, 0777);
echo '<div class="title">Добавление папки</div>
<div class="menu">
Папка успешно добавлена.
</div>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
}
// Удаление папки
if (isset($_POST['yes']) && user_access('add_dir_downloads') && isset($_GET['delete_id']) && mysql_result(mysql_query("SELECT * FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0) != 0 )
{
$path_delete = mysql_result(mysql_query("SELECT `path` FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0);
mysql_query("DELETE FROM `downloads_files` WHERE `path` LIKE '%$path_delete%'");
mysql_query("DELETE FROM `downloads` WHERE `path` LIKE '%$path_delete%'");
rrmdir('./files/downloads'. $path_delete);
echo '<div class="title">Удаление папки</div>
<div class="menu">
Папка со всем содержимым удалена.
</div>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
// Изменение папки
if (isset($_POST['edit']) && isset($_GET['edit_id']) && user_access('add_dir_downloads')) {
# Название
$name = txt($_POST['name']);
if (empty($name)) $err .= 'Не введено отображаемое имя.<br />';
# Проверка длины логина
if (!empty($name) && (mb_strlen($name, 'utf-8') < 3 || mb_strlen($name, 'utf-8') > 64)) $err .= 'Неверная отображаемого имени. Допустимо от 3 до 64 символов.<br />';
# Проверка занятости логина
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `dir_id` = '$dir_id' AND `name` = '". input($name) ."' AND `id` != '". num($_GET['edit_id']) ."'"), 0) != 0) $err .= 'Папка с таким именем уже существует.<br />';
if (!isset($err)) {
# Сохраняем данные
mysql_query("UPDATE `downloads` SET `name` = '". input($name) ."' WHERE `id` = '". num($_GET['edit_id']) ."'");
echo '<div class="title">Изменение папки</div>
<div class="menu">
Название папки успешно изменено.
</div>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
}
// Создание файла
if (isset($_GET['add_file']) && user_access('add_files_downloads') && isset($_POST['add_file'])) {
# Отображаемое имя
$name = txt($_POST['name']);
# Имя на сервере
$type = txt($_POST['type']);
# Проверка ввода
if (empty($name)) $err .= 'Не введено имя файла<br />';
# Проверка ввода
//if ($type != 'java' && $type != 'symbian' && $type != 'images' && $type != 'video' && $type != 'music') $err .= 'Неверный медиа-тип<br />';
# Проверка длины
if (!empty($name) && (strlen($name) < 3 || strlen($name) > 64)) $err .= 'Неверная длина имени файла. Допустимо от 3 до 64 символов<br />';
# Проверка занятости
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `type` = '2' AND `name` = '". input($name) ."' AND `dir_id` = '$dir_id'"), 0) != 0) $err .= 'Файл с таким именем уже существует.<br />';
if (!isset($err)) {
# Запрос в базу
mysql_query("INSERT INTO `downloads` (`id`, `dir_id`, `path`, `type`, `name`, `server_name`, `time`, `user_id`, `file_ext`, `screen1`, `screen2`, `screen3`, `about`, `producer`, `year_release`, `rate_promob`, `loads`, `rate`) VALUES (NULL, '$dir_id', '', '2', '". input($name) ."', '', '". time() ."', '$user[id]', '". input($type) ."', '', '', '', '', '', '', '', '', '')");
$dir_path1 = './files/downloads'. $dir_path . mysql_insert_id() .'/';
$dir_n = $dir_path . mysql_insert_id() .'/';
mkdir($dir_path1, 0777);
mysql_query("UPDATE `downloads` SET `path` = '$dir_n' WHERE `id` = '". mysql_insert_id() ."'");
echo '<div class="title">Добавление файла</div>
<div class="menu">
Файл успешно добавлен.
</div>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
}
# Вывод ошибок
error($err);
// Форма создания папки
if (isset($_GET['add_dir']) && user_access('add_dir_downloads')) {
echo '<div class="title">Добавление папки</div>
<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&add_dir">
<div class="menu">
Отображаемое имя:<br />
<input type="text" name="view_name" /><br />
Имя на сервере:<br />
<input type="text" name="server_name" /><br />
<input type="submit" name="add_dir" value="Создать" />
</div>
</form>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
// Удаление папки
if (isset($_GET['delete_id']) && user_access('add_dir_downloads')) {
echo '<div class="title">Удаление папки</div>
<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&delete_id='. num($_GET['delete_id']) .'">
<div class="menu">
Подтвержаете удаление папки?<br />
<input type="submit" name="yes" value="Да" /> <input type="submit" name="no" value="Нет" />
</div>
</form>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
// Изменение папки
if (isset($_GET['edit_id']) && user_access('add_dir_downloads')) {
# Массив с инфой об объекте
$obj = mysql_fetch_assoc(mysql_query("SELECT * FROM `downloads` WHERE `id` = '". num($_GET['edit_id']) ."' LIMIT 1"));
echo '<div class="title">Изменение папки</div>
<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&edit_id='. num($_GET['edit_id']) .'">
<div class="menu">
Отображаемое имя:<br />
<input type="text" name="name" value="'. output($obj['name']) .'" /><br />
<input type="submit" name="edit" value="Изменить" />
</div>
</form>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
// Форма создания файла
if (isset($_GET['add_file']) && user_access('add_files_downloads')) {
echo '<div class="title">Добавление файла</div>
<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&add_file">
<div class="menu">
Имя файла:<br />
<input type="text" name="name" /><br />
Медиа-тип:<br />
<select name="type" size="1">
<option value="java">Java</option>
<option value="symbian">Symbian</option>
<option value="images">Images</option>
<option value="video">Video</option>
<option value="music">Music</option>
<option value="zip">Архив</option>
<option value="file">Другой</option>
</select><br />
<input type="submit" name="add_file" value="Создать" />
</div>
</form>';
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
» <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
}
echo '<div class="title">'. ($dir_id != 0?$dir['name']:'Загруз-центр') .'</div>';
# Количество файлов/папок
$k_downloads = mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `dir_id` = '$dir_id'"), 0);
# Старт навигации
nav_start($k_downloads, 10);
if ($k_downloads == 0) {
echo '<div class="menu">Папка пуста.</div>';
} else {
# Сортировка
echo '<div class="menu">
Сортировка: '. ($_SESSION['sort'] == 'name'?'имя':'<a href="/downloads/index.php?dir_id='. $dir_id .'&sort=name">имя</a>') .'/'. ($_SESSION['sort'] == 'time'?'время':'<a href="/downloads/index.php?dir_id='. $dir_id .'&sort=time">время</a>') .'
</div>';
# Проверка наличия файлов в папке
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `dir_id` = '$dir_id' AND `type` = '2'"), 0) > 0) {
// Запрос для вывода файлов
if ($_SESSION['sort'] == 'name') $sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, name ASC LIMIT $start, 10");
else if ($_SESSION['sort'] == 'time') $sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, time DESC, name ASC LIMIT $start, 10");
else $sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, time DESC, name ASC LIMIT $start, 10");
} else {
# Запрос для вывода папок
$sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, name ASC LIMIT $start, 10");
}
# Цикл извлечения данных
while ($download = mysql_fetch_assoc($sql_downloads)) {
if ($download['type'] == 1) {
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*3) ."'"), 0) != 0) $new1 = '<span class="green">+'. mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*3) ."'"), 0) .'</span>';
else $new1 = '';
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*7) ."'"), 0) != 0) $new2 = '<span class="red">+'. mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*7) ."'"), 0) .'</span>';
else $new2 = '';
if ($new1 != NULL || $new2 != NULL) $new3 = $new1 . $new2;
else $new3 = '';
}
echo '<div class="menu"><img src="/design/icons/downloads/'. ($download['file_ext'] != NULL?$download['file_ext']:'file') .'.png" alt="'. ($download['type'] == 1?'Папка':'Файл') .'"> <a href="/downloads/'. ($download['type'] == 1?'index.php?dir_id='. $download['id']:'file.php?file_id='. $download['id']) .'">'. $download['name'] .'</a>'. ($download['type'] == 2?' ('. vtime($download['time']) .')':' ('. mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2'"), 0) .')'. ($new3 != NULL?' '. $new3:NULL)) . ($download['type'] == 1 && user_access('add_dir_downloads')?' [<a href="/downloads/index.php?dir_id='. $dir_id .'&edit_id='. $download['id'] .'">изм</a>] [<a href="/downloads/index.php?dir_id='. $dir_id .'&delete_id='. $download['id'] .'">уд</a>]':NULL) .'</div>';
}
# Вывод навигации
view_nav('?dir_id='. $dir_id .'&');
}
echo '<div class="menu"><span class="red"><span class="small_info">+X - Новые за неделю</span></span><br /><span class="green"><span class="small_info">+X - Новые за 3 дня</span></span><br /></div>';
if (user_access('add_dir_downloads') || user_access('add_files_downloads')) {
echo '<div class="block">
'. (user_access('add_files_downloads')?'» <a href="/downloads/index.php?dir_id='. $dir_id .'&add_file">Добавить файл</a><br />':NULL) .'
'. (user_access('add_dir_downloads')?'» <a href="/downloads/index.php?dir_id='. $dir_id .'&add_dir">Добавить папку</a>':NULL) .'
</div>';
}
# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0 && $dir_id != 0) $rod_name = 'Загруз-центр';
echo '<div class="block">
'. (isset($rod_name)?'» <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
» <a href="/">На главную</a>
</div>';
# Ноги модуля
require_once(HOME .'/incfiles/footer.php');
?>