Вход Регистрация
Файл: mc-2.6/modules/private/controllers/private.php
Строк: 85
<?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 Private_Controller extends Controller {
    
/**
    * Уровень пользовательского доступа
    */
    
public $access_level 5;
    
/**
    * Папки
    */
    
public $folders = array(
        
'new' => 'Новые',
        
'inbox' => 'Входящие',
        
'outbox' => 'Исходящие',
        
'saved' => 'Сохраненные'
    
);

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

    
/**
    * Список папок
    */
    
public function action_folders() {
        
$result $this->db->query("SELECT COUNT(*) AS count, folder FROM #__private_messages WHERE user_id = '"USER_ID ."' GROUP BY folder");
        
$folders = array();
        while(
$folder $this->db->fetch_array($result)) {
            
$folders[$folder['folder']] = $folder['count'];
        }
    
        
$this->tpl->assign(array(
            
'folders' => $folders
        
));
    
        
$this->tpl->display('folders');
    }

    
/**
    * Отправить сообщение
    */
    
public function action_send() {
        if(isset(
$_POST['submit'])) {
            if(!
$user_to_id $this->db->get_one("SELECT user_id FROM #__users WHERE username = '"a_safe($_POST['username']) ."' AND user_id != -1")) {
                
$this->error .= 'Получаетель не найден!<br />';
            }
            if(
$user_to_id == USER_ID) {
                
$this->error .= 'Отправлять сообщения самому себе запрещено!<br />';
            }
            if(empty(
$_POST['message'])) {
                
$this->error .= 'Укажите текст сообщения.<br />';
            }

            if(!
$this->error) {
                
# Отправляем сообщение адресату
                
$this->db->query("INSERT INTO #__private_messages SET
                    user_id = '
$user_to_id',
                    user_to_id = '
$user_to_id',
                    user_from_id = '"
USER_ID ."',
                    message = '"
a_safe($_POST['message']) ."',
                    folder = 'new',
                    time = UNIX_TIMESTAMP()
                "
);
                
# Копируем сообщение в исходящие отправителя
                
$this->db->query("INSERT INTO #__private_messages SET
                    user_id = '"
USER_ID ."',
                    user_to_id = '
$user_to_id',
                    user_from_id = '"
USER_ID ."',
                    message = '"
a_safe($_POST['message']) ."',
                    folder = 'outbox',
                    time = UNIX_TIMESTAMP()
                "
);
    
                
a_notice('Сообщение отправлено!'a_url('private'));
            }
        }
        if(!isset(
$_POST['submit']) OR $this->error) {
            
$this->tpl->assign(array(
                
'error' => $this->error
            
));

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

    
/**
    * Просмотр папки
    */
    
public function action_list_messages() {
        if(!
array_key_exists($_GET['folder'], $this->folders))
            
a_error("Папка не найдена!");

        
$result $this->db->query("SELECT SQL_CALC_FOUND_ROWS pm.*, u_to.username AS username_to, u_from.username AS username_from
            FROM #__private_messages AS pm
            LEFT JOIN #__users AS u_to ON u_to.user_id = pm.user_to_id
            LEFT JOIN #__users AS u_from ON u_from.user_id = pm.user_from_id
            WHERE pm.folder = '"
a_safe($_GET['folder']) ."' AND pm.user_id = '"USER_ID ."'
            ORDER BY message_id DESC
            LIMIT 
$this->start$this->per_page
        "
);
        
$total $this->db->get_one("SELECT FOUND_ROWS()");

        if(!
class_exists('smiles')) a_import('modules/smiles/helpers/smiles');
        
$messages = array();
        while(
$message $this->db->fetch_array($result)) {
            
$message['message'] = smiles::smiles_replace($message['message']);
            
$message['message'] = main::bbcode($message['message']);
            
$message['message'] = nl2br($message['message']);

            
$messages[] = $message;
        }

        
# Если папка "новые", метим сообщения прочитанными
        
$this->db->query("UPDATE #__private_messages SET folder = 'inbox' WHERE user_id = '"USER_ID ."' AND folder = 'new'");

        
# Пагинация
        
$pg_conf['base_url'] = a_url('private/list_messages''folder='$_GET['folder'] .'&amp;start=');
        
$pg_conf['total_rows'] = $total;
        
$pg_conf['per_page'] = $this->per_page;

        
a_import('libraries/pagination');
        
$pg = new CI_Pagination($pg_conf);

        
$this->tpl->assign(array(
            
'messages' => $messages,
            
'folder_name' => $this->folders[$_GET['folder']],
            
'pagination' => $pg->create_links()
        ));

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

    
/**
    * Просмотр сообщения
    */
    
public function view_message() {
        
$message $this->db->get_row("SELECT * FROM #__private_messages
            WHERE message_id = '"
intval($_GET['message_id']) ."' AND user_id = '"USER_ID ."'
        "
);

        if(!
$messagea_error("Сообщение не найдено!");

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

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

    
/**
    * Удаление сообщения
    */
    
public function action_delete_message() {
        
$message $this->db->get_row("SELECT * FROM #__private_messages
            WHERE message_id = '"
intval($_GET['message_id']) ."' AND user_id = '"USER_ID ."'
        "
);

        if(!
$messagea_error("Сообщение не найдено!");

        if(!empty(
$_GET['confirm'])) {
            
$this->db->query("DELETE FROM #__private_messages WHERE message_id = '"intval($_GET['message_id']) ."' AND user_id = '"USER_ID ."'");
            
a_notice('Сообщение удалено!'a_url('private/list_messages''folder='$_GET['folder']));
        }
        else {
            
a_confirm('Подтверждаете удаление данного сообщения?'a_url('private/delete_message''message_id='$_GET['message_id'] .'&amp;folder='$_GET['folder'] .'&amp;confirm=ok'), a_url('private/list_messages''folder='$_GET['folder']));
        }
    }

    
/**
    * Сохранение сообщения
    */
    
public function action_save_message() {
        
$message $this->db->get_row("SELECT * FROM #__private_messages
            WHERE message_id = '"
intval($_GET['message_id']) ."' AND user_id = '"USER_ID ."'
        "
);

        if(!
$messagea_error("Сообщение не найдено!");

        
$this->db->query("UPDATE #__private_messages SET folder = 'saved' WHERE message_id = '"intval($_GET['message_id']) ."' AND user_id = '"USER_ID ."'");
        
a_notice('Сообщение сохранено!'a_url('private/list_messages''folder=saved'));
    }
}
?>
Онлайн: 3
Реклама