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

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

# Кеширование категорий сообществ
$categories = get_vars('comm_categories');

if (!
$categories) {

    
$db->query("UPDATE ?_comm_category SET `cats_count` = (SELECT COUNT(1) FROM ?_comm_comm 
                WHERE ?_comm_category.`cats_id` = ?_comm_comm.`comm_cats_id`);"
);

    
$categories = array();

    
$cats = $db->select("SELECT * FROM ?_comm_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_about'], $cat['cats_count']);
        }

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

if (
is_admin(array(101,102))) {

    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']) : '';
                
$about = !empty($_POST['about']) ? check($_POST['about']) : '';

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

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

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

                    
del_vars('comm_categories');

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

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

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

        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']) : '';

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

                    
$is_cat = (int) $db->selectCell("SELECT `cats_id` FROM ?_comm_category WHERE `cats_id` = ?;", request('cat'));

                    if (
$is_cat > 0) {

                        
$db->query("UPDATE ?_comm_category SET `cats_name` = ?, `cats_about` = ? WHERE `cats_id` = ?;", $name, $about, $is_cat);

                        
del_vars('comm_categories');

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

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

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

        if (
is_admin(array(101))) {

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

                
$is_cat = (int) $db->selectCell("SELECT `cats_id` FROM ?_comm_category WHERE `cats_id` = ?;", request('del_cat'));

                if (
$is_cat > 0) {

                    include_once( 
dirname(__FILE__) . '/del.inc.php' );

                    
$dels = $db->select("SELECT `comm_id`, `comm_image` FROM ?_comm_comm WHERE `comm_cats_id` = ?", $is_cat);

                    if (!empty(
$dels) && @count($dels) > 0) {

                        foreach(
$dels as $del) {

                            
delete_soo($del['comm_id'], $del['comm_image']);
                        }
                    }

                    
$db->query("DELETE FROM ?_comm_category WHERE `cats_id` = ? LIMIT 1;", $is_cat);

                    
$db->query("OPTIMIZE TABLE ?_comm_category;");

                    
del_vars('comm_categories');

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

                    
redirect('?m=soo&' . 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']) {

                
$db->query("UPDATE ?_comm_category SET `cats_count` = (SELECT COUNT(*) FROM ?_comm_comm WHERE ?_comm_category.`cats_id` = ?_comm_comm.`comm_cats_id`);");

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

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

    switch (
$mod):
    default:

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

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

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

            if (!empty(
$row)) {

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

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

            if (!empty(
$row)) {

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

                    
$db->query("UPDATE ?_comm_category SET `cats_order` = ? WHERE `cats_id` = ?", $rows['cats_order'], $down);
                    
$db->query("UPDATE ?_comm_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 ?_comm_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=soo&amp;edit_cat=' . $row['cats_id'] . '#edit">Ред.</a> | ';
                    echo 
'<a href="?m=soo&amp;del_cat=' . $row['cats_id'] . '&amp;rnd=' . $_SESSION['token'] . '" onclick="return confirm('Вы действительно хотите удалить данный раздел?')">Уд.</a> | ';
                    echo 
'<a href="?m=soo&amp;up=' . $row['cats_id'] . '">Вверх</a> | ';
                    echo 
'<a href="?m=soo&amp;down=' . $row['cats_id'] . '">Вниз</a></div>';
                }
                echo 
$row['cats_order'] . '. <a href="?m=soo_list&amp;cat=' . $row['cats_id'] . '&amp;' . RND . '">' . $row['cats_name'] . '</a> ';
                echo 
'(' . num($row['cats_count']) . ')<br />';
                if (!empty(
$row['cats_about'])) echo bb_code($row['cats_about']) . '<br />';
                echo 
'</div>';
            }
        }
        else {

            
show_error('Разделы сообществ еще не созданы!');
        }

        if (
is_admin(array(101))) {

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

                
$cat = $db->selectRow("SELECT * FROM ?_comm_category
                                       WHERE `cats_id` = ? LIMIT 1"
, num($_GET['edit_cat']));
                if (!empty(
$cat)) {
                    
$form = new cmsForm('?m=soo&amp;rnd=' . $_SESSION['token'], 'post', ' id="edit"');
                    
$form->addText('Название:', 'name', $cat['cats_name']);
                    
$form->addTextarea('Описание (max 250):', 'about', $cat['cats_about']);
                    
$form->addHidden('cat', $cat['cats_id']);
                    echo 
$form->Submit(array('Изменить','Отмена'), array('edit_cat','cancel'));
                    unset(
$form);
                }
                else 
show_error('Категория не найдена!');
            }
            else if (!empty(
$_GET['add_cat'])) {

                
$form = new cmsForm('?m=soo&amp;rnd=' . $_SESSION['token'], 'post', ' id="add"');
                
$form->addText('Название:', 'name', request('name'));
                
$form->addTextarea('Описание (max 250):', 'about', request('about'));
                echo 
$form->Submit(array('Создать раздел','Отмена'), array('add_cat','cancel'));
                unset(
$form);
            }
            else {

                echo 
'<div class="b">' . icon('mail.png');
                echo 
' <a href="?m=soo&amp;add_cat=1&amp;' . RND . '#add">Создать раздел</a></div>';
                echo 
'<div class="b">' . icon('mail.png');
                echo 
' <a href="?m=soo&amp;restatement=1&amp;rnd=' . $_SESSION['token'] . '">Пересчитать</a> |';
                echo 
' <a href="?m=set_soo&amp;' . RND . '">Настройки</a> |';
                echo 
' <a href="/comm/' . gen_uri('index', '', RND) . '">Обзор</a><br /></div>';
            }
        }

    break;
    case 
'soo_list':

        
$cats = $db->selectRow("SELECT * FROM ?_comm_category WHERE `cats_id` = ?;", request('cat'));

        if (empty(
$cats) || !is_array($cats)) {

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

            
redirect('?m=soo&' . RND);
        }

        
show_header($cats['cats_name'] . ' - Сообщества');

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

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

        
$rows = $db->selectPage($total, "SELECT `c`.*, `v`.`visit_nowtime`, `u`.`users_gender`
                                         FROM ?_comm_comm `c`
                                         LEFT JOIN ?_users_visit `v`
                                         ON `c`.`comm_user` = `v`.`visit_user`
                                         LEFT JOIN ?_users `u`
                                         ON `c`.`comm_user` = `u`.`users_login`
                                         WHERE `c`.`comm_cats_id` = ?
                                         ORDER BY `c`.`comm_create` DESC 
                                         LIMIT ?d, ?d"
, $cats['cats_id'], $from, $onpage);

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

            foreach(
$rows as $row) {

                
$icon = ($row['comm_status'] == 1) ? 'com_closed.gif' : 'com_open.gif';

                echo 
'<div class="b">';
                echo 
'<div class="right">' . get_date($row['comm_create']) . '</div>';
                echo 
icon($icon, 'icons');
                echo 
'<a href="/comm/' . $row['comm_url'] . DS . gen_uri('comm', '', RND) . '">' . $row['comm_name'] . '</a> ';
                echo 
'(' . $row['comm_count'] . ')<br />';
                echo 
'Создал: ' . user_visit_icon($row['comm_user'], $row['users_gender'], $row['visit_nowtime']);
                echo 
' <b>' . users_anketa($row['comm_user']) . '</b>';
                echo 
' [<a href="?m=users_edit&amp;uz=' . $row['comm_user'] . '&amp;' . RND . '">Ред.</a> | ';
                echo 
' <a href="?m=ban_user&amp;uz=' . $row['comm_user'] . '&amp;' . RND . '">Бан</a>]<br />';

                echo 
' &nbsp; [<a href="?m=soo_edit&amp;id=' . $row['comm_id'] . '&amp;' . RND . '">Редактировать</a> | ';
                echo 
' <a href="?m=soo_del&amp;id=' . $row['comm_id'] . '&amp;rnd=' . $_SESSION['token'] . '" onclick="return confirm('Вы действительно хотите удалить данное сообщество?')">Удалить</a>]<br />';
                echo 
'</div>';
            }

            echo 
show_pages('?m=soo_list');

            echo 
'<div class="b">Всего сообществ: <b>' . num($total) . '</b></div>';
        }
        else 
show_error('В данном разделе ещё нет сообществ!');

    break;
    case 
'soo_edit':

        
$row = array();
        
$row = $db->selectRow("SELECT ?_comm_comm.*, ?_comm_category.*
                               FROM ?_comm_comm LEFT JOIN ?_comm_category 
                               ON ?_comm_comm.`comm_cats_id` = ?_comm_category.`cats_id` 
                               WHERE `comm_id` = ? LIMIT 1;"
, $id);


        if (empty(
$row) || !is_array($row)) {

            
$inSes->addMessage('Ошибка! Сообщество не найдено!');
            
redirect('?m=soo&' . RND);
        }

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

            
redirect('?m=soo_list&cat=' . $row['comm_cats_id'] . '&' . RND);
        }

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

            
$cid     = !empty($_POST['cid'])    ? num($_POST['cid'])      : 0;
            
$url     = !empty($_POST['url'])    ? check($_POST['url'])    : '';
            
$name    = !empty($_POST['name'])   ? check($_POST['name'])   : '';
            
$text    = !empty($_POST['text'])   ? check($_POST['text'])   : '';
            
$rules   = !empty($_POST['rules'])  ? check($_POST['rules'])  : '';
            
$status  = !empty($_POST['status']) ? 1 : 0;
            
$forum   = !empty($_POST['forum'])  ? 1 : 0;
            
$obmen   = !empty($_POST['obmen'])  ? 1 : 0;

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

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

                if (
cms_strlen($url) >= 3 && cms_strlen($url) <= 50) {

                  if (
cms_strlen($name) >= 3 && cms_strlen($name) <= 100) {

                    if (
cms_strlen($text) >= 5 && cms_strlen($text) <= 1000) {

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

                        
$url    = cms_tolower($url);

                        
$is_soo = (int) $db->selectCell("SELECT `comm_id` FROM ?_comm_comm
                                                         WHERE LOWER(`comm_url`) = ? AND `comm_id` <> ? LIMIT 1;"
, $url, $row['comm_id']);

                        if (
$is_soo < 1) {

                          
$rules  = antimat($rules);
                          
$rules  = smiles($rules);
                          
$text   = antimat($text);
                          
$text   = smiles($text);

                          
$db->query("UPDATE ?_comm_comm SET `comm_cats_id` = ?, `comm_url` = ?, `comm_name` = ?, `comm_about` = ?, `comm_rules` = ?, `comm_status` = ?, `comm_forum` = ?, `comm_obmen` = ? WHERE `comm_id` = ?", $cid, $url, $name, $text, $rules, $status, $forum, $obmen, $row['comm_id']);

                          if (
$cid <> $row['comm_cats_id']) {

                              
$db->query("UPDATE ?_comm_category SET `cats_count` = (`cats_count` - 1) 
                                          WHERE `cats_id` = ?;"
, $row['cats_id']);

                              
$db->query("UPDATE ?_comm_category SET `cats_count` = (`cats_count` + 1) 
                                          WHERE `cats_id` = ?;"
, $cid);
                          }

                          
del_vars('community');

                          
$inSes->addMessage('Данные сообщества успешно изменены!', 'ok');

                          
redirect('?m=soo_list&cat=' . $cid . '&' . RND);
                        }
                        else 
$inSes->addMessage('Ошибка! Сообщество с таким адресом уже зарегистрировано!');
                      }
                      else 
$inSes->addMessage('Ошибка! Адрес сообщества содержит плохие символы!');
                    }
                    else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое описание сообщества (от 5 до 1000 символов)!');
                  }
                  else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое название (от 3 до 100 символов)!');
                }
                else 
$inSes->addMessage('Ошибка! Слишком длинный или короткий адрес сообщества (от 3 до 50 символов)!');
              }
              else 
$inSes->addMessage('Ошибка! Выбранный вами раздел не существует!');
            }
            else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }

        
show_header('Управление сообществом ' . $row['comm_name']);

        
$cats = array();
        foreach(
$categories as $key => $val) $cats[$key] = $val[0];

        
$form = new cmsForm('?m=soo_edit&amp;id=' . $row['comm_id'] . '&amp;rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
        
$form->addSelect('Категория:', 'cid', $row['comm_cats_id'], $cats);
        
$form->addText('Адрес сообщества (a-z, 0-9, _, -):<br />' . $config['site_url'] . '/comm/', 'url', $row['comm_url'], ' maxlength="30"');
        
$form->addText('Название сообщества:', 'name', $row['comm_name'], ' maxlength="100"');
        
$form->addTextarea('Краткое описание:', 'text', $row['comm_about'], ' id="msg"');
        
$form->addTextarea('Правила:', 'rules', $row['comm_rules']);
        
$form->addRadio('Сообщество:', 'status', $row['comm_status'], array('0' => 'Открытое', '1' => 'Закрытое'));
        
$form->addRadio('Форум:', 'forum', $row['comm_forum'], array('0' => 'Нет', '1' => 'Есть'));
        
$form->addRadio('Обменник:', 'obmen', $row['comm_obmen'], array('0' => 'Нет', '1' => 'Есть'));
        echo 
$form->Submit(array('Изменить', 'Отмена'), array('submit', 'cancel'));
        unset(
$form);

    break;
    case 
'soo_del':

        if (
is_admin(array(101))) {

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

                
$row = array();
                
$row = $db->selectRow("SELECT * FROM ?_comm_comm
                                       WHERE `comm_id` = ? LIMIT 1;"
, $id);

                if (!empty(
$row)) {

                    include_once( 
dirname(__FILE__) . '/del.inc.php' );

                    
delete_soo($row['comm_id'], $row['comm_image']);

                    
$db->query("UPDATE ?_comm_category SET `cats_count` = (SELECT COUNT(*) FROM ?_comm_comm WHERE ?_comm_category.`cats_id` = ?_comm_comm.`comm_cats_id`);");

                    
del_vars('comm_categories');

                    
$inSes->addMessage('Сообщество успешно удалено!', 'ok');

                    
redirect('?m=soo_list&cat=' . $row['comm_cats_id'] . '&' . RND);

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

        
redirect('?m=soo&' . RND);

    break;

    endswitch;

    echo 
'<div class="b">' . icon('return.png');

    if (!empty(
$mod) && $mod <> 'soo') {

        echo 
'<a href="?m=soo&amp;' . RND . '">Сообщества</a> | ';
    }
    echo 
'<a href="?' . RND . '">В админку</a><br /></div>';

    
show_footer();
}
else {

    
redirect('/?' . RND);
}

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