Файл: support/tiket.php
Строк: 83
<?php
/*
* Модуль: Поддержака сайта(Тикеты) 
* Автор: LeXoN
* Моя анкета: http://dcms.su/profile.view.php?id=2843
* Сайт: DcmsTema.ru
*/
include_once '../sys/inc/start.php';
$doc = new document(1);
$doc->title = __('Просмотр тикета');
//Проверка на передачу ИД
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    header('Refresh: 1; url=./');
    $doc->err(__('Ошибка выбора тикета'));
    exit;
}
//Присвоение ИД к пременой ** $id_tiket
$id_tiket = (int) $_GET['id'];
//Проверка на существования тикита с таким ИД
$q = $db->prepare("SELECT * FROM `tiket` WHERE `id` = ?  LIMIT 1");
$q->execute(Array($id_tiket));
if (!$tiket = $q->fetch()) {
    if (isset($_GET['return']))
        header('Refresh: 1; url=' . $_GET['return']);
    else
        header('Refresh: 1; url=./');
    $doc->err(__('Тикет не существует'));
    exit;
}
$autor = new user($tiket['id_user']);//Автор тикета
//Страничка только для автора и администрации
if (($autor->id == $user->id)||($user->group >= 2)){}else{
    header('Refresh: 1; url=./');
    $doc->err(__('Доступ запрещен'));
    exit;
}
 if (isset($_POST['send']) && isset($_POST['message']) && isset($_POST['token']) && $user->group) {
        $message = (string)$_POST['message'];
        $message = text::input_text($message);
        if (!antiflood::useToken($_POST['token'], 'tiket')) {
            // нет токена (обычно, повторная отправка формы)
        } elseif ($dcms->censure && $mat = is_valid::mat($message)) {
            $doc->err(__('Обнаружен мат: %s', $mat));
        } elseif ($message) {
           $res = $db->prepare("INSERT INTO `tiket_kom` (`id_list`, `id_user`, `msg`, `time`, `otv`) VALUES (?,?, ?, ?, ?)");
           $res->execute(Array($tiket['id'],$user->id,$message,TIME,$user->id==$autor->id ? '0':'1'));
            header('Refresh: 1; url=?id='.$tiket['id'].'&' . passgen() . '&' . SID);
            $doc->ret(__('Вернуться'), '?id='.$tiket['id'].'&' . passgen());
            $doc->msg(__('Сообщение успешно отправлено'));
            if($user->id != $autor->id){
            $autor->mess("[user]{$user->id}[/user] ответил" . ($user->sex ? '' : 'а') . "  Вам в тикете  [url=/support/tiket.php?id={$tiket['id']}]".text::toValue($tiket['name'])."[/url] :: [url=/support/tiket.php?id={$tiket['id']}]Перейти[/url]");
            }else{
            $users = groups::getAdmins();
               foreach ($users AS $ank) {
               $ank->mess("Новое сообщение в тикете  [url=/support/tiket.php?id={$tiket['id']}]".text::toValue($tiket['name'])."[/url] :: [url=/support/tiket.php?id={$tiket['id']}]Перейти[/url]");
               }
            }   
            exit;
        } else {
            $doc->err(__('Сообщение пусто'));
        }
    
}
    
$doc->title .= ': '.text::toValue($tiket['name']);
$listing = new listing();
     $post = $listing->post();
     $post->hightlight = true;
     $post->icon("tiket.{$tiket['down']}");
     $post->title = __('Вопрос').':';
     $post->time = misc::when($tiket['time']);
     $post->content = text::toOutput($tiket['msg']).'<br />';
     $post->content .= text::toOutput('[b]'. __('Статус').':[/b]').'<br />';
     if ($tiket['down'])
     $post->content .= text::toOutput('[green]'. __('Открыт').'[/green]').'<br />';
     else
     $post->content .= text::toOutput('[red]'. __('Закрыт').'[/red]').'<br />';
     if($autor->id !== $user->id)
     $post->bottom = __('Добавил' . ($autor->sex? '':'а').': %s',$autor->show());
$listing->display();
$pages = new pages($db->query("SELECT COUNT(*) FROM `tiket_kom` WHERE `id_list` = '$tiket[id]'")->fetchColumn());
            if ($pages->this_page == 1 && $tiket['down']==1) {
            $form = new form('?id='.$tiket['id'].'&' . passgen());
            $form->refresh_url('?' . passgen());
            $form->hidden('token', antiflood::getToken('tiket'));
            $form->textarea('message', ($autor->id == $user->id ? __('Сообщение'):__('Ответ на тикет')));
            $form->button(__('Отправить'), 'send', false);
            $form->display();
            }
$listing = new listing();
$q = $db->query("SELECT * FROM  `tiket_kom` WHERE `id_list` = '$tiket[id]' ORDER BY `time` DESC LIMIT ".$pages->limit);
if ($arr = $q->fetchAll()) {
    foreach ($arr AS $kom) {
    $ank = new user($kom['id_user']);
    $post = $listing->post();
    
    $post->time = misc::when($kom['time']);
    if($ank->id == $autor->id)
    $post->title = __('Сообщение (%s)',$ank->nick).':';
    else
    $post->title = __('Ответ (%s)',$ank->nick).':';
    $post->post = text::toOutput($kom['msg']);
    if ($user->group >= 2){
    $post->action('edit', 'kom.action.php?id='.$tiket['id'].'&id_kom='.$kom['id'].'&act=edit'); // редактирование
    $post->action("delete", 'kom.action.php?id='.$tiket['id'].'&id_kom='.$kom['id'].'&act=delete');
    }elseif ($user->id == $ank->id && TIME < $kom['time'] + 600) {
    // автору сообщения разрешается его редактировать в течении 10 минут
    $post->action('edit', 'kom.action.php?id='.$tiket['id'].'&id_kom='.$kom['id'].'&act=edit'); // редактирование
    }
}}
$listing->display(__('Ответы отсутствуют'));
$pages->display('?id='.$tiket['id'].'&'); // вывод страниц
if (($user->group >= 2 || $user->id==$autor->id)&& $tiket['down']==1)
    $doc->act(__('Закрыть тикет'), 'act.php?id='.$tiket['id'].'&act=clous');
if (($user->group >= 2)&& $tiket['down']==0)
    $doc->act(__('Открыть тикет'), 'act.php?id='.$tiket['id'].'&act=clous');
if ($user->group >= 2)
    $doc->act(__('Удалить тикет'), 'act.php?id='.$tiket['id'].'&act=delete');
    
if ($user->group >= 2 ){
    $doc->ret(__('Все тикеты (Админка) '), '/dpanel/adm.tiket.php');
    $doc->ret(__('Тикеты %s',$autor->nick), 'index.php?id='.$autor->id);
    }
    $doc->ret(__('Мои тикеты'), '/support/');