EngineGP

Форк
0
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

12
if (!defined('EGP')) {
13
    header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404');
14
    exit();
15
}
16

17
// Meta Title страницы
18
$title = 'Мониторинг игровых серверов';
19

20
// Навигация
21
$html->nav('Мониторинг');
22

23
// Дополнительная переменная
24
$type = false;
25
$i = 0;
26

27
// Получаем значение пагинации
28
if (isset($url['page'])) {
29
    $page = sys::clean($url['page'], "int");
30
} else {
31
    $page = 1;
32
}
33

34
// Проверяем задано ли у нас фильтрация по типу игры
35
if (isset($url['game']) and in_array($url['game'], ['cs', 'css', 'cssold', 'csgo', 'samp', 'crmp', 'mta', 'mc'])) {
36
    $type = $url['game'];
37
}
38

39
// Если идет сортировка по игре
40
if ($type) {
41
    // SQL запрос для выборки
42
    $qSql = "game = '" . $type . "' AND status = 'working'";
43

44
    // Задаем переменной колличество серверов всего, результат кэша
45
    $all = $mcache->get('monitoring_list_count_' . $type);
46

47
    // Если кэш пуст
48
    if (!$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']) страниц
62
    sys::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
    // Если кэш пуст
72
    if (!$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']) страниц
86
    sys::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
// Циклически собираем шаблон серверов
93
while ($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 = [];
111
foreach ($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');
118
foreach ($games as $game) {
119
    if (!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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.