Просмотр файла cms-master/modules/user/helpers/user_events.php

Размер файла: 4.6Kb
<?php

/**
 * MobileCMS
 *
 * Open source content management system for mobile sites
 *
 * @author MobileCMS Team <[email protected]>
 * @copyright Copyright (c) 2011-2019, MobileCMS Team
 * @link https://mobilecms.pro Official site
 * @license MIT license
 */
defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>');

/**
 * Хелпер событий модуля пользователей
 */
class user_events
{

    /**
     * Перед выполнением контроллера
     */
    public static function pre_controller($db)
    {
        $tpl = Registry::get('tpl');
        $config = Registry::get('config');

        # Проверяем наличие пользователя в списке забаненых
        if (USER_ID != -1 && $ban = $db->get_row("SELECT * FROM #__users_ban WHERE user_id = '" . USER_ID . "' AND status = 'enable'") AND empty($_SESSION['check_user_id'])) {
            # Если время бана истекло
            if ($ban['to_time'] <= TIME()) {
                $db->query("UPDATE #__users_ban SET status = 'disable' WHERE ban_id = '" . $ban['ban_id'] . "'");
            } else {
                header('Location: ' . URL . 'user/');
            }

            # Удаляем мусор
            if ($db->get_one("SELECT COUNT(*) FROM #__users_ban WHERE user_id = '" . USER_ID . "' AND status = 'enable' AND ban_id != '" . $ban['ban_id'] . "'") != 0) {
                $db->query("DELETE FROM #__users_ban WHERE user_id = '" . USER_ID . "' AND status = 'enable' AND ban_id != '" . $ban['ban_id'] . "'");
            }
        }

        // Бан по IP
        if ($ip_ban = $db->get_row("SELECT * FROM #__ip_ban WHERE ip = '" . a_safe($_SERVER['REMOTE_ADDR']) . "'") AND empty($_SESSION['check_user_id'])) {
            exit('<h3>Доступ запрещен</h3><p>Ваш IP адрес забанен!</p>');
        }

        // Количество пользователей онлайн
        $users_online = $db->get_one("SELECT COUNT(*) FROM #__users WHERE last_visit > UNIX_TIMESTAMP() - 180");

        // Количество гостей онлайн
        $guests_online = $db->get_one("SELECT COUNT(*) FROM #__guests WHERE last_time > UNIX_TIMESTAMP() - 180");

        // Количество пользователей на модерации
        $moderation_users = $db->get_one("SELECT COUNT(*) FROM #__users WHERE account = 'moderate' AND pin_code = ''");

        // Массив пользователей онлайн (для веб версии)
        if ($users_online > 0) {
            $users_array = $db->get_array("SELECT SQL_CALC_FOUND_ROWS user_id, username FROM #__users WHERE user_id != -1 AND account = 'active' AND last_visit > UNIX_TIMESTAMP() - 180 ORDER BY user_id ASC LIMIT 15");
            $tpl->assign('users_online', $users_array);
        }

        define('USERS_ONLINE', $users_online);
        define('GUESTS_ONLINE', $guests_online);
        define('MODERATION_USERS', $moderation_users);

        $user = $db->get_row("SELECT * FROM #__users LEFT JOIN #__users_profiles USING(user_id) WHERE user_id = '" . USER_ID . "'");

        // Проверка подтверждения E-mail
        if ($config['user']['email_confirmation'] == 1) {
            if ($user['account'] == 'moderate' && $user['pin_code'] != '' && ROUTE_ACTION != 'email_confirm')
                header('Location: ' . a_url('user/email_confirm'));
        }

        // Проверка модерации пользователя
        if ($config['user']['user_moderate'] == 1 && $user['pin_code'] == '' && ROUTE_ACTION != 'exit') {
            if ($user['account'] == 'moderate')
                define('MODERATE', 'Ваш аккаунт находится на модерации у администрации сайта. После прохождения модерации Вы получите уведомление на E-mail.');
            elseif ($user['account'] == 'block')
                define('MODERATE', 'Ваш аккаунт не прошел модерацию и был заблокирован.');
        }

        // Приветствие
        if (date('H') > '05' && date('H') <= '12')
            $hello = 'Доброе утро';
        elseif (date('H') > '12' && date('H') <= '17')
            $hello = 'Добрый день';
        elseif (date('H') > '17' && date('H') <= '22')
            $hello = 'Добрый вечер';
        elseif (date('H') > '22' || date('H') <= '05')
            $hello = 'Доброй ночи';
        else
            $hello = 'Здравствуйте';

        define('HELLO', $hello);
    }

}

?>