EngineGP

Форк
0
126 строк · 4.2 Кб
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
$nmch = 'reply_help_' . $user['id'];
17

18
// Проверка сессии
19
if ($mcache->get($nmch)) {
20
    sys::outjs(['e' => sys::text('other', 'mcache')], $nmch);
21
}
22

23
// Создание сессии
24
$mcache->set($nmch, 1, false, 10);
25

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

33
    if (!$sql->num()) {
34
        sys::outjs(['с' => 'Вопрос не открыт чтобы вести диалог.'], $nmch);
35
    }
36

37
    $help = $sql->get();
38
} else {
39
    sys::outjs(['e' => 'Вопрос не найден в базе.'], $nmch);
40
}
41

42
$aData = [];
43

44
$aData['text'] = $_POST['text'] ?? sys::outjs(['e' => 'Сообщение не найдено.'], $nmch);
45
$aData['images'] = $_POST['img'] ?? [];
46

47
$aData['img'] = [];
48

49
// Проверка сообщения
50
if (iconv_strlen($aData['text'], 'UTF-8') < 2 || iconv_strlen(str_replace([' ', "\t", "\n"], '', $aData['text']), 'UTF-8') > 1000) {
51
    sys::outjs(['e' => 'Длина сообщения не должна быть менее 2 и не превышать 1000 символов.'], $nmch);
52
}
53

54
include(LIB . 'help.php');
55

56
// Обработка сообщения
57
$aData['text'] = help::text($aData['text']);
58

59
// Проверка изображений
60
if (is_array($aData['images']) and count($aData['images'])) {
61
    foreach ($aData['images'] as $img) {
62
        $key = explode('.', $img);
63

64
        if (!is_array($key) || sys::valid($key[0], 'md5') || !in_array($key[1], ['png', 'gif', 'jpg', 'bmp'])) {
65
            continue;
66
        }
67

68
        $sql->query('SELECT `id` FROM `help_upload` WHERE `name`="' . $img . '" LIMIT 1');
69
        if (!$sql->num()) {
70
            continue;
71
        }
72

73
        $image = $sql->get();
74

75
        $sql->query('UPDATE `help_upload` set `status`="1" WHERE `id`="' . $image['id'] . '" LIMIT 1');
76

77
        $aData['img'][] = $img;
78
    }
79
}
80

81
// Система контроля спама
82
if ($user['group'] == 'user') {
83
    $i = 0;
84
    $n = 3;
85
    $sql->query('SELECT `user` FROM `help_dialogs` WHERE `help`="' . $id . '" ORDER BY `id` DESC LIMIT 3');
86
    while ($msg = $sql->get()) {
87
        if (!$i and !$msg['user']) {
88
            sys::outjs(['i' => 'Пожалуйста, дождитесь ответа технической поддержки.'], $nmch);
89
        }
90

91
        $i += 1;
92

93
        if ($msg['user'] == $help['user']) {
94
            $n -= 1;
95
        }
96
    }
97

98
    if (!$n) {
99
        $sql->query('INSERT INTO `help_dialogs` set `help`="' . $id . '", `user`="0", `text`="Пожалуйста, дождитесь ответа технической поддержки.", `img`="", `time`="' . $start_point . '"');
100

101
        sys::outjs(['i' => 'Пожалуйста, дождитесь ответа технической поддержки.'], $nmch);
102
    }
103
}
104

105
$sql->query('SELECT `text` FROM `help_dialogs` WHERE `help`="' . $id . '" ORDER BY `id` DESC LIMIT 1');
106
$msg = $sql->get();
107

108
if (md5($msg['text']) == md5($aData['text'])) {
109
    sys::outjs(['e' => 'Такое сообщение уже отправлено.'], $nmch);
110
}
111

112
$sql->query('INSERT INTO `help_dialogs` set '
113
    . '`help`="' . $id . '",'
114
    . '`user`="' . $user['id'] . '",'
115
    . '`text`="' . $aData['text'] . '",'
116
    . '`img`="' . sys::b64js($aData['img']) . '",'
117
    . '`time`="' . $start_point . '"');
118

119
if ($user['group'] != 'user') {
120
    $sql->query('UPDATE `help` set `status`="0" WHERE `id`="' . $id . '" LIMIT 1');
121
} else {
122
    $sql->query('UPDATE `help` set `status`="1" WHERE `id`="' . $id . '" LIMIT 1');
123
    $sql->query('UPDATE `help` set `notice_admin`="2" WHERE `id`="' . $id . '" LIMIT 1');
124
}
125

126
sys::outjs(['s' => 'ok'], $nmch);
127

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

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

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

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