EngineGP
127 строк · 4.4 Кб
1<?php
2/*
3* EngineGP (https://enginegp.ru or https://enginegp.com)
4*
5* @copyright Copyright (c) 2018-present Solovev Sergei <inbox@seansolovev.ru>
6*
7* @link https://github.com/EngineGPDev/EngineGP for the canonical source repository
8*
9* @license https://github.com/EngineGPDev/EngineGP/blob/main/LICENSE MIT License
10*/
11
12if (!defined('EGP')) {
13header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404');
14exit();
15}
16
17// Meta Title страницы
18$title = 'Мониторинг игровых серверов';
19
20// Навигация
21$html->nav('Мониторинг');
22
23// Дополнительная переменная
24$type = false;
25$i = 0;
26
27// Получаем значение пагинации
28if (isset($url['page'])) {
29$page = sys::clean($url['page'], "int");
30} else {
31$page = 1;
32}
33
34// Проверяем задано ли у нас фильтрация по типу игры
35if (isset($url['game']) and in_array($url['game'], ['cs', 'css', 'cssold', 'csgo', 'samp', 'crmp', 'mta', 'mc'])) {
36$type = $url['game'];
37}
38
39// Если идет сортировка по игре
40if ($type) {
41// SQL запрос для выборки
42$qSql = "game = '" . $type . "' AND status = 'working'";
43
44// Задаем переменной колличество серверов всего, результат кэша
45$all = $mcache->get('monitoring_list_count_' . $type);
46
47// Если кэш пуст
48if (!$all) {
49
50// Получаем инфу из бд, кооличество серверов всего
51$sql->query('SELECT id FROM servers WHERE ' . $qSql);
52$all = $sql->num();
53
54// Закидываем значеие в кэш на 2 минуты
55$mcache->set('monitoring_list_count_' . $type, $all, false, 120);
56}
57
58// Массив для построения страниц
59$aPage = sys::page($page, $all, 30);
60
61// Генерация массива ($html->arr['pages']) страниц
62sys::page_gen($aPage['ceil'], $page, $aPage['page'], 'monitoring/type/' . $type);
63} else {
64
65// SQL запрос для выборки
66$qSql = "status = 'working'";
67
68// Задаем переменной колличество серверов всего, результат кэша
69$all = $mcache->get('monitoring_list_count');
70
71// Если кэш пуст
72if (!$all) {
73
74// Получаем инфу из бд, кооличество серверов всего
75$sql->query('SELECT id FROM servers WHERE ' . $qSql);
76$all = $sql->num();
77
78// Закидываем значеие в кэш на 2 минуты
79$mcache->set('monitoring_list_count', $all, false, 120);
80}
81
82// Массив для построения страниц
83$aPage = sys::page($page, $all, 30);
84
85// Генерация массива ($html->arr['pages']) страниц
86sys::page_gen($aPage['ceil'], $page, $aPage['page'], 'monitoring');
87}
88
89// Получаем список серверов
90$sql->query('SELECT `id`, `address`, `port`, `name`, `map`, `slots_start`, `online` FROM servers WHERE ' . $qSql . ' ORDER BY `id` ASC LIMIT ' . $aPage['num'] . ', 30');
91
92// Циклически собираем шаблон серверов
93while ($server = $sql->get()) {
94// Увеличиваем значение ID
95$i += 1;
96
97// Собираем шаблон
98$html->get('list', 'sections/monitoring');
99$html->set('id', $i);
100$html->set('server', $server['id']);
101$html->set('address', $server['address'] . ':' . $server['port']);
102$html->set('name', $server['name']);
103$html->set('map', $server['map']);
104$html->set('slots', $server['slots_start']);
105$html->set('online', $server['online']);
106$html->pack('monitoring_list');
107}
108
109$games = ['cs', 'cssold', 'css', 'csgo', 'cs2', 'rust', 'samp', 'crmp', 'mta', 'mc'];
110$online = [];
111foreach ($games as $game) {
112$sql->query('SELECT SUM(`online`) AS `online` FROM `servers` WHERE (`status`="working" OR `status`="change") AND `game`="' . $game . '"');
113$online[$game] = $sql->get()['online'];
114}
115
116// Подготовка страницы
117$html->get('all', 'sections/monitoring');
118foreach ($games as $game) {
119if (!empty($online[$game])) {
120$html->set('o_' . $game, $online[$game]);
121} else {
122$html->set('o_' . $game, '0');
123}
124}
125$html->set('list', $html->arr['monitoring_list'] ?? '');
126$html->set('pages', $html->arr['pages'] ?? '');
127$html->pack('main');
128