Размер файла: 4.81Kb
<?php
/**
* Ant0ha's project
*
* @package
* @author Anton Pisarenko <[email protected]>
* @copyright Copyright (c) 2006 - 2010, Anton Pisarenko
* @license http://ant0ha.ru/license.txt
* @link http://ant0ha.ru
*/
defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>');
//---------------------------------------------
/**
* Котроллер гостевой книги
*/
class Guestbook_Controller extends Controller {
/**
* Уровень пользовательского доступа
*/
public $access_level = 0;
/**
* Метод по умолчанию
*/
public function action_index() {
$this->action_list_messages();
}
/**
* Листинг сообщений
*/
public function action_list_messages() {
# Получение данных
$result = $this->db->query("SELECT SQL_CALC_FOUND_ROWS #__guestbook.*, #__users.status AS user_status, up.avatar AS avatar_exists, #__users.last_visit
FROM #__guestbook LEFT JOIN #__users USING(user_id) LEFT JOIN #__users_profiles AS up USING(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');
$comments = 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;
}
# Пагинация
$pg_conf['base_url'] = a_url('guestbook', '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,
'total' => $total,
'pagination' => $pg->create_links()
));
$this->tpl->display('list_messages');
}
/**
* Написать сообщение
*/
public function action_say() {
if(isset($_POST['submit'])) {
if(empty($_POST['username'])) {
$this->error .= 'Укажите ваше имя<br />';
}
if($check_user_id = $this->db->get_one("SELECT user_id FROM #__users WHERE username = '". a_safe($_POST['username']) ."'")) {
if(USER_ID != $check_user_id) {
$this->error .= 'Данное имя занято на сайте, укажите другое или авторизуйтесь, если вы не вошли в систему<br />';
}
}
if(empty($_POST['message'])) {
$this->error .= 'Укажите сообщение<br />';
}
# Проверка кода с картинки
if($_POST['captcha_code'] != $_SESSION['captcha_code']) {
$this->error .= 'Неверно указан код с картинки<br />';
}
if(!$this->error) {
a_antiflud();
setcookie('username', $_POST['username']);
$this->db->query("INSERT INTO #__guestbook SET
username = '". a_safe($_POST['username']) ."',
user_id = '". USER_ID ."',
message = '". a_safe($_POST['message']) ."',
time = UNIX_TIMESTAMP()
");
$_SESSION['captcha_code'] = main::get_unique_code(4);
header("Location: ". a_url('guestbook', '', TRUE));
exit;
}
}
if(!isset($_POST['submit']) OR $this->error) {
$_SESSION['captcha_code'] = main::get_unique_code(4);
$this->tpl->assign(array(
'error' => $this->error
));
$this->tpl->display('say');
}
}
/**
* Удаление сообщения
*/
public function action_delete_message() {
if(!$message = $this->db->get_row("SELECT #__guestbook.*, #__users.status AS user_status FROM #__guestbook LEFT JOIN #__users USING(user_id) WHERE message_id = '". intval($_GET['message_id']) ."'"))
a_error('Сообщение не найдено!');
if(!a_check_rights($message['user_id'], $message['user_status'])) a_error('У вас нет прав на выполнение этой операции!');
if(!empty($_GET['confirm'])) {
$this->db->query("DELETE FROM #__guestbook WHERE message_id = '". intval($_GET['message_id']) ."'");
a_notice('Сообщение удалено!', a_url('guestbook'));
}
else {
a_confirm('Подтверждаете удаление данного сообщения?', a_url('guestbook/delete_message', 'message_id='. $_GET['message_id'] .'&confirm=ok'), a_url('guestbook'));
}
}
}
?>