Файл: modules/chat/controller/controller.php
Строк: 100
<?php
/**
* Класс для работы с чатом
*
* @package Classes
* @author Shamsik
* @link http://shcms.ru
*/
class controller {
/*
* Обрабатываем отправленный текст
*
* @param $param
*/
public static function comment($param) {
global $db, $_date, $glob_core, $id_user, $error;
//Проверка переданного $_POST
$text = filter_input(INPUT_POST, 'text', FILTER_SANITIZE_STRING);
//Экранируем специальные символы
$text = $db->safesql($text);
if (engine::trim($text) == false and empty($text)) {
$error['text'][] = 'Сообщение не введено';
}
//Короткие сообщение не должны отправляться
if (strlen($text) < 5) {
$error['text'][] = 'Сообщение должно быть больше 5 символов';
}
//В сообщение не должно присутствовать мат
if ($glob_core['antimat'] == 1) {
$text = SwearFilter::filter($text);
}
//В сообщение не должен присутствовать реклама (ссылки)
if ($glob_core['antiadv'] == 1) {
$text = engine::antilink($text);
}
//Удаляем ссылки из текстов
if ($glob_core['antilink'] == 1) {
$text = engine::removing($text);
}
//Если хотябы одна ошибка найдется в $error то не допустится
if (empty($error)) {
//Записываем сообщение в базу
$chat = $db->query("INSERT INTO `chat` (`text`,`time`,`id_user`)
VALUES ('{$text}','{$_date}','{$id_user}')");
if ($chat == true) {
//Начисление баллов пользователю
user::points();
//Переадресция после успешной отправки
header('Location: index.php');
} else {
$error['text'][] = 'Сообщение не добавлено';
}
}
}
/**
* HTML форма добавления сообщений
*
* @param form()
*/
public static function form() {
global $error, $id_user;
//Привелегие пользователя
$group = user::users($id_user, array('group'));
//Если у пользователя привилегия 15
if ($group == 15) {
$view = '<a href="?do=all">' . Lang::__('Удаляем все') . '</a>';
}
echo '<div class="mainname">' . Lang::__('Сообщение') . '';
echo '<span class="time">' . $view . '</span>';
echo '</div>';
echo '<div class="mainpost">';
//HTML форма
$form = new form('?');
$form->textarea(false, 'text', false, (isset($error['text']) ? '<span style="color:red"><small>' . implode('<br />', $error['text']) . '</small></span><br />' : ''));
$form->submit('Отправить', 'submit',true,'btn btn-success');
$form->display();
echo '</div>';
//Переход на главную
echo engine::home(array(Lang::__('Назад'), '/index.php'));
}
/**
* Вывод всех сообщений чата
*
* @param output()
*/
public static function output() {
global $db, $id_user;
//Счетчик вывода сообщений По умолчанию 10
$count = $db->get_array($db->query("SELECT COUNT(*) FROM `chat`"));
$list = new Navigation($count[0], 10, true);
//Если в базе есть хоть одно сообщение то выводим их все.
if ($count[0] > 0) {
$query = $db->query("SELECT * FROM `chat` ORDER BY `id` DESC " . $list->limit() . "");
} else {
echo '<div class="mainname">'.Lang::__('Не найдено ничего').'</div>';
echo '<div class="mainpost"><center>' . Lang::__('Сообщений не найдено') . '</center></div>';
exit;
}
echo '<div class="mainpost">';
echo '<ul class="List_withminiphoto Pad_list">';
//Вывод всех сообщений
while ($chat = $db->get_array($query)) {
//Получаем данные о пользователе
$profile = $db->get_array($db->query("SELECT * FROM `users` WHERE `id` = '{$chat[id_user]}'"));
//Получение данных о привилегий
$group = user::users($id_user, array('group'));
//Если у привилегии 15 то выполняем действие
if ($group == 15) {
$viewd = '<a href="?do=delete&id=' . $chat['id'] . '">';
$viewd .= '<img src="/engine/template/icons/delete.png"></a>';
}
echo '<li class="clearfix row3">';
//Путь к аватарам
$avatar = '/upload/avatar/' . $profile['avatar'];
//Если нет аватара выводим аватар по умолчанию
if ($profile['avatar'] == false and file_exists($avatar) == false) {
echo '<a href="/engine/template/icons/default_large.png" class="UserPhotoLink left">';
echo '<img src="/engine/template/icons/default_large.png" class="UserPhoto UserPhoto_mini"></a>';
} else {
echo '<a href="' . $avatar . '" title="Просмотр профиля" class="UserPhotoLink left">';
echo '<img src="' . $avatar . '" class="UserPhoto UserPhoto_mini"></a>';
}
echo '<div class="list_content">';
//Ник Автора сообщения
echo '<a href="../profile.php?id=' . $profile['id'] . '"><b>' . $profile['nick'] . '</b></a>';
echo '<span class="time">' . $viewd . '</span>';
echo '<div class="details">';
//Привиление пользователя
echo '<span><img src="/engine/template/icons/group.png"> ' . user::group($chat['id_user']) . '</span>';
//Время добавление сообщения
echo '<span><img src="/engine/template/icons/date.png"> ' . date::make_date($chat['time']) . '</span>';
echo '</div>';
//Текст сообщения
echo '<div class="lighter row2">' . engine::input_text($chat['text']) . '</div>';
echo '</div>';
echo '</li>';
}
echo '</ul>';
echo '</div>';
//Получаем постаничную навигацию
echo $list->pagination();
}
}