Файл: modules/forum/add_files.php
Строк: 94
<?php
/****
* @package LiveCMS
* @link livecms.org
* @author MyZik
* @version See attached file VERSION.txt
* @license See attached file LICENSE.txt
* @copyright Copyright (C) LiveCMS Development Team
****/
ob_start();
$lang_forum = load_lng('forum'); // Подключаем файл языка
$title = $lang_forum['forum']; // Заголовок страницы
$module = 'forum'; // Модуль
/**
* Проверка наличия авторизации
**/
if (!isset($user)) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['only_users'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="/index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем, задан ли параметр
**/
if (!isset($_GET['id']) || empty($_GET['id']) || !is_numeric($_GET['id'])) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['error_parameter'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="/index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем существование сообщения
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `id` = '" . num($_GET['id']) . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['message_not_exists'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
$ID = num($_GET['id']);
$post = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_forum_messages` WHERE `id` = '$ID' LIMIT 1"));
/**
* Проверяем, закрыта ли тема
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_topics` WHERE `id` = '" . $post['topic_id'] . "' AND `close` = 'yes'"), 0) != 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['topic_closed'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
require_once(HOME .'/incfiles/header.php');
$pagesMess = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `topic_id` = '" . $post['topic_id'] . "'"), 0);
$ceil = ceil($pagesMess / $countMess);
$end_page = ($ceil > 1 ? '&page=' . $ceil : '');
if (isset($_POST['add'])) {
/**
* Добавляем файл, если он был. За основу позаимствована функция из JohnCMS 3.x.x, доработанная мной
**/
$do_file = false;
if (isset($_FILES['file'])) {
$do_file = true;
$name = $_FILES['file']['name'];
// название файла
define('SIZE', $_FILES['file']['size']);
// размер файла
}
if ($do_file) {
$al_ext = array('zip',
'rar',
'7z',
'tar',
'gz',
'apk', 'ipa', 'mp3',
'amr', 'txt',
'pdf',
'doc',
'rtf',
'djvu', 'xls', 'sql', 'jar',
'jad', 'jpg',
'jpeg',
'gif', 'png', 'bmp', 'sis',
'sisx', '3gp',
'avi',
'flv',
'mpeg', 'mp4', 'exe', 'msi'); // допустимые расширения
$ext = explode(".", $name);
/**
* Проверяем размер файла
**/
if (SIZE > 1024 * 200)
$err[] = $lang_forum['error_uploaded_file_size'];
/**
* Проверяем на недопустимое расширение
**/
if (!in_array($ext[1], $al_ext))
$err[] = $lang_forum['error_uploaded_file_ext'] . ':<br />' . implode(', ', $al_ext);
/**
* Проверяем длину названия файла
**/
if (mb_strlen($name) > 35)
$err[] = $lang_forum['error_uploaded_file_name'];
/**
* Проверяем название файла на недопустимые символы
**/
if (preg_match("/[^da-z_-.()]+/", $name))
$err[] = $lang_forum['error_uploaded_file_symbols'];
/**
* Если файл с таким названием есть, переименовываем
**/
if (file_exists(HOME . "/files/forum/$name"))
$name = $name . '_' . time();
/**
* Загружаем файл
**/
if ($do_file) {
if (move_uploaded_file($_FILES["file"]["tmp_name"], HOME . "/files/forum/$name") == true) {
@chmod("$name", 0777);
@chmod(HOME . "/files/forum/$name", 0777);
}
}
/**
* Если не было ошибок, заносим данные
**/
if (!isset($err)) {
mysql_query("INSERT INTO `forum_files` (`topic_id`, `post_id`, `time`, `name`) VALUES ('" . $post['topic_id'] . "',
'$ID', '" . time() .
"', '" . input($name) . "')");
header("Location: topic.php?id=$post[topic_id]" . $end_page);
} else {
echo error($err); // показываем ошибки, если они имеются
}
}
}
/**
* Форма
**/
echo '<div class="main"><form method="post" action="add_files.php?id=' . $ID . '" enctype="multipart/form-data">' .
'<input type="file" name="file" /><br />' .
'<input type="submit" name="add" value="' . $lang['add'] . '" />' .
'</form></div>';
/**
* Нижняя панель навигации
**/
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="topic.php?id=' . $post['topic_id'] . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php'); // подключаем ноги
ob_end_flush();
?>