Файл: CMS/core/modules/users_files_add_file.php
Строк: 129
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$data = $db->selectRow("SELECT * FROM ?_users WHERE LOWER(`users_login`) = ? LIMIT 1;", cms_tolower($uz));
if (empty($data) || !is_array($data)) {
$inSes->addMessage('Ошибка! Пользователь с данным логином не найден!');
redirect($config['site_url']);
}
if ($data['users_ban'] == 1) {
$inSes->addMessage('Ошибка! Пользователь заблокирован!');
redirect($config['site_url']);
}
if ($config['allow_regkeys'] > 0 && $data['users_confirmreg'] > 0) {
$inSes->addMessage('Ошибка! Пользователя не существует!');
redirect($config['site_url']);
}
$error = '';
if ($is_logged) {
if ($data['users_login'] == $log) {
$files_path = ROOTPATH . DS . $config['files_folder'];
if (!is_dir($files_path)) {
mkdir($files_path, 0755);
}
if (!is_file($files_path . '/.htaccess')) {
file_put_contents($files_path . '/.htaccess', "php_flag engine offn<Files ~ ".(php|php3|php4|php5|pl|cgi|phtml)$">n Order allow,denyn Deny from alln</Files>");
@chmod($files_path . '/.htaccess', 0111);
}
$count = (int) $db->selectCell("SELECT COUNT(1) FROM ?_downs WHERE `downs_user` = ? LIMIT 1;", $log);
if ($count > $uset['users_uploads']) {
$inSes->addMessage('Ошибка! Превышен лимит на загрузку файлов!', 'info');
gen_red('place', '', RND);
}
$row = array();
$row = $db->selectRow("SELECT * FROM ?_downs_category WHERE `cats_user` = ? AND `cats_id` = ? LIMIT 1;", $log, $id);
if (empty($row) || !is_array($row)) {
$inSes->addMessage('Ошибка! Папка не найдена или ссылка неверна!');
gen_red('files', '', RND);
}
if (!empty($_POST['cancel'])) {
gen_red('files', $id, RND);
}
if (!empty($_POST['upload'])) {
$name = !empty($_POST['name']) ? check($_POST['name']) : '';
$text = !empty($_POST['text']) ? check($_POST['text']) : '';
$sex = !empty($_POST['sex']) ? 1 : 0;
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($name) >= 3 && cms_strlen($name) <= 100) {
if (cms_strlen($text) >= 3 && cms_strlen($text) <= 1000) {
if (is_quarantine($log)) {
if (is_flood($log)) {
if ($config['users_upload_file'] == 1 || is_admin(array(101))) {
if (is_uploaded_file($_FILES['loadfile']['tmp_name'])) {
$filename = check(strtolower($_FILES['loadfile']['name']));
$filename = tr(str_replace(' ', '', $filename), 1);
if (cms_strlen($filename) <= 50) {
if (preg_match('|^[a-z0-9_.-]+$|i', $filename)) {
$arrext = explode(',', $config['upload_ext_file']);
$ext = strtolower(substr(strrchr($filename, '.'), 1));
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['max_users_file_size']) {
$lastid = (int) $db->query("INSERT INTO ?_downs SET `downs_title` = ?, `downs_text` = ?, `downs_user` = ?, `downs_user_cat` = ?, `downs_time` = ?, `downs_user_sex` = ?", $name, $text, $log, $id, SITE_TIME, $sex);
if ($lastid > 0) {
if (!is_dir($files_path . DS . $lastid)) {
mkdir($files_path . DS . $lastid,0755);
}
$fpath = $files_path . DS . $lastid . DS . $filename;
move_uploaded_file($_FILES['loadfile']['tmp_name'], $fpath);
@chmod($files_path, 0644);
$db->query("UPDATE ?_downs SET `downs_link` = ? WHERE `downs_id` = ?", $filename, $lastid);
$db->query("UPDATE ?_downs_category SET `cats_count` = (`cats_count` + 1)
WHERE `cats_user` = ? AND `cats_id` IN(" . $row['cats_parent_all'] . ");", $log);
$subs = $db->select("SELECT * FROM ?_users_lenta_subscribe
WHERE `sub_publisher` = ?", $log);
if (!empty($subs) && count($subs) > 0) {
$sex = ($uset['users_gender'] == 1) ? 'добавил' : 'добавила';
$text = $sex . " новый файл <b>" . $name . "</b> в загруз-центр.n";
$text .= "[files=" . $lastid . "]Подробнее >>[/files]";
foreach($subs as $sub) {
$db->query("INSERT INTO ?_users_lenta SET `lenta_subscriber` = ?, `lenta_publisher` = ?, `lenta_time` = ?, `lenta_message` = ?", $sub['sub_subscriber'], $log, SITE_TIME, $text);
}
}
set_lider_files($log);
$inSes->addMessage('Файл успешно загружен!', 'ok');
gen_red('file', $lastid, RND);
}
else $error = 'Произошла Ошибка! В данный момент не удалось загрузить файл!';
}
else $error = 'Ошибка! Максимальный размер загружаемого файла ' . size($config['max_users_file_size']) . '!';
}
else $error = 'Ошибка! В названии файла присутствуют недопустимые расширения!';
}
else $error = 'Ошибка! Недопустимое расширение файла!';
}
else $error = 'Ошибка! В названии файла присутствуют недопустимые символы!';
}
else $error = 'Ошибка! Слишком длинное имя файла (не более 50 символов)!';
}
else $error = 'Ошибка! Не удалось загрузить файл!';
}
else $error = 'Ошибка! Загрузка файлов запрещена администратором!';
}
else $error = 'Антифлуд! Вы слишком часто добавляете файлы!';
}
else $error = 'Карантин! Вы не можете добавлять файлы в течении ' . round($config['allow_karantin'] / 3600) . ' часов!';
}
else $error = 'Ошибка! Слишком длинное или короткое описание к файлу (от 5 до 1000 символов)!';
}
else $error = 'Ошибка! Слишком длинный или короткий заголовок (от 5 до 100 символов)!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
if (!empty($error)) $inSes->addMessage($error, 'error');
}
show_header('Добавление файла');
echo '<div class="b"><span style="color:red;">Внимание! Перед добавлением файла внимательно прочитайте</span> ';
echo '<a href="' . gen_uri('rules_files', $id, RND) . '">Правила размещения файлов</a>.<br />';
echo '<span style="color:red;">За нарушение правил, ваш ник может быть заблокирован навсегда.</span></div>';
$form = new cmsForm(gen_uri('add_file', $id, 'rnd=' . $_SESSION['token']), 'post');
$form->addFile('Выберите файл:', 'loadfile');
$form->addText('Название: (Макс. 100 символов)', 'name', request('name'));
$form->addTextarea('Описание: (Макс. 1000 символов)', 'text', request('text'));
$form->addCheckBox(array('', 'Файл для взрослых (18+)'), 'sex', request('sex'));
echo $form->Submit(array('Загрузить', 'Отмена'), array('upload', 'cancel'));
unset($form);
echo '<div class="b">';
echo 'Разрешается добавлять файлы с расширением ' . str_replace(',', ', ', $config['upload_ext_file']) . '<br />';
echo 'Весом не более ' . size($config['max_users_file_size']) . '<br />';
echo 'Ваш лимит файлов ' . num2name($uset['users_uploads'],array('файлов','файла','файл')) . '<br />';
echo 'Увеличить кол-во файлов можно <a href="' . gen_uri('place', '', RND) . '">тут</a>.';
echo '</div>';
}
else {
redirect(gen_users($log, 'add_file', $id, RND));
}
}
else {
show_header('Добавление файла');
show_login('Вы не авторизованы, для добавления файлов, необходимо');
}
echo '<div class="b">' . icon('return.png');
echo '<a href="' . gen_uri('files', '', RND) . '">Файлы</a><br /></div>';
?>