Файл: CMS/core/admin/loads.inc.php
Строк: 297
<?php
if (!defined('CMS')) { die('Access Denied!'); }
if (!empty($_POST['add_dir_one'])) { // Создание папки
if (is_admin(array(101))) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$name = !empty($_POST['name']) ? check($_POST['name']) : '';
$about = !empty($_POST['about']) ? check($_POST['about']) : '';
$types = !empty($_POST['types']) ? str_replace(' ', '', check(trim($types))) : '';
$upload = !empty($_POST['upload']) ? 1 : 0;
$parrent = !empty($_POST['parrent']) ? num($_POST['parrent']) : 0;
$parrent_all = !empty($_POST['parrent_all']) ? check($_POST['parrent_all']) : '0';
if (cms_strlen($name) >= 3 && cms_strlen($name) < 100) {
$maxorder = (int) $db->selectCell("SELECT IFNULL(MAX(`cats_order`),0)+1 FROM ?_downs_category;");
$last_id = (int) $db->query("INSERT INTO ?_downs_category SET `cats_order` = ?, `cats_parent` = ?, `cats_name` = ?, `cats_about` = ?, `cats_ext` = ?, `cats_upload` = ?", $maxorder, $parrent, $name, $about, $types, $upload);
if ($last_id > 0) {
if ($parrent_all == 0) {
$db->query("UPDATE ?_downs_category SET `cats_parent_all` = ? WHERE `cats_id` = ?", $last_id, $last_id);
}
else {
$db->query("UPDATE ?_downs_category SET `cats_parent_all` = ? WHERE `cats_id` = ?", $parrent_all . ',' . $last_id, $last_id);
}
del_vars('loads_categories');
del_vars('loads_cats_names');
$inSes->addMessage('Папка успешно добавлена!', 'ok');
}
else $inSes->addMessage('Ошибка! Не удалось создать папку!');
redirect($_SERVER['REQUEST_URI']);
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое название раздела!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Добавлять разделы могут только суперадмины!');
}
if (!empty($_POST['edit_dir_one'])) { // Редактирование папки
if (is_admin(array(101))) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$name = !empty($_POST['name']) ? check($_POST['name']) : '';
$about = !empty($_POST['about']) ? check($_POST['about']) : '';
$types = !empty($_POST['types']) ? check($_POST['types']) : '';
$upload = !empty($_POST['upload']) ? 1 : 0;
if (cms_strlen($name) >= 3 && cms_strlen($name) < 100) {
$row = '';
$row = $db->selectRow("SELECT * FROM ?_downs_category WHERE `cats_id` = ?", $id);
if (!empty($row)) {
$db->query("UPDATE ?_downs_category SET `cats_name` = ?, `cats_about` = ?, `cats_ext` = ?, `cats_upload` = ?
WHERE `cats_id` = ?", $name, $about, $types, $upload, $id);
del_vars('loads_categories');
del_vars('loads_cats_names');
$inSes->addMessage('Раздел успешно отредактирован!', 'ok');
}
else $inSes->addMessage('Ошибка! Категория не найдена!');
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое название раздела!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Редактировать разделы могут только суперадмины!');
redirect($_SERVER['REQUEST_URI']);
}
if (!empty($_GET['restatement'])) { // Пересчёт
if (is_admin(array(101))) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("UPDATE ?_downs SET `downs_comments` = (SELECT COUNT(*) FROM ?_comments
WHERE ?_downs.`downs_id` = ?_comments.`comm_post` AND ?_comments.`comm_type` = 'load');");
$db->query("UPDATE ?_downs_category SET `cats_count` = (SELECT COUNT(*) FROM ?_downs
WHERE ?_downs_category.`cats_id` = ?_downs.`downs_cats_id`);");
$rows = $db->select("SELECT * FROM ?_downs_category WHERE `cats_upload` = '1' AND `cats_count` > '0'");
$arrs = array();
foreach($rows as $row) {
if (!empty($row['cats_parent_all'])) {
$exp = explode(',', $row['cats_parent_all']);
if (!empty($exp)) {
for($i = 0; $i < count($exp); $i++) {
if (empty($exp[$i])) continue;
$key = !empty($exp[$i]) ? num($exp[$i]) : 0;
@$arrs[$key] += !empty($row['cats_count']) ? num($row['cats_count']) : 0;
}
}
}
}
if (!empty($arrs)) {
foreach($arrs as $key => $count) {
$db->query("UPDATE ?_downs_category SET `cats_count` = ? WHERE `cats_id` = ?", $count, $key);
}
}
del_vars('loads_categories');
del_vars('loads_cats_names');
$inSes->addMessage('Все данные успешно пересчитаны!', 'ok');
redirect('?m=load&' . RND);
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Пересчитывать сообщения могут только суперадмины!');
}
if (!empty($_GET['up'])) { // Перемещение на одну позицию вверх
$up = num($_GET['up']);
$row = $db->selectRow("SELECT * FROM ?_downs_category WHERE `cats_id` = ?", $up);
if (!empty($row)) {
$rows = $db->selectRow("SELECT * FROM ?_downs_category
WHERE `cats_parent` = ? AND `cats_order` < ?
ORDER BY `cats_order` DESC LIMIT 1", $row['cats_parent'], $row['cats_order']);
if (!empty($rows)) {
$db->query("UPDATE ?_downs_category SET `cats_order` = ? WHERE `cats_id` = ?", $rows['cats_order'], $up);
$db->query("UPDATE ?_downs_category SET `cats_order` = ? WHERE `cats_id` = ?", $row['cats_order'], $rows['cats_id']);
}
else $inSes->addMessage('Выше некуда!', 'info');
unset($up,$row,$rows);
}
}
if (!empty($_GET['down'])) { // Перемещение на одну позицию вниз
$down = num($_GET['down']);
$row = $db->selectRow("SELECT * FROM ?_downs_category WHERE `cats_id` = ?", $down);
if (!empty($row)) {
$rows = $db->selectRow("SELECT * FROM ?_downs_category
WHERE `cats_parent` = ? AND `cats_order` > ?
ORDER BY `cats_order` ASC LIMIT 1", $row['cats_parent'], $row['cats_order']);
if (!empty($rows)) {
$db->query("UPDATE ?_downs_category SET `cats_order` = ? WHERE `cats_id` = ?", $rows['cats_order'], $down);
$db->query("UPDATE ?_downs_category SET `cats_order` = ? WHERE `cats_id` = ?", $row['cats_order'], $rows['cats_id']);
}
else $inSes->addMessage('Ниже некуда!', 'info');
unset($down,$row,$rows);
}
}
$select_files = false; // Перемещение файлов
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'mm') {
if (!empty($_REQUEST['move'])) {
$_SESSION[SP]['move'] = intar($_REQUEST['move']);
}
else $select_files = true;
}
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'cancel') {
unset($_SESSION[SP]['move']);
}
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'selmove') {
if (!empty($_SESSION[SP]['move'])) {
if (!is_array($_SESSION[SP]['move'])) {
$move_id = num($_SESSION[SP]['move']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$row = '';
$row = $db->selectRow("SELECT ?_downs.*, ?_downs_category.*
FROM ?_downs LEFT JOIN ?_downs_category
ON ?_downs.`downs_cats_id` = ?_downs_category.`cats_id`
WHERE `downs_id` = ? LIMIT 1;", $move_id);
if (!empty($row)) {
$dirs = $db->selectRow("SELECT * FROM ?_downs_category WHERE `cats_id` = ? LIMIT 1;", $id);
if (!empty($dirs)) {
$row['cats_parent_all'] = !empty($row['cats_parent_all']) ? $row['cats_parent_all'] : '';
$db->query("UPDATE ?_downs_category SET `cats_count` = (`cats_count` - 1)
WHERE `cats_id` IN(" . $row['cats_parent_all'] . ");");
$db->query("UPDATE ?_downs_category SET `cats_count` = (`cats_count` + 1)
WHERE `cats_id` IN(" . $dirs['cats_parent_all'] . ");");
$db->query("UPDATE ?_downs SET `downs_cats_id` = ? WHERE `downs_id` = ?", $id, $move_id);
unset($_SESSION[SP]['move']);
$inSes->addMessage('Файл успешно перемещен!', 'ok');
//gen_red('files', $id, RND);
}
else $error = 'Ошибка! Папка для перемещения не найдена!';
}
else $error = 'Ошибка! Запрашиваемый файл не найден!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
else { // ARRAY
$arrmove = implode(',',$_SESSION[SP]['move']);
$count = count($_SESSION[SP]['move']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$row = '';
$row = $db->selectRow("SELECT ?_downs.*, ?_downs_category.*
FROM ?_downs LEFT JOIN ?_downs_category
ON ?_downs.`downs_cats_id` = ?_downs_category.`cats_id`
WHERE `downs_id` IN(" . $arrmove . ") LIMIT 1;");
if (!empty($row)) {
$dirs = $db->selectRow("SELECT * FROM ?_downs_category WHERE `cats_id` = ? LIMIT 1;", $id);
if (!empty($dirs)) {
$db->query("UPDATE ?_downs_category SET `cats_count` = (`cats_count` - ?)
WHERE `cats_id` IN(" . $row['cats_parent_all'] . ");", $count);
$db->query("UPDATE ?_downs_category SET `cats_count` = (`cats_count` + ?)
WHERE `cats_id` IN(" . $dirs['cats_parent_all'] . ");", $count);
$db->query("UPDATE ?_downs SET `downs_cats_id` = ?
WHERE `downs_id` IN(" . $arrmove . ");", $id);
unset($_SESSION[SP]['move']);
$inSes->addMessage('Файлы успешно перемещены!', 'ok');
//gen_red('files', $id, RND);
}
else $error = 'Ошибка! Папка для перемещения не найдена!';
}
else $error = 'Ошибка! Запрашиваемые файлы не найдены!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
}
else $error = 'Ошибка! Вы не выбрали файл или файлы!';
if (!empty($error)) {
unset($_SESSION[SP]['move']);
$inSes->addMessage($error);
}
}
if (!empty($_GET['del_file'])) { // Удаление файла у усера
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$row = '';
$row = $db->selectRow("SELECT ?_downs.*, ?_downs_category.*
FROM ?_downs LEFT JOIN ?_downs_category
ON ?_downs.`downs_user_cat` = ?_downs_category.`cats_id`
WHERE `downs_user` = ? AND `downs_id` = ? LIMIT 1;", request('uz'), request('del_file'));
if (!empty($row) && is_array($row)) {
if (!empty($row['cats_parent_all'])) {
$db->query("UPDATE ?_downs_category SET `cats_count` = (`cats_count` - 1)
WHERE `cats_user` = ?
AND `cats_id` IN(" . $row['cats_parent_all'] . ");", $row['downs_user']);
$db->query("DELETE FROM ?_downs WHERE `downs_user` = ? AND `downs_id` = ?", $row['downs_user'], $row['downs_id']);
$db->query("OPTIMIZE TABLE ?_downs, ?_downs_category;");
deldir(ROOTPATH . DS . $config['files_folder'] . DS . $row['downs_id'], 1);
$inSes->addMessage('Файл успешно удалён!', 'ok');
}
else $inSes->addMessage('Ошибка! Подкатегория не найдена!');
}
else $inSes->addMessage('Ошибка! Файл не найден или ссылка неверна!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
# Кеширование категорий для обратных ссылок
$cats_names = get_vars('loads_cats_names');
if (!$cats_names) {
$rows = $db->select("SELECT `cats_id`, `cats_name`, `cats_parent` FROM ?_downs_category
ORDER BY `cats_order` ASC;");
$cats_names = array();
if (!empty($rows) && count($rows) > 0) {
foreach($rows as $row) {
$cats_names[$row['cats_id']] = $row['cats_name'];
}
set_vars('loads_cats_names', $cats_names);
}
}
# Функция кэширования уменьшенных изображений
function resize_screen($dir, $name, $size = '', $alt = '') {
global $config;
$name = str_replace(' ', '%20', $name);
if ( @file_exists( ROOTPATH . DS . $dir . $name ) ) {
$sign = !empty($alt) ? $alt : $name;
$prename = 'small_';
$imgsize = @getimagesize( ROOTPATH . DS . $dir . $name );
if ($imgsize[0] <= $size && $imgsize[1] <= $size) {
return '<img src="' . $config['site_url'] . DS . $dir . $name . '" alt="' . $sign . '" />';
}
if (!file_exists(ROOTPATH . DS . $dir . $prename) || filesize(ROOTPATH . DS . $dir . $prename) < 18) {
include_once( ENGINE . '/classes/upload.class.php' );
$handle = new upload(ROOTPATH . DS . $dir . $name);
if ($handle -> uploaded) {
$handle -> file_name_body_pre = $prename;
$handle -> image_resize = true;
$handle -> image_ratio = true;
$handle -> image_ratio_no_zoom_in = true;
$handle -> image_y = $size;
$handle -> image_x = $size;
$handle -> file_overwrite = true;
$handle -> process(ROOTPATH . DS . $dir);
}
}
return '<img src="' . $config['site_url'] . DS . $dir . $prename . $name . '" alt="' . $sign . '" />';
}
$param = ($size < 100) ? ' height="' . $size . '" width="' . $size . '"' : '';
return '<img src="' . $config['site_url'] . '/images/img/photo.jpg" alt="nophoto"' . $param . ' />';
}
# Функция удаление картинки с проверкой
function unlink_screen($dir, $image = '') {
if (!empty($image)) {
clearstatcache();
$small = 'small_' . $image;
if ( @file_exists( $dir . $image ) ) {
unlink( $dir . $image );
}
if ( @file_exists( $dir . $small ) ) {
unlink( $dir . $small );
}
}
}
# Функция вывода обраных ссылок
function show_back_link($arr = '', $del = ' -> ') {
global $cats_names;
$exp = explode(',', $arr);
$show = array();
$show[] = '<a href="?m=load&' . RND . '">Загрузки</a>';
if (!empty($exp) && count($exp) > 0) {
foreach($exp as $key => $val) {
if (!empty($cats_names[$val])) {
$show[] = '<a href="?m=cats&id=' . $val . '">' .$cats_names[$val] . '</a>';
}
}
}
return implode($del, $show);
}
?>