Файл: 3020.ru/file_3020/plugins/support.php
Строк: 229
<?
if (isset($ID)) {
$support = $sql -> fetch("SELECT * FROM `support_id` WHERE `id` = '$ID' LIMIT 1");
if (!isset($support['id'])) {
die('Нет такого тикета');
}
}
if ((isset($support['id']) && $level < 2 && $user['id'] != $support['id_user']) || $level == 0){
header('Location: /index.php');
exit;
}
$cats = array('1' => 'Личные данные', '2' => 'Магазин', '3' => 'Товары', '4' => 'Вывод на другие системы', '5' => 'Прочее');
if (isset($_GET['close']) && $support['id']) {
if ($_GET['close'] >= 0 && $_GET['close'] <= 1 && $support['close'] != $_GET['close']) {
$close = (int) $_GET['close'];
if ($close == 1 && $support['id_user'] == $user['id']) {
$sql -> update("UPDATE `support_id` SET `close` = '1' WHERE `id` = '$support[id]'");
$support['close'] = $close;
} elseif ($support['id_user'] != $user['id']) {
$sql -> update("UPDATE `support_id` SET `close` = '$close' WHERE `id` = '$support[id]'");
$support['close'] = $close;
}
if ($support['id_user'] != $user['id'] && $close == 1) {
journal($support['id_user'], 'support', "Ваш тикет [url=?func=support&id=$support[id]]$support[title] [/url] закрыл".($user['pol']==0?'a':null)." [url=?func=user.profile&id=$user[id]]" . login($user['id'], 0) . "[/url]");
} elseif ($support['id_user'] != $user['id'] && $close == 0) {
journal($support['id_user'], 'support', "Ваш тикет [url=?func=support&id=$support[id]]$support[title] [/url] cнова был открыт [url=?func=user.profile&id=$user[id]]" . login($user['id'], 0) . "[/url]");
}
if ($close == 1) {
$messages[] = 'Тикет успешно закрыт';
} elseif ($close == 0 && $support['id_user'] != $user['id']) {
$messages[] = 'Тикет успешно открыт';
}
}
}
if (isset($support['id']) && $user['id'] == $support['id_user']) {
$sql -> update("UPDATE `support` SET `read` = '1' WHERE `id_tiket` = '$support[id]' AND `level` > '1' AND `id_user` != '$user[id]' AND `read` = '0'");
} elseif (isset($support['id']) && $user['id'] != $support['id_user']) {
$sql -> update("UPDATE `support` SET `read` = '1' WHERE `id_tiket` = '$support[id]' AND `level` = '1' AND `read` = '0'");
}
if (isset($_POST['msg'])) {
$title = null;
$type = null;
$msg = $sql->esc($_POST['msg']);
if (isset($_GET['create']) && !isset($support['id'])) {
$title = $sql->esc($_POST['title']);
$type = $sql->esc($_POST['type']);
$screens = 0;
if (strlen2($title) > 1024) {
$err[] = 'Тема слишком длинная';
} elseif (strlen2($title) < 2) {
$err[] = 'Тема слишком короткая';
}
if (isset($_FILES['screen']['name'][0])) {
for ($i = 0; count($_FILES['screen']['name']) > $i; $i++) {
if (isset($_FILES['screen']['tmp_name'][$i]) && $imgc = @imagecreatefromstring(file_get_contents($_FILES['screen']['tmp_name'][$i]))) {
$cache = md5($_FILES['screen']['name'][$i].$time);
$screen[] = $cache;
@copy($_FILES['screen']['tmp_name'][$i], SRC.'screen/support/' . $cache . '.png');
}
}
}
if (isset($screen) && is_array($screen)) {
$screens = serialize($screen);
} else {
$screens = null;
}
}
if (strlen2($msg) > 1024) {
$err[] = 'Сообщение слишком длинное';
} elseif (strlen2($msg) < 2) {
$err[] = 'Сообщение слишком короткое';
}
if (!isset($err)) {
if (isset($_GET['create']) && !isset($support['id'])) {
$sql -> insert("INSERT INTO `support_id` (`id_user`, `time`, `time_last`, `type`, `id_last`, `title`, `screens`, `msg`)
VALUES ('$user[id]', '$time', '$time', '$type', '$user[id]', '$title', '$screens', '$msg')");
$support['id'] = $sql->insert_id();
$sql -> insert("INSERT INTO `support` (`id_user`, `id_tiket`, `time`, `msg`) VALUES ('0', '$support[id]', '$time', '[green]Вы создали новое обращение в службу поддержки нашего магазина, администрация ответит вам в ближайшее время..[/green]')");
$_SESSION['message'] = 'Тикет успешно создан';
} else {
if ($user['id'] != $support['id_user']) {
journal($support['id_user'], 'support', "На Ваш тикет [url=?func=support&id=$support[id]]$support[title] [/url] ответил".($user['pol']==0?'a':null)." [url=?func=user.profile&id=$user[id]]" . login($user['id'], 0) . "[/url]");
}
$sql -> insert("INSERT INTO `support` (`id_user`, `id_tiket`, `time`, `msg`, `level`) VALUES ('$user[id]', '$support[id]', '$time', '$msg', '$level')");
$_SESSION['message'] = 'Сообщение успешно отправлено';
}
$sql -> update("UPDATE `support_id` SET `time_last` = '$time', `id_last` = '$user[id]' WHERE `id` = '$support[id]' LIMIT 1");
header('Location: ?func=' . $func . '&id=' . $support['id']);
exit;
} elseif (!isset($support['id'])) {
foreach($screens AS $key => $cache) {
@unlink(SRC . 'screen/support/' . $cache . '.png');
}
}
}
$system['title'] = 'Онлайн-поддержка';
require SYS . 'header.php';
if (isset($support['id'])) {
?><div class="nav2"><b><font color="blue">Автор</font></b>: <?= login($support['id_user'], 1)?> | Тема: <b><?= text($support['title'])?></b> | <b><?= ($support['close'] == 0 ? '<span class="on">Открыт</span>' : '<span class="off">Закрыт</span>')?></b></div>
<div class="nav1">Сообщение: <?= text_out($support['msg'])?></div><?
if ($support['screens']) {
$screens = unserialize($support['screens']);
?>
<table class="table table-bordered" style="margin: 2px; width: 99%;">
<tr>
<td style="width: 25px;">#ID</td>
<td>Скриншот</td>
</tr>
<?
foreach ($screens AS $key => $value) {
?>
<tr>
<td class="success" style="width: 25px;"><center><?= $key?></center></td>
<td class="success" ><a href="/_images/screen/support/<?= $value?>.png"><i class="icon-picture"></i> <?= $value?>.png</a></td>
</tr>
<?
}
?>
</table><?
}
?>
<div class="foot">
<? if ($support['close'] == 0 || $level > 1) { ?>
<?= ($support['close'] != 1 ? '<a href="?func=support&id=' . $ID . '&close=1"><i class="icon-off"></i> Закрыть тикет</a>' : '<a href="?func=support&id=' . $ID . '&close=0"><i class="icon-refresh"></i> Открыть тикет</a>')?>
<? } elseif ($support['close'] == 1) { ?>
<i class="icon-lock"></i> <span class="off"> Тикет закрыт</span>
<? } ?>
</div>
<?
$k_post = $sql -> selectCount("SELECT COUNT(*) FROM `support` WHERE `id_tiket` = '$support[id]'");
if ($k_post == 0) {
?>
<div class="alert" style="margin: 2px;">Список сообщений пуст</div>
<?
} else {
$k_page = k_page($k_post, $system['page_str']);
$page = page($k_page);
$start = $system['page_str'] * $page - $system['page_str'];
$array = $sql -> select("SELECT * FROM `support` WHERE `id_tiket` = '$support[id]' ORDER BY `time` DESC LIMIT $start, $system[page_str]");
foreach ($array AS $post) {
$num++;
?>
<div class="<?= ($num % 2 ? "nav2" : "nav1")?>">
<?= login($post['id_user'], 1)?> <?= vremja($post['time'])?> <?= ($post['read'] == 0 && $post['id_user'] != 0 ? '<span class="off">[не прочитано]</span>' : '')?> <br />
<?= text_out($post['msg'])?><br />
</div>
<?
}
if ($k_page > 1) {
str('?func=' . $func . '&id=' . $support['id'] . '&', $k_page, $page);
}
}
if ($support['close'] == 0) {
?>
<form class="form_t" action="?func=support&id=<?= $ID?>" method="POST" style="margin: 2px;">
<? if (is_file(THEME . 'php/form.textarea.php')) {
require THEME . 'php/form.textarea.php';
} else {
?><textarea style="width: auto;" name="msg" id="msg" placeholder="Cообщение..."></textarea><br /><?
}
?>
<button type="submit" class="btn">Отправить</button> <a href="?func=support&id=<?= $support['id']?>" class="btn">Обновить</a>
</form>
<?
}
} elseif (isset($_GET['create'])) {
?>
<div class="nav2">
<form class="form-horizontal" action="?func=<?= $func?>&create" method="POST" style="margin: 2px;" enctype="multipart/form-data">
<div class="control-group">
<label class="control-label" for="title">Тема обращения</label>
<div class="controls">
<input type="text" id="title" name="title" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="msg">Сообщение</label>
<div class="controls">
<? if (is_file(THEME . 'php/form.textarea.php')) {
require THEME . 'php/form.textarea.php';
} else {
?><textarea style="width: auto;" name="msg" id="msg" placeholder="Cообщение..."></textarea><br /><?
}
?>
</div>
</div>
<div class="control-group">
<label class="control-label" for="type">Категория</label>
<div class="controls">
<select name="type" id="type" style="width: auto;">
<? foreach ($cats AS $keys => $values) { ?>
<option value='<?= $keys?>'><?= $values?></option>
<? } ?>
</select>
</div>
</div>
<div class="control-group warning">
<label class="control-label" for="screen">Скриншоты</label>
<div class="controls" id="screens">
<input type="file" name="screen[]" id="screen1" style="width: 200px" /><br />
</div>
<div class="controls" style="padding: 4px; padding-left: 50px;">
<a href="#screens" onclick="addScreen()" class="btn">Добавить ещё</a>
</div>
</div>
<script>
var countScreen = 1;
function addScreen() {
if (countScreen <= 10) {
countScreen++;
$('#screens').append('<input type="file" name="screen[]" id="screen' + countScreen + '" style="width: 200px" /><br />');
} else {
alert('Разрешается выгружать не более 10 скриншотов');
}
}
</script>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn">Создать</button>
</div>
</div>
</form>
</div>
<?
} else {
?>
<div class="foot">
<a href="?func=<?= $func?>&create"><i class="icon-plus-sign"></i> Новый тикет</a><br />
</div>
<?
$k_post = $sql -> selectCount("SELECT COUNT(*) FROM `support_id` WHERE `id_user` = '$user[id]'");
if ($k_post == 0) {
?>
<div class="alert" style="margin: 2px;">Список обращений пуст</div>
<?
} else {
$k_page = k_page($k_post, $system['page_str']);
$page = page($k_page);
$start = $system['page_str'] * $page - $system['page_str'];
$array = $sql -> select("SELECT * FROM `support_id` WHERE `id_user` = '$user[id]' ORDER BY `time_last` DESC LIMIT $start, $system[page_str]");
foreach ($array AS $post) {
$count = $sql -> fetch("SELECT
SUM(IF(`read` = '0' AND `level` > '1' AND `id_tiket` = '$post[id]', 1, 0)) AS 'new',
SUM(IF(`level` = '1' AND `id_tiket` = '$post[id]' AND `id_user` != '0', 1, 0)) AS 'user',
SUM(IF(`level` > '1' AND `id_tiket` = '$post[id]', 1, 0)) AS 'contact'
FROM `support`");
$count = array('new' => (int) $count['new'], 'contact' => (int) $count['contact'], 'user' => (int) $count['user']);
$num++;
?>
<div class="<?= ($num % 2 ? "nav1" : "nav2")?>">
<? if ($level == 4) { ?>
<a href="?func=admin.support&delete=<?= $post['id']?>&page=<?= $page?>&close=<?= $close?>" class="close">×</a>
<? } ?>
<a href="?func=support&id=<?= $post['id']?>"><i class="icon-comment"></i> <?= text($post['title'])?></a>
[<?= $count['contact']?>/<?= $count['user']?>]<?= ($count['new'] > 0 ? ' <span class="off">+' . $count['new'] . '</span>' : '')?> (<?= vremja($post['time'])?>)<br />
Категория: <b><?= $cats[$post['type']]?></b><br />
Посл.: <?= login($post['id_last'], 1)?> (<?= vremja($post['time_last'])?>)<br />
Статус: <b><?= ($post['close'] == 0 ? '<span class="on">Открытый тикет</span>' : '<span class="off">Закрытый тикет</span>')?></b><br />
</div>
<?
}
if ($k_page > 1) {
str('?func=' . $func . '&', $k_page, $page);
}
}
}
if (isset($support['id']) && $support['id_user'] != $user['id']) {
?>
<div class="foot">
« <a href="?func=admin.support&create">Список тикетов</a><br />
</div>
<?
} elseif (isset($support['id']) || isset($_GET['create'])) {
?>
<div class="foot">
« <a href="?func=support">Список тикетов</a><br />
</div>
<?
} else {
?>
<div class="foot">
« <a href="?func=user.main">В кабинет</a><br />
</div>
<?
}
?>