Вход Регистрация
Файл: CMS/core/admin/journal.php
Строк: 518
<?php

if (!defined('CMS')) { die('Access Denied!'); }

function 
restatement() {

    global 
$db;

    
$db->query("UPDATE ?_journal_category SET `cats_count` = (SELECT COUNT(`journal_id`) FROM ?_journal_posts WHERE ?_journal_category.`cats_id` = ?_journal_posts.`journal_cats_id` AND ?_journal_posts.`journal_moders` = '0');");

    
$db->query("UPDATE ?_journal_posts SET `journal_comments` = (SELECT COUNT(*) FROM ?_comments WHERE ?_journal_posts.`journal_id` = ?_comments.`comm_post` AND `comm_type` = 'journal');");

    return 
true;
}

if (
is_admin()) {

    if (!empty(
$_POST['add_cat'])) {

        if (
is_admin(array(101))) {

            if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                
$name = !empty($_POST['name']) ? check($_POST['name']) : '';

                if (
cms_strlen($name) >= && cms_strlen($name) < 101) {

                    
$maxorder = (int) $db->selectCell("SELECT IFNULL(MAX(`cats_order`),0)+1 FROM ?_journal_category;");

                    
$db->query("INSERT INTO ?_journal_category (`cats_order`, `cats_name`) VALUES (?, ?);"$maxorder$name);

                    
del_vars('journal_categories');

                    
$inSes->addMessage('Новый раздел успешно добавлен!''ok');

                    
redirect('?m=journal&' RND);
                }
                else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое название раздела!');
            }
            else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
        else 
$inSes->addMessage('Ошибка! Добавлять разделы могут только суперадмины!');
    }

    if (!empty(
$_GET['restatement'])) {

        if (
is_admin(array(101))) {

            if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                
restatement();

                
$inSes->addMessage('Все данные успешно пересчитаны!''ok');

                
redirect('?m=journal&' RND);
            }
            else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
        else 
$inSes->addMessage('Ошибка! Пересчитывать сообщения могут только суперадмины!');
    }

    if (!empty(
$_REQUEST['del_post'])) {

        
$del intar($_REQUEST['del_post']);

        
$del is_array($del) ? $del : array($del);

        if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

            if (!empty(
$_POST['moders'])) {

                
$del implode(','$del);

                
$db->query("UPDATE ?_journal_posts SET `journal_moders` = '0' WHERE `journal_id` IN (" $del ");");

                
restatement();

                
del_vars('journal_categories');

                
$inSes->addMessage('Выбранные статьи успешно опубликованы!''ok');

                
redirect('?m=moders&' RND);
            }
            else {

                
$del implode(','$del);

                
$db->query("DELETE FROM ?_comments WHERE `comm_post` IN (" $del ") AND `comm_type` = 'journal';");

                
$deljournals $db->query("DELETE FROM ?_journal_posts WHERE `journal_id` IN (" $del ");");

                
restatement();

                
del_vars('journal_categories');

                
$inSes->addMessage('Выбранные статьи успешно удалены!''ok');

                
redirect('?m=journals&' RND);
            }
        }
        else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
    }

    switch (
$mod):
    default:

        if (!empty(
$_GET['up'])) { // Перемещение на одну позицию вверх

            
$up num($_GET['up']);

            
$row $db->selectRow("SELECT * FROM ?_journal_category WHERE `cats_id` = ?"$up);

            if (!empty(
$row)) {

                
$rows $db->selectRow("SELECT * FROM ?_journal_category WHERE `cats_order` < ?
                                        ORDER BY `cats_order` DESC LIMIT 1"
$row['cats_order']);
                if (!empty(
$rows)) {

                    
$db->query("UPDATE ?_journal_category SET `cats_order` = ? WHERE `cats_id` = ?"$rows['cats_order'], $up);
                    
$db->query("UPDATE ?_journal_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 ?_journal_category WHERE `cats_id` = ?"$down);

            if (!empty(
$row)) {

                
$rows $db->selectRow("SELECT * FROM ?_journal_category WHERE `cats_order` > ?
                                        ORDER BY `cats_order` ASC LIMIT 1"
$row['cats_order']);
                if (!empty(
$rows)) {

                    
$db->query("UPDATE ?_journal_category SET `cats_order` = ? WHERE `cats_id` = ?"$rows['cats_order'], $down);
                    
$db->query("UPDATE ?_journal_category SET `cats_order` = ? WHERE `cats_id` = ?"$row['cats_order'], $rows['cats_id']);

                }
                else 
$inSes->addMessage('Ниже некуда!''info');

                unset(
$down,$row,$rows);
            }
        }

        
show_header('Управление журналом');

        
$rows $db->select("SELECT * FROM ?_journal_category ORDER BY `cats_order` ASC;");

        if (!empty(
$rows) && count($rows) > 0) {

            foreach(
$rows as $row) {

                echo 
'<div class="b">';
                if (
is_admin(array(101))) {

                    echo 
'<div class="right">';
                    echo 
'<a href="?m=journal_edit_cat&amp;c=' $row['cats_id'] . '">Ред.</a> | ';
                    echo 
'<a href="?m=journal_del_cat&amp;c=' $row['cats_id'] . '">Уд.</a> | ';
                    echo 
'<a href="?m=journal&amp;up=' $row['cats_id'] . '">Вверх</a> | ';
                    echo 
'<a href="?m=journal&amp;down=' $row['cats_id'] . '">Вниз</a></div>';
                }
                echo 
$row['cats_order'] . '. <a href="?m=journals&amp;c=' $row['cats_id'] . '&amp;' RND '">' $row['cats_name'] . '</a> ';
                echo 
'(' num2name($row['cats_count'],array('статей','статьи','статья')) . ')<br />';
                if (!empty(
$row['cats_text'])) echo bb_code($row['cats_text']) . '<br />';
                echo 
'</div>';
            }
        }
        else {

            
show_error('Разделы журнала еще не созданы!');
        }

        if (
is_admin(array(101))) {

            if (
$config['journal_moder'] == 1) {

                
$count = (int) $db->selectCell("SELECT COUNT(`journal_id`) FROM ?_journal_posts WHERE `journal_moders` = '1';");

                
$moder_link ' | <a href="?m=moders_journal">На модерации</a> (' $count ')';
            }
            else 
$moder_link '';

            echo 
'<div class="b form">';
            echo 
'<form action="?m=journal&amp;rnd=' $_SESSION['token'] . '" method="post">';
            echo 
'<b>Заголовок:</b><br />';
            echo 
'<input type="text" name="name" maxlength="50" />';
            echo 
'<input type="submit" name="add_cat" class="btns" value="Создать раздел" /></form></div>';
            echo 
'<div class="b">' icon('mail.png');
            echo 
' <a href="?m=journal&amp;restatement=1&amp;rnd=' $_SESSION['token'] . '">Пересчитать</a> |';
            echo 
' <a href="?m=set_journal&amp;' RND '">Настройки</a> |';
            echo 
' <a href="/journal/' gen_uri('index'''RND) . '">Обзор</a>';
            echo 
$moder_link '<br /></div>';
        }
        else {

            if (
$config['journal_moder'] == 1) {

                
$count = (int) $db->selectCell("SELECT COUNT(`journal_id`) FROM ?_journal_posts WHERE `journal_moders` = '1';");

                echo 
'<div class="b"><a href="?m=moders_journal">На модерации</a> (' $count ')<br /></div>';
            }
        }
    break;
    case 
'journal_edit_cat':

        if (
is_admin(array(101))) {

            
$journals $db->selectRow("SELECT * FROM ?_journal_category WHERE `cats_id` = ? LIMIT 1;"num($_REQUEST['c']));

            if (!empty(
$journals)) {

                if (!empty(
$_POST['cancel'])) {

                    
redirect('?m=journal&' RND);
                }

                if (!empty(
$_POST['submit'])) {

                    
$name = !empty($_POST['name'])   ? check($_POST['name']) : '';
                    
$text = !empty($_POST['text'])   ? check($_POST['text']) : '';

                    if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                        if (
cms_strlen($name) >= && cms_strlen($name) < 101) {

                            if (
cms_strlen($text) < 555) {

                                
$db->query("UPDATE ?_journal_category SET `cats_name` = ?, `cats_text` = ? 
                                            WHERE `cats_id` = ?;"
$name$text$journals['cats_id']);

                                
$inSes->addMessage('Раздел успешно отредактирован!''ok');

                                
redirect('?m=journal&' RND);

                            } else {
                                
$inSes->addMessage('Ошибка! Данного раздела не существует!');
                            }
                        } else {
                             
$inSes->addMessage('Ошибка! Слишком длинное или короткое название раздела!');
                        }
                    } else {
                        
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
                    }
                }

                
show_header('Редактирование раздела');
                
$form = new cmsForm('?m=journal_edit_cat&amp;rnd=' $_SESSION['token'], 'post');
                
$form->addText('Заголовок (max 100):''name'$journals['cats_name']);
                
$form->addTextarea('Описание (max 255):''text'$journals['cats_text']);
                
$form->addHidden('c'$journals['cats_id']);
                echo 
$form->Submit(array('Изменить','Отмена'), array('submit','cancel'));
                unset(
$form);
            }
            else {

                
$inSes->addMessage('Ошибка! Данного раздела не существует!');
                
redirect('?m=journal&' RND);
            }
        }
        else {

            
$inSes->addMessage('Ошибка! Изменять разделы могут только суперадмины!');
            
redirect('?m=journal&' RND);
        }
    break;
    case 
'journal_del_cat':

        if (
is_admin(array(101))) {

            
$journals $db->selectRow("SELECT * FROM ?_journal_category WHERE `cats_id` = ? LIMIT 1;"num($_REQUEST['c']));

            if (!empty(
$journals)) {

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    
$db->query("DELETE FROM ?_comments WHERE `comm_type` = 'journal' AND `comm_cats` = ?;"num($journals['cats_id']));
                    
$db->query("DELETE FROM ?_journal_posts WHERE `journal_cats_id` = ?;"num($journals['cats_id']));
                    
$db->query("DELETE FROM ?_journal_category WHERE `cats_id` = ?;"num($journals['cats_id']));
                    
$db->query("OPTIMIZE TABLE ?_comments, ?_journal_posts, ?_journal_category;");

                    
$inSes->addMessage('Раздел успешно удален!''ok');

                    
redirect('?m=journal&' RND);
                }
                
show_header('Удаление раздела ' $journals['cats_name']);
                echo 
'<div class="b">';
                echo 
'Вы уверены что хотите удалить раздел <b>' $journals['cats_name'] . '</b> журнала?<br /><br />';
                echo 
icon('error.gif''icons');
                echo 
'<a href="?m=journal_del_cat&amp;c=' num($journals['cats_id']) . '&amp;rnd=' $_SESSION['token'] . '">Да, уверен!</a></b>';
                echo 
'<br /></div>';
                echo 
'<div class="b">' icon('return.png') . ' <a href="?m=journal&amp;' RND '">Вернуться</a><br /></div>';
            }
            else {

                
$inSes->addMessage('Ошибка! Данного раздела не существует!');
                
redirect('?m=journal&' RND);
            }
        }
        else {

            
$inSes->addMessage('Ошибка! Изменять разделы могут только суперадмины!');
            
redirect('?m=journal&' RND);
        }
    break;
    case 
'journals':

        
$cid = !empty($_REQUEST['c']) ? num($_REQUEST['c']) : 0;

        
# Кеширование категорий журнала
        
$categories get_vars('journal_categories');

        if (!
$categories) {

            
$db->query("UPDATE ?_journal_category SET `cats_count` = (SELECT COUNT(`journal_id`) FROM ?_journal_posts 
                        WHERE ?_journal_category.`cats_id` = ?_journal_posts.`journal_cats_id` AND ?_journal_posts.`journal_moders` = '0');"
);

            
$categories = array();

            
$cats $db->select("SELECT * FROM ?_journal_category ORDER BY `cats_order` ASC;");

            if (!empty(
$cats) && count($cats) > 0) {

                foreach( 
$cats as $cat ) {

                    
$categories[$cat['cats_id']] = array($cat['cats_name'], $cat['cats_text'], $cat['cats_count']);
                }

                
set_vars('journal_categories',$categories);
            }
        }

        if (!
array_key_exists($cid,$categories)) {

            
$inSes->addMessage('Ошибка! Данного раздела не существует!');

            
redirect('?m=journal&' RND);
        }

        list(
$name$desc$count) = $categories[$cid];

        
show_header('Управление журналом - ' $name);

        
$onpage = !empty($config['journal_num']) ? num($config['journal_num']) : 10;

        if (
$page 1$from = ($page 1) * $onpage; else $from 0;

        
$rows $db->selectPage($total"SELECT * FROM ?_journal_posts
                                         WHERE `journal_cats_id` = ?
                                         ORDER BY `journal_time` DESC 
                                         LIMIT ?d, ?d"
$cid$from$onpage );

        if (
$total 0) {

            echo 
'<form action="?m=journals&amp;cid=' $cid '&amp;rnd=' $_SESSION['token'] . '" method="post" name="journals">';

            foreach(
$rows as $row) {

                
$icon = ($row['journal_moders'] == 1) ? 'cancel.png' 'vcard_edit.png';
                echo 
'<div class="b">' icon($icon'icons');
                echo 
'<b><a href="/journal/' gen_uri('post'$row['journal_id']) . '">' $row['journal_title'] . '</a></b><br />';
                echo 
'Автор: ' users_anketa($row['journal_user']) . ' (' get_date($row['journal_time']) . ')<br />';
                echo 
'Просмотров: ' num($row['journal_read']) . '<br />';
                echo 
'<a href="/journal/' gen_uri('comments'$row['journal_id']) . '">Комментарии</a> (' num($row['journal_comments']) . ')<br />';
                echo 
'<input type="checkbox" name="del_post[]" value="' num($row['journal_id']) . '" /> ';
                echo 
'<a href="?m=journal_edit&amp;id=' num($row['journal_id']) . '&amp;' RND '">Редактировать</a>';
                echo 
'</div>';
            }

            echo 
'<div class="b">';
            echo 
'<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
            echo 
'<input type="submit" class="btns" value="Удалить выбранное" /></div></form>';

            echo 
show_pages('?m=journals');

            echo 
'<div class="b">Всего статей: <b>' $count '</b><br /></div>';
        }
        else {

            
show_error('В данном разделе еще нет статей!');
        }

        echo 
'<div class="b">' icon('return.png') . ' <a href="?m=journal&amp;' RND '">Категории</a> | ';
        echo 
'<a href="/journal/' gen_uri('add'''RND) . '">Добавить</a><br /></div>';

        echo <<<JSCRIPT

<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
    var frm = document.journals;
    if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    else{ frm.master_box.checked = true; }
    for (var i=0;i<frm.elements.length;i++) {
        var elmnt = frm.elements[i];
        if (elmnt.type=='checkbox') {
            if(frm.master_box.checked == true){ elmnt.checked=false; }
            else{ elmnt.checked=true; }
        }
    }
    //if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    //else{ frm.master_box.checked = true; }
}
-->
</script>

JSCRIPT;

    break;
    case 
'journal_edit':

        
$journals $db->selectRow("SELECT * FROM ?_journal_posts WHERE `journal_id` = ? LIMIT 1;"$id);

        if (!empty(
$journals)) {

            if (!empty(
$_POST['cancel'])) {

                
redirect('?m=journals&c=' num($journals['journal_cats_id']) . '&' RND);
            }
            if (!empty(
$_POST['submit'])) {

                
$cid    = !empty($_POST['cid'])    ? num($_POST['cid'])     : 0;
                
$title  = !empty($_POST['title'])  ? check($_POST['title']) : '';
                
$text   = !empty($_POST['text'])   ? check($_POST['text'])  : '';
                
$user   = !empty($_POST['user'])   ? check($_POST['user'])  : '';
                
$moders = !empty($_POST['moders']) ? 0;

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    if (
cms_strlen($title) >= && cms_strlen($title) <= 101) {

                        if (
cms_strlen($text) >= $config['journal_min_text'] && cms_strlen($text) <= $config['journal_max_text']) {

                            if (
preg_match('|^[a-z0-9-]+$|i'$user)) {

                                if (
$cid 0) {

                                    
$text smiles($text);

                                    
$db->query("UPDATE ?_journal_posts SET `journal_cats_id` = ?, `journal_title` = ?, `journal_text` = ?, `journal_user` = ?, `journal_moders` = ? WHERE `journal_id` = ?;"$cid$title$text$user$moders$id);

                                    
restatement();

                                    
del_vars('journal_categories');

                                    
$inSes->addMessage('Статья успешно отредактирована!''ok');

                                    
redirect('?m=journals&c=' num($journals['journal_cats_id']) . '&' RND);
                                }
                                else 
$inSes->addMessage('Ошибка! Неверно указана категория!');
                            }
                            else 
$inSes->addMessage('Ошибка! Недопустимые символы в логине! Разрешены только знаки латинского алфавита и цифры!');
                        }
                        else 
$inSes->addMessage('Ошибка! Слишком длинный или короткий текст статьи (от ' $config['journal_min_text'] . ' до ' $config['journal_max_text'] . ' символов)!');
                    }
                    else 
$inSes->addMessage('Ошибка! Слишком длинный или короткий заголовок (от 5 до 100 символов)!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }

            
show_header('Редактирование ' $journals['journal_title']);

            if (!empty(
$_GET['code'])) include( MODULES_PATH 'code.inc.php' );
            else if (!empty(
$_GET['smiles'])) include( MODULES_PATH 'smiles.inc.php' );

            
$cats = array();
            
$cats[0] = 'Список разделов';
            
$categories get_vars('journal_categories');
            foreach(
$categories as $key => $val$cats[$key] = $val[0];

            
$journals['journal_text'] = nosmiles($journals['journal_text']);
            
$journals['journal_text'] = str_ireplace(array('<br>','<br/>','<br />'), "n"$journals['journal_text']);

            
$form = new cmsForm('?m=journal_edit&amp;id=' $id '&amp;rnd='.$_SESSION['token'], 'post'' name="form" id="editnews"');
            
$form->addSelect('Категория:''cid'$journals['journal_cats_id'], $cats);
            
$form->addText('Заголовок:''title'$journals['journal_title'], ' maxlength="100" style="width:98%;"');
            
$form->addCode('Текст: <small>[<a href="?m=journal_edit&amp;id=' $id '&amp;smiles=1">Смайлы</a>] ');
            
$form->addCode('[<a href="?m=journal_edit&amp;id=' $id '&amp;code=1">ББ-коды</a>]</small>');
            
$form->addCode(' [<a href="#" onclick="document.editnews.markItUp.rows += 10;">+</a>]');
            
$form->addCode(' [<a href="#" onclick="document.editnews.markItUp.rows -= 10;">-</a>]');
            
$form->addTextarea('''text'$journals['journal_text'], ' id="markItUp" style="width:98%;"');
            
$form->addText('Автор:''user'$journals['journal_user'], ' maxlength="100"');
            
$form->addCheckBox(array(''' - Для взрослых'), 'xxx'$journals['journal_is_xxx']);
            
$form->addCheckBox(array(''' - На модерации'), 'moders'$journals['journal_moders']);
            echo 
$form->Submit(array('Изменить','Отмена'), array('submit','cancel'));
            unset(
$form);
        }
        else {

            
$inSes->addMessage('Ошибка! Данной статьи не существует!');
            
redirect('?m=journals&' RND);
        }
    break;
    case 
'moders_journal':

        
show_header('Управление журналом - На модерации');

        
$onpage = !empty($config['journal_num']) ? num($config['journal_num']) : 10;

        if (
$page 1$from = ($page 1) * $onpage; else $from 0;

        
$rows $db->selectPage($total"SELECT * FROM ?_journal_posts
                                         WHERE `journal_moders` = '1'
                                         ORDER BY `journal_time` DESC 
                                         LIMIT ?d, ?d"
$from$onpage );

        if (
$total 0) {

            echo 
'<form action="?m=moders&amp;rnd=' $_SESSION['token'] . '" method="post" name="journals">';

            foreach( 
$rows as $row ) {

                
$icon = ($row['journal_moders'] == 1) ? 'cancel.png' 'vcard_edit.png';

                echo 
'<div class="b">' icon($icon'icons');
                echo 
'<b><a href="/journal/' gen_uri('post'$row['journal_id']) . '">' $row['journal_title'] . '</a></b><br />';
                echo 
'Автор: ' users_anketa($row['journal_user']) . ' (' get_date($row['journal_time']) . ')<br />';
                echo 
'Просмотров: ' num($row['journal_read']) . '<br />';
                echo 
'<a href="/journal/' gen_uri('comments'$row['journal_id']) . '">Комментарии</a> (' num($row['journal_comments']) . ')<br />';
                echo 
'<input type="checkbox" name="del_post[]" value="' num($row['journal_id']) . '" /> ';
                echo 
'<a href="?m=journal_edit&amp;id=' num($row['journal_id']) . '&amp;' RND '">Редактировать</a><br />';
                echo 
'</div>';
            }

            echo 
'<div class="b">';
            echo 
'<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
            echo 
'<input type="submit" class="btns" value="Удалить выбранное" /> ';
            echo 
'<input type="submit" class="btns" name="moders" value="Опубликовать" /></div></form>';

            echo 
show_pages('?m=moders');

            echo 
'<div class="b">Всего статей на модерации: <b>' $total '</b><br /></div>';
        }
        else {

            
show_error('Публикаций на модерации пока еще нет!');
        }

        echo 
'<div class="b">' icon('return.png') . ' <a href="?m=journal&amp;' RND '">Категории</a><br /></div>';

        echo <<<JSCRIPT

<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
    var frm = document.journals;
    if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    else{ frm.master_box.checked = true; }
    for (var i=0;i<frm.elements.length;i++) {
        var elmnt = frm.elements[i];
        if (elmnt.type=='checkbox') {
            if(frm.master_box.checked == true){ elmnt.checked=false; }
            else{ elmnt.checked=true; }
        }
    }
}
-->
</script>

JSCRIPT;

    break;

    endswitch;

    echo 
'<div class="b">' icon('return.png') . ' <a href="?' RND '">В админку</a><br /></div>';

    
show_footer();
}
else {

    
redirect('/?' RND);
}

?>
Онлайн: 0
Реклама