Вход Регистрация
Файл: lib/includes/panel/movdel.php
Строк: 85
<?php

if ($admin)
{

    
$id $id $id 0;

    if ((!empty(
$_POST['data']) && (isset($_POST['move']) || isset($_POST['delete']))))
    {

        
/* Получаем и обрабатываем идентификаторы объектов */
        
$ids = (isset($_POST['cat']) && isset($_POST['move'])) ? unserialize($_POST['data']) : $_POST['data'];
        
$ids array_map('intval'$ids);

        
/* Перемещение категорий и статей */
        
if (isset($_POST['move']))
        {

            
/* Проверяем список объектов на тип и существование */
            
$sql->query(
                
"SELECT `id`, `refid`, `type` " .
                
"FROM `mod_lib` WHERE `id` IN ('" implode('',''$ids) .
                
"') AND (`type` = 'arc' OR `type` = 'cat')"
            
);
            
/* Список объектов прошедших проверку */
            
$moves = array();
            
$total_cats 0;
            
$total_arcs 0;

            while(
$data $sql->fetch())
            {

                if(
$data['type'] == 'cat')
                    
$total_cats++;
                else
                    
$total_arcs++;
                
$moves[$data['refid']][] = $data['id'];

            }

            unset(
$data$ids);

            
/* Все ли объекты находятся в одной и той же категории? */
            
if (count($moves) > 1)
            {

                
$error 'Ошибка принятых данных';

            }
            else
            {

                
/* Идентификатор категории в которой находятся объекты */
                
$refid key($moves);
                
/* Список объетов */
                
$moves array_shift($moves);
                
/* Перемещаем объекты */
                
if (isset($_POST['cat']))
                {

                    
$cat = isset($_POST['cat']) ? abs(intval($_POST['cat'])) : 0;
                    if ( 
/* Проверка категории на существование */
                        
isset($_POST['cat'])
                        && (
$newcat $sql->query(
                                
"SELECT `counter`, `count_arc` FROM `mod_lib` " .
                                
"WHERE `type` = 'cat' AND `id` = '" $cat "'"
                            
)->fetch()) !== FALSE
                    
)
                    {

                        if (
$refid != 0)
                        {
                            
/* Обновляем счетчики объектов в предыдущей категории */
                            
$refcat $sql->query("SELECT `counter`, `count_arc` FROM `mod_lib` WHERE `id` = '" $refid "'")->fetch();
                            
$sql->query(
                                
"UPDATE `mod_lib` SET " .
                                
"`counter` = '" . ($refcat['counter'] - $total_cats) . "', " .
                                
"`count_arc` = '" . ($refcat['count_arc'] - $total_arcs) . "' " .
                                
"WHERE `id` = '" $refid "'"
                            
);

                        }

                        if (
$cat != 0)
                        {
                            
/* Обновляем счетчики объектов в новой категории */
                            
$newcat $sql->query("SELECT `counter`, `count_arc` FROM `mod_lib` WHERE `id` = '" $cat "'")->fetch();
                            
$sql->query(
                                
"UPDATE `mod_lib` SET " .
                                
"`counter` = '" . ($newcat['counter'] + $total_cats) . "', " .
                                
"`count_arc` = '" . ($newcat['count_arc'] + $total_arcs) . "' " .
                                
"WHERE `id` = '" $cat "'"
                            
);

                        }
                        
/* Перемещаем объекты */
                        
$sql->query("UPDATE `mod_lib` SET `refid` = '" $cat "' WHERE `id` IN ('" implode('',''$moves) . "')");
                        
$message 'Отмеченные статьи и категории перемещены';

                    }
                    else
                    {

                        
$error 'Категория не найдена';

                    }

                }
                else
                {

                    
/* Получаем список категорий */
                    
$sql->query(
                        
"SELECT `id`, `name` FROM `mod_lib` WHERE `id` NOT IN ('" .
                        
implode('',''$moves) . "', '" $refid .
                        
"') AND `type` = 'cat'"
                    
);


                    echo 
'<div class="fmenu">' 'Библиотека' ' | ' $set['title'] . '</div>' .
                         
'<div class="menu"><form action="?act=panel&amp;mod=movdel&amp;id=' $id '" method="post">' .
                         
'Выберите категорию<br /><select name="cat">' .
                         (
$refid !== '<option value="0">В корень</option>' '');

                    while(
$data $sql->fetch())
                    {
                        echo 
'<option value="' $data['id'] . '">' htmlentities($data['name'], ENT_QUOTES'UTF-8') . '</option>';
                    }


                    echo 
'</select><input type="hidden" name="data" value='' . (serialize($moves)) . '' />' .
                         
'<input type="submit" name="move" value="Переместить" /></form></div>' .
                         
'<div class="fmenu"><a href="?act=panel&amp;mod=view&amp;id=' $id '">Назад</a></div>';

                }

            }


        }
        
/* Удаляем объекты */
        
elseif (isset($_POST['delete']))
        {

            
/* Проверка объектов на тип и существование */
            
$data = array('arc' => array(), 'cat' => array());
            
$sql->query(
                
"SELECT `refid`, `type`, `id` " .
                
"FROM `mod_lib` WHERE `id` IN ('" .
                
implode("', '"$ids) . "') AND " .
                
"(`type` = 'arc' OR `type` = 'cat')"
            
);
            while (
$obj $sql->fetch())
            {

                switch(
$obj['type'])
                {

                    case 
'arc':
                        
$data['arc'][$obj['refid']][] = $obj['id'];
                        break;
                    case 
'cat':
                        
$data['cat'][$obj['refid']][] = $obj['id'];
                        break;
                    default:

                }

            }

            
/* Все ли объекты на ходятся в одной категории? */
            
if ((count($data['arc']) > 1)
                || (
count($data['cat']) > 1)
                || (   (
key($data['arc']) != key($data['cat']))
                    && (!empty(
$data['cat']) && !empty($data['arc']))
                   )
            )
            {

                
$error 'Ошибка принятых данных';

            }
            else
            {

                
$refid = !empty($data['arc']) ? key($data['arc']) : key($data['cat']);
                
$cats array_shift($data['cat']);
                
$arcs array_shift($data['arc']);

                
/* Удаляем категории */
                
if (!empty($cats))
                {

                    
$sql->query("DELETE FROM `mod_lib` WHERE `id` IN('" implode('',''$cats) . "') AND `count_arc` = '0' AND `counter` = '0'");
                    if (
$refid != 0)
                    {
                        
$total_cats mysqli_affected_rows($sql->db);
                        
$refcat $sql->query("SELECT `counter` FROM `mod_lib` WHERE `id` = '" $refid "'")->fetch();
                        
$sql->query("UPDATE `mod_lib` SET `counter` = '" . ($refcat['counter'] - $total_cats) . "' WHERE `id` = '" $refid "'");

                    }

                }

                
/* Удаляем статьи */
                
if (!empty($arcs))
                {

                    
$arcs_q implode('',''$arcs);
                    
/* Удаляем комментарии */
                    
$sql->query("DELETE FROM `mod_lib_comments` WHERE `sub_id` IN('" $arcs_q "')");
                    
/* Удаляем счетчики и закладки */
                    
$sql->query("DELETE FROM `mod_lib_counters` WHERE `aid` IN('" $arcs_q "')");
                    
/* Удаляем файлы */
                    
$sql->query("SELECT `name` FROM `mod_lib_files` WHERE `aid` IN('" $arcs_q "')");
                    if (
$sql->num_rows())
                    {

                        while (
$file $sql->fetch())
                        {

                            
$filename FILESDIR 'attach' DIRECTORY_SEPARATOR $file['name'];
                            
$ext explode('.'$file['name']);

                            if (
isImage($ext[1]))
                            {

                                if (
file_exists(FILESDIR 'attach' DIRECTORY_SEPARATOR $ext[0] . '_preview.png'))
                                {

                                    
unlink(FILESDIR 'attach' DIRECTORY_SEPARATOR $ext[0] . '_preview.png');

                                }

                            }

                            if (
file_exists($filename))
                            {
                                
unlink($filename);
                            }

                        }

                        
$sql->query("DELETE FROM `mod_lib_files` WHERE `aid` IN('" $arcs_q "')");

                    }

                    foreach(
$arcs as $aid)
                    {

                        if (
file_exists(FILESDIR 'download' .DIRECTORY_SEPARATOR 'html' DIRECTORY_SEPARATOR $aid '.zip'))
                        {

                            
unlink(FILESDIR 'download' .DIRECTORY_SEPARATOR 'html' DIRECTORY_SEPARATOR $aid '.zip');

                        }
                        if (
file_exists(FILESDIR 'download' .DIRECTORY_SEPARATOR 'txt' DIRECTORY_SEPARATOR $aid '.zip'))
                        {

                            
unlink(FILESDIR 'download' .DIRECTORY_SEPARATOR 'txt' DIRECTORY_SEPARATOR $aid '.zip');

                        }

                    }

                    
$sql->query("DELETE FROM `mod_lib` WHERE `id` IN('" $arcs_q "')");
                    if (
$refid != 0)
                    {
                        
$total_arcs mysqli_affected_rows($sql->db);
                        
$refcat $sql->query("SELECT `count_arc` FROM `mod_lib` WHERE `id` = '" $refid "'")->fetch();
                        
$sql->query("UPDATE `mod_lib` SET `count_arc` = '" . ($refcat['count_arc'] - $total_arcs) . "' WHERE `id` = '" $refid "'");
                    }

                }


            }

            
$message 'Отмеченные статьи и категории удалены';

        }

    }
    else
    {

        
$message 'Ошибка принятых данных';

    }

    if (!empty(
$message) && empty($error))
    {

        echo 
'<div class="fmenu">' 'Библиотека' ' | ' $set['title'] . '</div>' .
             
'<div class="menu">' $message '.<br /><a href="' .
             (isset(
$_GET['moderation']) ? '?act=panel&amp;mod=moderation' '?act=panel&amp;mod=view&amp;id=' $id) .
             
'">Назад</a></div><div class="fmenu"><a href="index.php">В библиотеку</a></div>';

    }

}
else
{

    
$error 'Доступ запрещен';

}
Онлайн: 1
Реклама