<?php
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/header.php');
include_once ('core/fun.php');
$id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : '';
$act = isset($_GET['act']) ? check($_GET['act']) : '';
if (is_user()) {
switch ($act):
default :
$dir = DB::run()->queryFetch("SELECT * FROM `downloads_category` WHERE id = ? AND upload != 1;", array ($_GET['id']));
if (!empty($dir)) {
echo '<div class="form">';
echo '<form action="add_file.php?act=upload&id=' . $dir['id'] . '&uid=' . $_SESSION['token'] . '" method="post" enctype="multipart/form-data">';
echo 'Категория: <b>' . $dir['name'] . '</b><br />';
echo 'Название файла:*:<br />';
echo '<input type="text" name="name" size="50" maxlength="50" /><br />';
echo 'Файл (' . $config['allowextload'] . '):<br /><input type="file" name="loadfile" /><br />';
echo 'Описание*:<br />';
echo '<textarea cols="65" rows="5" name="description"></textarea><br />';
echo '<input value="Добавить" type="submit" /></form></div><br />';
} else {
show_error('Папка не найдена, либо не предназначена для выгрузки файлов пользователями в нее');
}
break;
case 'upload':
$uid = check($_GET['uid']);
$id = abs(intval($_GET['id']));
$name = check($_POST['name']);
$description = check($_POST['description']);
//var_dump($_FILES);
if ($uid == $_SESSION['token']) {
if (utf_strlen($name) >= 5 && utf_strlen($name) <= 50) {
if (utf_strlen($description) <= 5000) {
if (is_uploaded_file($_FILES['loadfile']['tmp_name'])) {
$filename = check(strtolower($_FILES['loadfile']['name']));
if (strlen($filename) <= 80) {
if (preg_match('|^[a-z0-9_\.\-]+$|i', $filename)) {
$arrext = explode(',', $config['allowextload']);
$ext = getExtension($filename);
if (in_array($ext, $arrext) && $ext != 'php') {
if (!preg_match('/\.(php|pl|cgi|phtml|htaccess)/i', $filename)) {
if ($_FILES['loadfile']['size'] > 0 && $_FILES['loadfile']['size'] <= $config['fileupload']) {
$description = no_br($description);
DB::run()->query("INSERT INTO `downloads_files` (`id`, `category`, `title`, `date`, `author`, `description`, `size`) VALUES (?, ?, ?, ?, ?, ?, ?);", array (null, $id, $name, SITETIME, $log, $description, $_FILES['loadfile']['size']));
$file_id = DB::run()->lastInsertId();
$directory_path = get_path($id);
$realpath = get_realpath($directory_path);
$realpath = ($realpath != '' ? $realpath . '/' : '') . ($id == 0 ? '' : $id . '/');
// Создание папки для файла
mkdir(BASEDIR . '/down/files/' . $realpath . $file_id);
chmod(BASEDIR . '/down/files/' . $realpath . $file_id, 0777);
$path_to_file = 'down/files/' . ($realpath != '' ? $realpath : '') . $file_id . '/';
$file_path = BASEDIR . '/' . $path_to_file . $_FILES['loadfile']['name'];
move_uploaded_file($_FILES['loadfile']['tmp_name'], $file_path);
DB::run()->query("UPDATE `downloads_files` SET `file` = ?, `path_to_file` = ? WHERE `id` = ?", array ($filename, $path_to_file, $file_id));
$_SESSION['note'] = 'Файл успешно загружен!';
redirect("get_file.php?id=" . $file_id);
} else {
show_error('Ошибка! Максимальный размер загружаемого файла ' . formatsize($config['fileupload']) . '!');
}
} else {
show_error('Ошибка! В названии файла присутствуют недопустимые расширения!');
}
} else {
show_error('Ошибка! Недопустимое расширение файла!');
}
} else {
show_error('Ошибка! В названии файла присутствуют недопустимые символы!');
}
} else {
show_error('Ошибка! Слишком длинное имя файла (не более 50 символов)!');
}
} else {
show_error('Ошибка! Не удалось загрузить файл!');
}
} else {
show_error('Ошибка! Слишком длинный или короткий текст описания (от 10 до 5000 символов)!');
}
} else {
show_error('Ошибка! Слишком длинное или короткое название (от 5 до 50 символов)!');
}
} else {
show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
echo '<img src="/images/img/back.gif" alt="image" /> <a href="add_file.php?id=' . $id . '">Вернуться</a><br />';
break;
endswitch;
} else {
show_login('Вы не авторизованы, для добавления файла, необходимо');
}
include_once ('../themes/footer.php');