Вход Регистрация
Файл: mc-2.6/modules/chat/controllers/chat_admin.php
Строк: 115
<?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 Chat_Admin_Controller extends Controller {
    
/**
    * Уровень пользовательского доступа
    */
    
public $access_level 10;
    
/**
    * Тема
    */
    
public $template_theme 'admin';

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

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

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

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

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

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

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

    
/**
    * Управление комнатами
    */
    
public function action_rooms() {
        switch(
$_GET['a']) {
            
# Удаление комнатаа
              
case 'delete':
                  
main::is_demo();
                
$room $this->db->get_row("SELECT * FROM #__chat_rooms WHERE room_id = "intval($_GET['room_id']));
                
$this->db->query("DELETE FROM #__chat_rooms WHERE room_id = "intval($_GET['room_id']));

                
# Меняем позиции
                
$this->db->query("UPDATE #__chat_rooms SET position = position - 1 WHERE position > '"$room['position'] ."'");
    
                
# Удаляем все сообщения из данной комнаты
                
$this->db->query("DELETE FROM #__chat_messages WHERE room_id = '"$room['room_id'] ."'");
    
                
a_notice('Комната успешно удалена!'a_url('chat/admin'));
                break;

              
# Создание / Редактирование комнаты
              
case 'edit':
                  if(
is_numeric(@$_GET['room_id'])) {
                    if(!
$room $this->db->get_row("SELECT * FROM #__chat_rooms WHERE room_id = '"intval($_GET['room_id']) ."'"))
                          
a_error('комната не найден!');
                      
$action 'edit';
                  }
                  else {
                      
$room = 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 #__chat_rooms") + 1;
                        
$this->db->query("INSERT INTO #__chat_rooms SET
                            name = '"
a_safe($_POST['name']) ."',
                            position = '"
$position ."'
                        "
);
                        
$message "Комната успешно создана!";
                        }
                        if(
$action == 'edit') {
                            
$this->db->query("UPDATE #__chat_rooms SET
                                name = '"
a_safe($_POST['name']) ."'
                                WHERE room_id='"
intval($_GET['room_id']) ."'
                            "
);
                            
$message "Комната успешно изменена!";
                        }
                        
a_notice($messagea_url('chat/admin'));
                    }
                }
                if(!isset(
$_POST['submit']) || $this->error) {
                    
$this->tpl->assign(array(
                        
'action' => $action,
                        
'error' => $this->error,
                        
'room' => $room
                    
));
        
                    
$this->tpl->display('rooms_edit');
                }
                break;

              
# Увеличение позиции
            
case 'up':
                if(!
$room $this->db->get_row("SELECT * FROM #__chat_rooms WHERE room_id = "intval($_GET['room_id'])))
                    
a_error('Комната не найдена!');

                
// Меняем позиции
                
$this->db->query("UPDATE #__chat_rooms SET position = "$room['position'] ." WHERE position = ". ($room['position'] - 1));
                
$this->db->query("UPDATE #__chat_rooms SET position = ". ($room['position'] - 1) ." WHERE room_id = "intval($_GET['room_id']));
    
                
header("Location: "a_url('chat/admin'));
                exit;
                break;

            
# Уменьшение позиции
            
case 'down':
                if(!
$room $this->db->get_row("SELECT * FROM #__chat_rooms WHERE room_id = "intval($_GET['room_id'])))
                    
a_error('комната не найден!');

                
// Меняем позиции
                
$this->db->query("UPDATE #__chat_rooms SET position = "$room['position'] ." WHERE position = ". ($room['position'] + 1));
                
$this->db->query("UPDATE #__chat_rooms SET position = ". ($room['position'] + 1) ." WHERE room_id = "intval($_GET['room_id']));
    
                
header("Location: "a_url('chat/admin'));
                exit;
                break;

              
# Список комнат
              
default:
                
$sql "SELECT SQL_CALC_FOUND_ROWS *
                    FROM #__chat_rooms"
;

                
$sql .= " ORDER BY position ASC";

                
$result $this->db->query($sql);
    
                
$min_p $this->db->get_one("SELECT MIN(position) FROM #__chat_rooms");
                 
$max_p $this->db->get_one("SELECT MAX(position) FROM #__chat_rooms");

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

                    if(
$room['position'] != $max_p$room['down'] = '<a href="'a_url('chat/admin/rooms''a=down&amp;room_id='$room['room_id']) .'">down</a>';
                    else 
$room['down'] = 'down';

                    
$rooms[] = $room;
                }

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

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