api_get_path(WEB_CODE_PATH).'ticket/tickets.php', 'name' => get_lang('MyTickets') ); $interbreadcrumb[] = array('url' => '#', 'name' => get_lang('TicketDetail')); $disableReponseButtons = ''; $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; $ticket_id = $_GET['ticket_id']; $ticket = TicketManager::get_ticket_detail_by_id($ticket_id, $user_id); if (!isset($ticket['ticket'])) { api_not_allowed(); } if (!isset($_GET['ticket_id'])) { header('Location: '.api_get_path(WEB_CODE_PATH).'ticket/tickets.php'); exit; } if (isset($_POST['response'])) { if ($user_id == $ticket['ticket']['assigned_last_user']) { $response = $_POST['response'] == '1' ? true : $_POST['response'] == "0" ? false : null; if ($response && $ticket['ticket']['status_id'] == TicketManager::STATUS_UNCONFIRMED) { /*TicketManager::close_ticket($_GET['ticket_id'], $user_id); $ticket['ticket']['status_id'] = TicketManager::STATUS_CLOSE; $ticket['ticket']['status'] = get_lang('Closed');*/ } else if (!is_null($response) && $ticket['ticket']['status_id'] == TicketManager::STATUS_UNCONFIRMED) { TicketManager::update_ticket_status(TicketManager::STATUS_PENDING, $_GET['ticket_id'], $user_id); $ticket['ticket']['status_id'] = TicketManager::STATUS_PENDING; $ticket['ticket']['status'] = get_lang('StatusPending'); } } } if (isset($_REQUEST['action'])) { $action = $_REQUEST['action']; switch ($action) { case 'assign': if (api_is_platform_admin() && isset($_GET['ticket_id'])) { TicketManager::assign_ticket_user($_GET['ticket_id'], $_POST['admins']); } Display::addFlash(Display::return_message(get_lang('Updated'))); header("Location:" . api_get_self() . "?ticket_id=" . $ticket_id); exit; break; case 'unassign': if (api_is_platform_admin() && isset($_GET['ticket_id'])) { TicketManager::assign_ticket_user($_GET['ticket_id'], 0); } Display::addFlash(Display::return_message(get_lang('Updated'))); header("Location:" . api_get_self() . "?ticket_id=" . $ticket_id); exit; break; default: break; } } $title = 'Ticket #' . $ticket['ticket']['code']; if (!isset($_POST['compose'])) { if (isset($_REQUEST['close'])) { TicketManager::close_ticket($_REQUEST['ticket_id'], $user_id); $ticket['ticket']['status_id'] = TicketManager::STATUS_CLOSE; $ticket['ticket']['status'] = get_lang('Closed'); } /*$ticket['ticket']['request_user'] = intval($ticket['ticket']['request_user']); if ($ticket['ticket']['request_user'] == $user_id || intval($ticket['ticket']['assigned_last_user']) == $user_id) { TicketManager::update_message_status($ticket_id, $ticket['ticket']['request_user']); }*/ Display::display_header(); $form_close_ticket = ''; if ($ticket['ticket']['status_id'] != TicketManager::STATUS_FORWARDED && $ticket['ticket']['status_id'] != TicketManager::STATUS_CLOSE && $isAdmin ) { /*if (intval($ticket['ticket']['assigned_last_user']) == $user_id) { if ($ticket['ticket']['status_id'] != TicketManager::STATUS_CLOSE) { $form_close_ticket.= ''; $form_close_ticket.= get_lang('Close') . ''; } }*/ } $img_assing = ''; if (empty($ticket['ticket']['assigned_last_user'])) { $img_assing = ''.get_lang('Assign').''; } else { if ($isAdmin) { $img_assing = ' '.get_lang('ChangeAssign').' '; } } $bold = ''; if ($ticket['ticket']['status_id'] == TicketManager::STATUS_CLOSE) { $bold = 'style = "font-weight: bold;"'; echo ""; } if ($isAdmin) { $senderData = get_lang('AddedBy'). ' '.$ticket['ticket']['user_url'].' (' . $ticket['usuario']['username'] . ').'; } else { $senderData = get_lang('AddedBy'). ' '.$ticket['usuario']['complete_name'].' (' . $ticket['usuario']['username']. ').'; } echo ''; if (!empty($ticket['ticket']['assigned_last_user'])) { $assignedUser = api_get_user_info($ticket['ticket']['assigned_last_user']); echo ''; } else { echo ''; } if ($ticket['ticket']['course_url'] != null) { echo ''; if (!empty($ticket['ticket']['session_id'])) { $sessionInfo = api_get_session_info($ticket['ticket']['session_id']); echo ''; } } echo ' '; // Select admins $select_admins = '"; echo '
'; echo '
' . get_lang('Responsable') . ':
' . $select_admins . '
'; echo '
'; echo '

'.$title.' '.$form_close_ticket.' '.$img_assing.'

'.$ticket['ticket']['subject'].'

'.$senderData.' ' . get_lang('Created') . ' '. Display::url( date_to_str_ago($ticket['ticket']['start_date_from_db']), '#', ['title' => $ticket['ticket']['start_date'], 'class' => 'boot-tooltip'] ).'. '. get_lang('TicketUpdated').' '. Display::url( date_to_str_ago($ticket['ticket']['sys_lastedit_datetime_from_db']), '#', ['title' => $ticket['ticket']['sys_lastedit_datetime'], 'class' => 'boot-tooltip'] ).'

' . get_lang('Category') . ': ' . $ticket['ticket']['name'] . '

' . get_lang('Status') . ': ' . $ticket['ticket']['status'] . '

' . get_lang('Priority') . ': ' . $ticket['ticket']['priority'] . '

' . get_lang('AssignedTo') . ': ' . $assignedUser['complete_name'] . '

' . get_lang('AssignedTo') . ': -

' . get_lang('Course') . ': ' . $ticket['ticket']['course_url'] . '
' . get_lang('Session') . ': ' . $sessionInfo['name'] . '

' . get_lang('Description') . ':
'.$ticket['ticket']['message'].'
'; $messages = $ticket['messages']; $logs = TicketManager::get_assign_log($ticket_id); $counter = 1; foreach ($messages as $message) { $date = Display::url( date_to_str_ago($message['sys_insert_datetime']), '#', ['title' => api_get_local_time($message['sys_insert_datetime']), 'class' => 'boot-tooltip'] ); $receivedMessage = ''; if (!empty($message['subject'])) { $receivedMessage = ''.get_lang('Subject') . ': '.$message['subject'].'
'; } $receivedMessage = ''.get_lang('Message') . ':
'.$message['message'].'
'; $attachmentLinks = ''; if (isset($message['attachments'])) { $attributeClass = array( 'class' => 'attachment-link' ); foreach ($message['attachments'] as $attach) { $attachmentLinks .= Display::tag('div', $attach['attachment_link'], $attributeClass); } } $entireMessage = $receivedMessage . $attachmentLinks; $counterLink = Display::url('#'.$counter, api_get_self().'?ticket_id='.$ticket_id.'#note-'.$counter); echo '

' . sprintf(get_lang('UpdatedByX'), $message['user_created']).' '.$date. ' '.$counterLink.'

'; echo Display::div( $entireMessage, ['class' => 'well'] ); $counter++; } $subject = get_lang('ReplyShort') .': '.$ticket['ticket']['subject']; if ($ticket['ticket']['status_id'] != TicketManager::STATUS_FORWARDED && $ticket['ticket']['status_id'] != TicketManager::STATUS_CLOSE ) { if (!$isAdmin && $ticket['ticket']['status_id'] != TicketManager::STATUS_UNCONFIRMED) { show_form_send_message($ticket['ticket']); } else { if ( $ticket['ticket']['assigned_last_user'] == $user_id || $ticket['ticket']['sys_insert_user_id'] == $user_id || $isAdmin ) { show_form_send_message($ticket['ticket']); } } } Display::display_footer(); } else { $ticket_id = $_POST['ticket_id']; $content = $_POST['content']; $subject = $_POST['subject']; $message = isset($_POST['confirmation']) ? true : false; $file_attachments = $_FILES; $user_id = api_get_user_id(); TicketManager::insert_message( $ticket_id, $subject, $content, $file_attachments, $user_id, 'NOL', $message ); if ($isAdmin) { TicketManager::updateTicket( [ 'priority_id' => $_POST['priority_id'], 'status_id' => $_POST['status_id'] ], $ticket_id, api_get_user_id() ); } Display::addFlash(Display::return_message(get_lang('Saved'))); header("Location:" . api_get_self() . "?ticket_id=" . $ticket_id); exit; } /** * @param array $ticket */ function show_form_send_message($ticket) { global $isAdmin; global $subject; global $plugin; $form = new FormValidator( 'send_ticket', 'POST', api_get_self() . '?ticket_id=' . $ticket['id'], '', array( 'enctype' => 'multipart/form-data', 'onsubmit' => 'return validate()', 'class' => 'form-horizontal' ) ); if ($isAdmin) { $statusList = TicketManager::getStatusList(); $form->addElement( 'select', 'status_id', get_lang('Status'), $statusList ); $priorityList = TicketManager::getPriorityList(); $form->addElement( 'select', 'priority_id', get_lang('Priority'), $priorityList, array( 'id' => 'priority_id', 'for' => 'priority_id' ) ); $form->setDefaults( [ 'priority_id' => $ticket['priority_id'], 'status_id' => $ticket['status_id'], ] ); } $form->addElement( 'text', 'subject', get_lang('Subject'), array( 'for' => 'subject', 'value' => $subject, 'style' => 'width: 540px;' ) ); $form->addElement('hidden', 'ticket_id', $ticket['id']); $form->addHtmlEditor( 'content', get_lang('Message'), false, false, array( 'ToolbarSet' => 'Profile', 'Width' => '550', 'Height' => '250' ) ); if ($isAdmin) { $form->addElement( 'checkbox', 'confirmation', null, get_lang('RequestConfirmation') ); } $form->addElement('file', 'attach_1', get_lang('FilesAttachment')); $form->addLabel('', '
'); $form->addLabel('', ' ' . get_lang('AddOneMoreFile') . ' ('.sprintf(get_lang('MaximunFileSizeX'), format_file_size(api_get_setting('message_max_upload_filesize'))).') '); $form->addElement('html', '
'); $form->addElement( 'button', 'compose', get_lang('SendMessage'), null, null, null, 'btn btn-primary' ); $form->display(); }