Просмотр файла modules/chat/controller/controller.php

Размер файла: 6.99Kb
<?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">&nbsp;' . user::group($chat['id_user']) . '</span>';
            //Время добавление сообщения
            echo '<span><img src="/engine/template/icons/date.png">&nbsp;' . 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();
    }

}