EngineGP

Форк
0
218 строк · 7.5 Кб
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
    exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
14
}
15

16
// Отправка сообщения / Удаление сообщения
17
if (isset($url['action']) and in_array($url['action'], ['reply', 'remove', 'read', 'write'])) {
18
    include(SEC . 'help/action/' . $url['action'] . '.php');
19
}
20

21
if (!$id) {
22
    sys::back($cfg['http'] . 'help/section/open');
23
}
24

25
if (in_array($user['group'], ['admin', 'support'])) {
26
    $sql->query('SELECT `type`, `service`, `status`, `date`, `close` FROM `help` WHERE `id`="' . $id . '" LIMIT 1');
27
} else {
28
    $sql->query('SELECT `type`, `service`, `status`, `date`, `close` FROM `help` WHERE `id`="' . $id . '" AND `user`="' . $user['id'] . '" LIMIT 1');
29
}
30

31
if (!$sql->num()) {
32
    sys::back($cfg['http'] . 'help/section/open');
33
}
34

35
$help = $sql->get();
36

37
// Смена статуса вопроса на "Прочитан"
38
if ($user['group'] == 'user' and !$help['status']) {
39
    $sql->query('UPDATE `help` set `status`="2", `notice`="1" WHERE `id`="' . $id . '" LIMIT 1');
40
    $help['status'] = 2;
41
}
42

43
$aGroup = [
44
    'admin' => 'Администратор',
45
    'support' => 'Техническая поддержка',
46
    'user' => 'Клиент',
47
];
48

49
include(LIB . 'help.php');
50
include(LIB . 'users.php');
51

52
$aSender = [];
53

54
$dialogs = $sql->query('SELECT `id`, `user`, `text`, `img`, `time` FROM `help_dialogs` WHERE `help`="' . $id . '" ORDER BY `id` DESC LIMIT 50');
55
while ($dialog = $sql->get($dialogs)) {
56
    unset($html->arr['attachment']);
57

58
    $images = sys::b64djs($dialog['img']);
59

60
    if (is_array($images)) {
61
        foreach ($images as $img) {
62
            $html->get('attachment', 'sections/help/dialog');
63

64
            $html->set('img', $img);
65
            $html->set('home', $cfg['http']);
66

67
            $html->pack('attachment');
68
        }
69
    }
70

71
    $html->get('msg', 'sections/help/dialog');
72

73
    if ($user['id'] != $dialog['user']) {
74
        if (!$dialog['user']) {
75
            $html->set('sender', 'Автоматическое сообщение');
76
        } else {
77
            if (isset($aSender[$dialog['user']])) {
78
                $html->set('sender', $aSender[$dialog['user']]);
79
            } else {
80
                switch ($iHelp) {
81
                    case 1:
82
                        $sql->query('SELECT `name`, `group`, `support_info` FROM `users` WHERE `id`="' . $dialog['user'] . '" LIMIT 1');
83
                        $us = $sql->get();
84

85
                        if ($us['support_info'] != '') {
86
                            $aSender[$dialog['user']] = $us['name'] . ' (' . $us['support_info'] . ')';
87
                        } else {
88
                            $aSender[$dialog['user']] = $us['name'] . ' (' . $aGroup[$us['group']] . ')';
89
                        }
90

91
                        break;
92
                    case 2:
93
                        $sql->query('SELECT `login`, `group`, `support_info` FROM `users` WHERE `id`="' . $dialog['user'] . '" LIMIT 1');
94
                        $us = $sql->get();
95

96
                        if ($us['support_info'] != '') {
97
                            $aSender[$dialog['user']] = $us['login'] . ' (' . $us['support_info'] . ')';
98
                        } else {
99
                            $aSender[$dialog['user']] = $us['login'] . ' (' . $aGroup[$us['group']] . ')';
100
                        }
101

102
                        break;
103
                    case 3:
104
                        $sql->query('SELECT `mail`, `group`, `support_info` FROM `users` WHERE `id`="' . $dialog['user'] . '" LIMIT 1');
105
                        $us = $sql->get();
106

107
                        if ($us['support_info'] != '') {
108
                            $aSender[$dialog['user']] = $us['mail'] . ' (' . $us['support_info'] . ')';
109
                        } else {
110
                            $aSender[$dialog['user']] = $us['mail'] . ' (' . $aGroup[$us['group']] . ')';
111
                        }
112

113
                        break;
114
                    default:
115
                        $sql->query('SELECT `name`, `patronymic`, `group`, `support_info` FROM `users` WHERE `id`="' . $dialog['user'] . '" LIMIT 1');
116
                        $us = $sql->get();
117

118
                        if ($us['support_info'] != '') {
119
                            $aSender[$dialog['user']] = $us['name'] . ' ' . $us['patronymic'] . ' (' . $us['support_info'] . ')';
120
                        } else {
121
                            $aSender[$dialog['user']] = $us['name'] . ' ' . $us['patronymic'] . ' (' . $aGroup[$us['group']] . ')';
122
                        }
123
                }
124

125
                $html->set('sender', $aSender[$dialog['user']]);
126
            }
127
        }
128
    } else {
129
        $html->set('sender', 'Я');
130
    }
131

132
    $html->set('id', $dialog['id']);
133
    $html->set('uid', $dialog['user']);
134
    $html->set('help', $id);
135
    $html->set('home', $cfg['http']);
136
    $html->set('ava', users::ava($dialog['user']));
137
    $html->set('text', $dialog['text']);
138

139
    if ($tHelp) {
140
        $html->set('time', $dialog['time'] < ($start_point - 600) ? sys::today($dialog['time']) : help::ago($dialog['time']));
141
    } else {
142
        $html->set('time', sys::today($dialog['time']) . ' ' . help::ago($dialog['time'], true));
143
    }
144

145
    if (isset($html->arr['attachment'])) {
146
        $html->set('img', $html->arr['attachment']);
147
        $html->unit('img', 1);
148
    } else {
149
        $html->unit('img');
150
    }
151

152
    if ($user['group'] == 'admin') {
153
        $html->unit('admin', 1);
154
    } else {
155
        $html->unit('admin');
156
    }
157

158
    $html->pack('dialog');
159
}
160

161
// Массив статусов вопроса
162
$status = [
163
    0 => 'Есть ответ',
164
    1 => 'Ожидается ответ',
165
    2 => 'Прочитан',
166
];
167

168
if (isset($url['ajax'])) {
169
    sys::outjs(['dialog' => ($html->arr['dialog'] ?? ''), 'status' => ($help['close'] ? 'Вопрос решен' : $status[$help['status']])]);
170
}
171

172
// Краткая информация вопроса
173
switch ($help['type']) {
174
    case 'server':
175
        $sql->query('SELECT `address` FROM `servers` WHERE `id`="' . $help['service'] . '" LIMIT 1');
176
        if (!$sql->num()) {
177
            $service = 'Игровой сервер: #' . $help['service'] . ' (не найден)';
178
        } else {
179
            $ser = $sql->get();
180
            $service = '<a href="' . $cfg['http'] . 'servers/id/' . $help['service'] . '" target="_blank"><u>Игровой сервер: #' . $help['service'] . ' ' . $ser['address'] . '</u></a>';
181
        }
182

183
        break;
184

185
    case 'hosting':
186
        $service = '<a href="' . $cfg['http'] . 'hosting/id/' . $help['service'] . '" target="_blank"><u>Виртуальных хостинг: #' . $help['service'] . '</u></a>';
187

188
        break;
189

190
    default:
191
        $service = 'Вопрос без определенной услуги';
192
}
193

194
$html->get('dialog', 'sections/help');
195

196
$html->set('id', $id);
197
$html->set('date', sys::today($help['date']));
198
$html->set('status', $help['close'] ? 'Вопрос решен' : $status[$help['status']]);
199
$html->set('service', $service);
200
$html->set('dialog', $html->arr['dialog'] ?? '');
201

202
if ($user['group'] == 'user') {
203
    $html->unit('!user');
204
    $html->unit('user', 1);
205
} else {
206
    $html->unit('!user', 1);
207
    $html->unit('user');
208
}
209

210
if ($help['close']) {
211
    $html->unit('open');
212
    $html->unit('close', 1);
213
} else {
214
    $html->unit('open', 1);
215
    $html->unit('close');
216
}
217

218
$html->pack('main');
219

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

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

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

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