Вход Регистрация
Файл: 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) >= && 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) >= && 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']) ? 0;
            
$forum   = !empty($_POST['forum'])  ? 0;
            
$obmen   = !empty($_POST['obmen'])  ? 0;

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

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

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

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

                    if (
cms_strlen($text) >= && 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
Реклама