Вход Регистрация
Файл: mc-2.6/modules/forum/controllers/forum_admin.php
Строк: 326
<?php
/**
 * MobileCMS
 *
 * Open source content management system for mobile sites
 *
 * @author MobileCMS Team <support@mobilecms.ru>
 * @copyright Copyright (c) 2011, MobileCMS Team
 * @link http://mobilecms.ru Official site
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 */

defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>');

/**
 * Контроллер админки форума
 */
class Forum_Admin_Controller extends Controller {
    
/**
    * Уровень пользовательского доступа
    */
    
public $access_level 10;
    
/**
    * Тема
    */
    
public $template_theme 'admin';

    
/**
    * Метод по умолчанию
    */
    
public function action_index() {
        
$this->action_sections();
    }

    
/**
    * Конфигурация модуля
    */
    
public function action_config() {
        
$_config $this->config['forum'];

        if(isset(
$_POST['submit'])) {
            
main::is_demo();
            
$_config $_POST;

            
main::config($_config'forum'$this->db);

            
a_notice('Данные успешно изменены!'a_url('forum/admin/config'));
        }

        if(!isset(
$_POST['submit']) || $error) {
            
$this->tpl->assign(array(
                
'_config' => $_config
            
));

            
$this->tpl->display('config');
        }
    }

    
/**
    * Управление разделами форума
    */
    
public function action_sections() {
        switch(
$_GET['a']) {
            
# Создание раздела
              
case 'create':
                
main::is_demo();
                if(!empty(
$_POST['new_section'])) {
                    
$position $this->db->get_one("SELECT MAX(position) FROM #__forum_sections") + 1;
                    
$this->db->query("INSERT INTO #__forum_sections SET
                        name = '"
a_safe($_POST['new_section']) ."',
                        position = '"
$position ."'
                    "
);

                    
a_notice('Раздел успешно создан!'a_url('forum/admin'));
                }
                else 
a_error('Укажите название раздела!');
                break;

              
# Удаление раздела
              
case 'delete':
                
main::is_demo();
                
$section $this->db->get_row("SELECT * FROM #__forum_sections WHERE section_id = "intval($_GET['section_id']));
                
$this->db->query("DELETE FROM #__forum_sections WHERE section_id = "intval($_GET['section_id']));

                
# Меняем позиции
                
$this->db->query("UPDATE #__forum_sections SET position = position - 1 WHERE position > "$section['position']);

                
a_notice('Раздел успешно удален!'a_url('forum/admin'));
                break;

              
# Редактирование раздела
              
case 'edit':
                if(
is_numeric($_GET['section_id'])) {
                    if(!
$section $this->db->get_row("SELECT * FROM #__forum_sections WHERE section_id = '"intval($_GET['section_id']) ."'"))
                          
a_error('Раздел не найден!');
                      
$action 'edit';
                  }
                  else {
                      
$section = array();
                      
$action 'add';
                  }

                if(isset(
$_POST['submit'])) {
                    
main::is_demo();
                    if(empty(
$_POST['name'])) {
                        
$this->error .= 'Укажите название категории<br />';
                    }

                    if(!
$this->error) {
                        if(
$action == 'add') {
                            
$position $this->db->get_one("SELECT MAX(position) FROM #__forum_sections") + 1;
                            
$this->db->query("INSERT INTO #__forum_sections SET
                                name = '"
a_safe($_POST['name']) ."',
                                position = '"
$position ."'
                            "
);
                            
$message 'Раздел успешно создан!';
                        }
                        if(
$action == 'edit') {
                            
$this->db->query("UPDATE #__forum_sections SET name = '"a_safe($_POST['name']) ."' WHERE section_id='"intval($_GET['section_id']) ."'");
                            
$message 'Раздел успешно переименован!';
                        }

                        
a_notice($messagea_url('forum/admin'));
                    }
                }
                if(!isset(
$_POST['submit']) || $this->error) {
                    
$this->tpl->assign(array(
                        
'error' => $this->error,
                        
'section' => $section,
                        
'action' => $action
                    
));
                    
$this->tpl->display('sections_edit');
                }
                break;

              
# Увеличение позиции
            
case 'up':
                if(!
$section $this->db->get_row("SELECT * FROM #__forum_sections WHERE section_id = "intval($_GET['section_id'])))
                    
a_error('Раздел не найден!');
    
                
# Меняем позиции
                
$this->db->query("UPDATE #__forum_sections SET position = "$section['position'] ." WHERE position = ". ($section['position'] - 1));
                
$this->db->query("UPDATE #__forum_sections SET position = ". ($section['position'] - 1) ." WHERE section_id = "intval($_GET['section_id']));
    
                
header("Location: "a_url('forum/admin'));
                exit;
            break;

            
# Уменьшение позиции
            
case 'down':
                if(!
$section $this->db->get_row("SELECT * FROM #__forum_sections WHERE section_id = "intval($_GET['section_id'])))
                    
a_error('Раздел не найден!');
    
                
# Меняем позиции
                
$this->db->query("UPDATE #__forum_sections SET position = "$section['position'] ." WHERE position = ". ($section['position'] + 1));
                
$this->db->query("UPDATE #__forum_sections SET position = ". ($section['position'] + 1) ." WHERE section_id = "intval($_GET['section_id']));
    
                
header("Location: "a_url('forum/admin'));
                exit;
            break;

              
# Список разделов
              
default:
                
$sql "SELECT SQL_CALC_FOUND_ROWS f_s.*
                    FROM #__forum_sections AS f_s"
;

                
$sql .= " ORDER BY f_s.position ASC";

                
$result $this->db->query($sql);

                
$min_p $this->db->get_one("SELECT MIN(position) FROM #__forum_sections");
                 
$max_p $this->db->get_one("SELECT MAX(position) FROM #__forum_sections");

                while(
$section $this->db->fetch_array($result)) {
                    if(
$section['position'] != $min_p$section['up'] = '<a href="'a_url('forum/admin/sections''a=up&amp;section_id='$section['section_id']) .'">up</a>';
                    else 
$section['up'] = 'up';

                    if(
$section['position'] != $max_p$section['down'] = '<a href="'a_url('forum/admin/sections''a=down&amp;section_id='$section['section_id']) .'">down</a>';
                    else 
$section['down'] = 'down';

                    
$sections[] = $section;
                }

                
$this->tpl->assign(array(
                    
'sections' => $sections
                
));

                
$this->tpl->display('sections_list');
                break;
        }
    }

    
/**
    * Управление форумами
    */
    
public function action_forums() {
        switch(
$_GET['a']) {
            
# Редактирование форума
              
case 'edit':
                if(
is_numeric($_GET['forum_id'])) {
                      if(!
$forum $this->db->get_row("SELECT * FROM #__forum_forums WHERE forum_id = '"intval($_GET['forum_id']) ."'"))
                          
a_error('Форум не найден!');
                      
$action 'edit';
                  }
                  else {
                      
$forum = array();
                      
$action 'add';
                  }

                if(isset(
$_POST['submit'])) {
                    
main::is_demo();
                    if(empty(
$_POST['name'])) {
                        
$this->error .= 'Укажите название Форума<br />';
                    }
                    if(!
$this->db->get_one("SELECT section_id FROM #__forum_sections WHERE section_id = '"intval($_POST['section_id']) ."'")) {
                        
$this->error .= 'Раздел не найден!<br />';
                    }

                    if(!
$this->error) {
                        if(
$action == 'add') {
                            
$position $this->db->get_one("SELECT MAX(position) FROM #__forum_forums WHERE section_id = '"intval($_POST['section_id']) ."'") + 1;
                            
$this->db->query("INSERT INTO #__forum_forums SET
                                section_id = '"
intval($_POST['section_id']) ."',
                                name = '"
a_safe($_POST['name']) ."',
                                position = '
$position'
                            "
);
                            
$message 'Форум успешно создан!';
                        }
                        if(
$action == 'edit') {
                            
$this->db->query("UPDATE #__forum_forums SET
                                section_id = '"
intval($_POST['section_id']) ."',
                                name = '"
a_safe($_POST['name']) ."'
                                WHERE forum_id='"
intval($_GET['forum_id']) ."'
                            "
);
                            
$message 'Форум успешно изменён!';
                        }
                        
a_notice($messagea_url('forum/admin/forums''a=list_forums&amp;section_id='$_POST['section_id']));
                    }
                }
                if(!isset(
$_POST['submit']) || $this->error) {
                    
$sections $this->db->get_array("SELECT * FROM #__forum_sections ORDER BY position");
                    
$this->tpl->assign(array(
                        
'error' => $this->error,
                        
'sections' => $sections,
                        
'forum' => $forum,
                        
'action' => $action
                    
));
                    
$this->tpl->display('forums_edit');
                }
            break;

            
# Удаление форума
              
case 'delete':
                  
main::is_demo();
                if(!
$forum $this->db->get_row("SELECT * FROM #__forum_forums WHERE forum_id = '"intval($_GET['forum_id']) ."'"))
                      
a_error('Форум не найден!');

                
$this->db->query("DELETE FROM #__forum_forums WHERE forum_id = "intval($_GET['forum_id']));

                
# Меняем позиции
                
$this->db->query("UPDATE #__forum_forums SET position = position - 1 WHERE section_id = '"$forum['section_id'] ."' AND position > "$forum['position']);

                
a_notice('Форум успешно удален!'a_url('forum/admin/forums''a=list_forums&amp;section_id='$forum['section_id']));
                break;

              
# Увеличение позиции
            
case 'up':
                if(!
$forum $this->db->get_row("SELECT * FROM #__forum_forums WHERE forum_id = "intval($_GET['forum_id'])))
                    
a_error('Форум не найден!');

                
# Меняем позиции
                
$this->db->query("UPDATE #__forum_forums SET position = "$forum['position'] ." WHERE section_id = '"$forum['section_id'] ."' AND position = ". ($forum['position'] - 1));
                
$this->db->query("UPDATE #__forum_forums SET position = ". ($forum['position'] - 1) ." WHERE section_id = '"$forum['section_id'] ."' AND forum_id = "intval($_GET['forum_id']));
    
                
header("Location: "a_url('forum/admin/forums''section_id='$forum['section_id'], TRUE));
                exit;
                break;

            
# Уменьшение позиции
            
case 'down':
                if(!
$forum $this->db->get_row("SELECT * FROM #__forum_forums WHERE forum_id = "intval($_GET['forum_id'])))
                    
a_error('Форум не найден!');

                
# Меняем позиции
                
$this->db->query("UPDATE #__forum_forums SET position = "$forum['position'] ." WHERE section_id = '"$forum['section_id'] ."' AND position = ". ($forum['position'] + 1));
                
$this->db->query("UPDATE #__forum_forums SET position = ". ($forum['position'] + 1) ." WHERE section_id = '"$forum['section_id'] ."' AND forum_id = "intval($_GET['forum_id']));
    
                
header("Location: "a_url('forum/admin/forums''section_id='$forum['section_id'], TRUE));
                exit;
                break;

              
# Список форумов
              
case 'forums_list':
              case 
'list_forums':
              default:
                if(!
$section $this->db->get_row("SELECT * FROM #__forum_sections WHERE section_id = "intval($_GET['section_id'])))
                    
a_error('Раздел не найден!');

                  
$sql "SELECT SQL_CALC_FOUND_ROWS ff.*
                    FROM #__forum_forums AS ff"
;
                
$sql .= " WHERE ff.section_id = '"intval($_GET['section_id']) ."'";
                
$sql .= " ORDER BY ff.position ASC LIMIT $this->start$this->per_page";

                
$result $this->db->query($sql);

                
$min_p $this->db->get_one("SELECT MIN(position) FROM #__forum_forums WHERE section_id = '"intval($_GET['section_id']) ."'");
                 
$max_p $this->db->get_one("SELECT MAX(position) FROM #__forum_forums WHERE section_id = '"intval($_GET['section_id']) ."'");

                while(
$forum $this->db->fetch_array($result)) {
                    if(
$forum['position'] != $min_p$forum['up'] = '<a href="'a_url('forum/admin/forums''a=up&amp;forum_id='$forum['forum_id']) .'">up</a>';
                    else 
$forum['up'] = 'up';

                    if(
$forum['position'] != $max_p$forum['down'] = '<a href="'a_url('forum/admin/forums''a=down&amp;forum_id='$forum['forum_id']) .'">down</a>';
                    else 
$forum['down'] = 'down';

                    
$forums[] = $forum;
                }

                
$this->tpl->assign(array(
                    
'section' => $section,
                    
'forums' => $forums
                
));

                
$this->tpl->display('forums_list');
            break;
        }
    }
}
?>
Онлайн: 1
Реклама