26if (!defined(
'NOREQUIREMENU')) {
27 define(
'NOREQUIREMENU',
'1');
30if (!defined(
"NOLOGIN")) {
31 define(
"NOLOGIN",
'1');
33if (!defined(
'NOIPCHECK')) {
34 define(
'NOIPCHECK',
'1');
36if (!defined(
'NOBROWSERNOTIF')) {
37 define(
'NOBROWSERNOTIF',
'1');
44$entity = (!empty($_GET[
'entity']) ? (int) $_GET[
'entity'] : (!empty($_POST[
'entity']) ? (int) $_POST[
'entity'] : 1));
45if (is_numeric($entity)) {
46 define(
"DOLENTITY", $entity);
50require
'../../main.inc.php';
58require_once DOL_DOCUMENT_ROOT.
'/ticket/class/actions_ticket.class.php';
59require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formticket.class.php';
60require_once DOL_DOCUMENT_ROOT.
'/core/class/CMailFile.class.php';
61require_once DOL_DOCUMENT_ROOT.
'/core/lib/ticket.lib.php';
62require_once DOL_DOCUMENT_ROOT.
'/core/lib/security.lib.php';
63require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
64require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
67$langs->loadLangs(array(
"companies",
"other",
"ticket"));
70$action =
GETPOST(
'action',
'aZ09');
73$track_id =
GETPOST(
'track_id',
'alpha');
74$email = strtolower(
GETPOST(
'email',
'alpha'));
78if (
GETPOST(
'btn_view_ticket_list')) {
79 unset($_SESSION[
'track_id_customer']);
80 unset($_SESSION[
'email_customer']);
82if (empty($track_id) && isset($_SESSION[
'track_id_customer'])) {
83 $track_id = $_SESSION[
'track_id_customer'];
85if (empty($email) && isset($_SESSION[
'email_customer'])) {
86 $email = strtolower($_SESSION[
'email_customer']);
92$hookmanager->initHooks(array(
'ticketpubliclist',
'globalcard'));
104 $backtopage =
getDolGlobalString(
'TICKET_URL_PUBLIC_INTERFACE', DOL_URL_ROOT.
'/public/ticket/');
106 header(
"Location: ".$backtopage);
121 print
'<div class="error">'.$langs->trans(
'TicketPublicInterfaceForbidden').
'</div>';
127$arrayofcss = array(
getDolGlobalString(
'TICKET_URL_PUBLIC_INTERFACE',
'/public/ticket/').
'css/styles.css.php');
129llxHeaderTicket($langs->trans(
"Tickets"),
"", 0, 0, $arrayofjs, $arrayofcss);
131$display_ticket_list =
false;
134if ($action ==
"view_ticketlist") {
136 if (!strlen($track_id)) {
138 array_push(
$object->errors, $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"TicketTrackId")));
142 if (!strlen($email)) {
144 array_push(
$object->errors, $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Email")));
149 array_push(
$object->errors, $langs->trans(
"ErrorEmailOrTrackingInvalid"));
155 $ret =
$object->fetch(0,
'', $track_id);
159 $contacts =
$object->liste_contact(-1,
'external');
160 foreach ($contacts as $contact) {
161 if (strtolower($contact[
'email']) == $email) {
162 $display_ticket_list =
true;
163 $_SESSION[
'email_customer'] = $email;
164 $_SESSION[
'track_id_customer'] = $track_id;
167 $display_ticket_list =
false;
172 if ($email == strtolower(
$object->thirdparty->email)) {
173 $display_ticket_list =
true;
174 $_SESSION[
'email_customer'] = $email;
175 $_SESSION[
'track_id_customer'] = $track_id;
178 if (
$object->fk_user_create > 0) {
180 $tmpuser->fetch(
$object->fk_user_create);
181 if ($email == strtolower($tmpuser->email)) {
182 $display_ticket_list =
true;
183 $_SESSION[
'email_customer'] = $email;
184 $_SESSION[
'track_id_customer'] = $track_id;
189 if ($email == $emailorigin) {
190 $display_ticket_list =
true;
191 $_SESSION[
'email_customer'] = $email;
192 $_SESSION[
'track_id_customer'] = $track_id;
196 array_push(
$object->errors, $langs->trans(
"ErrorTicketNotFound", $track_id));
208if ($action ==
"view_ticketlist") {
209 print
'<div class="ticketpublicarealist ticketlargemargin">';
212 if ($display_ticket_list) {
214 $search_fk_status =
GETPOST(
"search_fk_status",
'alpha');
215 $search_subject =
GETPOST(
"search_subject",
'alpha');
216 $search_type =
GETPOST(
"search_type",
'alpha');
217 $search_category =
GETPOST(
"search_category",
'alpha');
218 $search_severity =
GETPOST(
"search_severity",
'alpha');
219 $search_fk_user_create =
GETPOST(
"search_fk_user_create",
"intcomma");
220 $search_fk_user_assign =
GETPOST(
"search_fk_user_assign",
"intcomma");
223 $url_page_current =
dol_buildpath(
'/public/ticket/list.php', 1);
224 $contextpage = $url_page_current;
227 if (
GETPOST(
"button_removefilter_x")) {
228 $search_fk_status =
'';
229 $search_subject =
'';
231 $search_category =
'';
232 $search_severity =
'';
233 $search_fk_user_create =
'';
234 $search_fk_user_assign =
'';
239 $extrafields->fetch_name_optionals_label(
$object->table_element);
241 $search_array_options = $extrafields->getOptionalsFromPost(
$object->table_element,
'',
'search_');
245 $param =
'&action=view_ticketlist';
247 $param .=
'&entity='.((int) $entity);
250 $param .=
'&token='.newToken();
253 $arrayfields = array(
254 't.datec' => array(
'label' => $langs->trans(
"Date"),
'checked' =>
'1'),
255 't.date_read' => array(
'label' => $langs->trans(
"TicketReadOn"),
'checked' =>
'0'),
256 't.date_close' => array(
'label' => $langs->trans(
"TicketCloseOn"),
'checked' =>
'0'),
257 't.ref' => array(
'label' => $langs->trans(
"Ref"),
'checked' =>
'1'),
259 't.fk_statut' => array(
'label' => $langs->trans(
"Status"),
'checked' =>
'1'),
260 't.subject' => array(
'label' => $langs->trans(
"Subject"),
'checked' =>
'1'),
261 'type.code' => array(
'label' => $langs->trans(
"Type"),
'checked' =>
'1'),
262 'category.code' => array(
'label' => $langs->trans(
"Category"),
'checked' =>
'1'),
263 'severity.code' => array(
'label' => $langs->trans(
"Severity"),
'checked' =>
'1'),
264 't.progress' => array(
'label' => $langs->trans(
"Progression"),
'checked' =>
'0'),
266 't.fk_user_create' => array(
'label' => $langs->trans(
"Author"),
'checked' =>
'1'),
267 't.fk_user_assign' => array(
'label' => $langs->trans(
"AssignedTo"),
'checked' =>
'0'),
276 unset($arrayfields[
't.progress']);
280 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
282 if (!empty($search_subject)) {
283 $filter[
't.subject'] = $search_subject;
284 $param .=
'&search_subject='.urlencode($search_subject);
286 if (!empty($search_type)) {
287 $filter[
't.type_code'] = $search_type;
288 $param .=
'&search_type='.urlencode($search_type);
290 if (!empty($search_category)) {
291 $filter[
't.category_code'] = $search_category;
292 $param .=
'&search_category='.urlencode($search_category);
294 if (!empty($search_severity)) {
295 $filter[
't.severity_code'] = $search_severity;
296 $param .=
'&search_severity='.urlencode($search_severity);
298 if (!empty($search_fk_user_assign)) {
300 if ($search_fk_user_assign > 0) {
301 $filter[
't.fk_user_assign'] = $search_fk_user_assign;
302 $param .=
'&search_fk_user_assign='.urlencode((
string) ($search_fk_user_assign));
305 if (!empty($search_fk_user_create)) {
307 if ($search_fk_user_create > 0) {
308 $filter[
't.fk_user_create'] = $search_fk_user_create;
309 $param .=
'&search_fk_user_create='.urlencode((
string) ($search_fk_user_create));
312 if ((isset($search_fk_status) && $search_fk_status !=
'') && $search_fk_status !=
'-1' && $search_fk_status !=
'non_closed') {
313 $filter[
't.fk_statut'] = $search_fk_status;
314 $param .=
'&search_fk_status='.urlencode($search_fk_status);
316 if (isset($search_fk_status) && $search_fk_status ==
'non_closed') {
317 $filter[
't.fk_statut'] = array(0, 1, 3, 4, 5, 6);
318 $param .=
'&search_fk_statut=openall';
321 require DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
323 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
324 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
327 $sortfield =
't.datec';
333 $limit =
$conf->liste_limit;
336 if (empty($page) || $page == -1) {
339 $offset = $limit * $page;
340 $pageprev = $page - 1;
341 $pagenext = $page + 1;
344 $sql =
"SELECT DISTINCT";
347 $sql .=
" t.track_id,";
348 $sql .=
" t.fk_soc,";
349 $sql .=
" t.fk_project,";
350 $sql .=
" t.origin_email,";
351 $sql .=
" t.fk_user_create, uc.lastname as user_create_lastname, uc.firstname as user_create_firstname,";
352 $sql .=
" t.fk_user_assign, ua.lastname as user_assign_lastname, ua.firstname as user_assign_firstname,";
353 $sql .=
" t.subject,";
354 $sql .=
" t.message,";
355 $sql .=
" t.fk_statut,";
356 $sql .=
" t.resolution,";
358 $sql .=
" t.progress,";
360 $sql .=
" t.timing,";
361 $sql .=
" t.type_code,";
362 $sql .=
" t.category_code,";
363 $sql .=
" t.severity_code,";
365 $sql .=
" t.date_read,";
366 $sql .=
" t.date_close,";
368 $sql .=
" type.label as type_label, category.label as category_label, severity.label as severity_label";
370 if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
371 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
372 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
375 $sql .=
" FROM ".MAIN_DB_PREFIX.
"ticket as t";
376 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_ticket_type as type ON type.code = t.type_code";
377 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_ticket_category as category ON category.code = t.category_code";
378 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_ticket_severity as severity ON severity.code = t.severity_code";
379 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = t.fk_soc";
380 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"user as uc ON uc.rowid = t.fk_user_create";
381 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"user as ua ON ua.rowid = t.fk_user_assign";
382 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"element_contact as ec ON ec.element_id = t.rowid";
383 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_type_contact as tc ON ec.fk_c_type_contact = tc.rowid";
384 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"socpeople sp ON ec.fk_socpeople = sp.rowid";
385 if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
386 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"ticket_extrafields as ef on (t.rowid = ef.fk_object)";
388 $sql .=
" WHERE t.entity IN (".getEntity(
'ticket').
")";
389 $sql .=
" AND ((tc.source = 'external'";
390 $sql .=
" AND tc.element = '".$db->escape(
$object->element).
"'";
391 $sql .=
" AND tc.active = 1";
392 $sql .=
" AND sp.email = '".$db->escape($_SESSION[
'email_customer']).
"')";
393 $sql .=
" OR s.email = '".$db->escape($_SESSION[
'email_customer']).
"'";
394 $sql .=
" OR t.origin_email = '".$db->escape($_SESSION[
'email_customer']).
"')";
396 if (!empty($filter)) {
397 foreach ($filter as $key => $value) {
398 if (strpos($key,
'date')) {
399 $sql .=
" AND ".$db->sanitize($key).
" = '".
$db->escape($value).
"'";
400 } elseif (($key ==
't.fk_user_assign') || ($key ==
't.type_code') || ($key ==
't.category_code') || ($key ==
't.severity_code')) {
401 $sql .=
" AND ".$db->sanitize($key).
" = '".
$db->escape($value).
"'";
402 } elseif ($key ==
't.fk_statut') {
403 if (is_array($value) && count($value) > 0) {
404 $sql .=
" AND ".$db->sanitize($key).
" IN (".
$db->sanitize(implode(
',', $value)).
")";
406 $sql .=
" AND ".$db->sanitize($key).
" = ".((int) $value);
409 $sql .=
" AND ".$db->sanitize($key).
" LIKE '%".
$db->escape($value).
"%'";
414 $sql .=
$db->order($sortfield, $sortorder);
416 $resql =
$db->query($sql);
418 $num_total =
$db->num_rows($resql);
419 if (!empty($limit)) {
420 $sql .=
$db->plimit($limit + 1, $offset);
423 $resql =
$db->query($sql);
425 $num =
$db->num_rows($resql);
427 $baseurl =
getDolGlobalString(
'TICKET_URL_PUBLIC_INTERFACE', DOL_URL_ROOT.
'/public/ticket/');
429 $newcardbutton =
'<a class="marginrightonly" href="'.$baseurl .
'create_ticket.php?action=create'.(!empty($entity) &&
isModEnabled(
'multicompany') ?
'&entity='.$entity :
'').
'&token='.newToken().
'" rel="nofollow noopener"><span class="fa fa-15 fa-plus-circle valignmiddle btnTitle-icon" title="'.
dol_escape_htmltag($langs->trans(
"CreateTicket")).
'"></span></a>';
431 print_barre_liste($langs->trans(
'TicketList'), $page,
'list.php', $param, $sortfield, $sortorder,
'', $num, $num_total,
'ticket', 0, $newcardbutton);
434 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].(!empty($entity) &&
isModEnabled(
'multicompany') ?
'?entity='.$entity :
'').
'" id="searchFormList" >'.
"\n";
435 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
436 print
'<input type="hidden" name="token" value="'.newToken().
'">';
437 print
'<input type="hidden" name="action" value="view_ticketlist">';
438 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
439 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
441 $varpage = empty($contextpage) ? $url_page_current : $contextpage;
442 $selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
445 $parameters = array(
'arrayfields' => $arrayfields);
446 $reshook = $hookmanager->executeHooks(
'printFieldListHeader', $parameters, $object, $action);
447 print $hookmanager->resPrint;
449 print
'<div class="div-table-responsive">';
450 print
'<table class="liste '.($moreforfilter ?
"listwithfilterbefore" :
"").
'">';
453 print
'<tr class="liste_titre">';
455 if (!empty($arrayfields[
't.datec'][
'checked'])) {
456 print
'<td class="liste_titre"></td>';
459 if (!empty($arrayfields[
't.date_read'][
'checked'])) {
460 print
'<td class="liste_titre"></td>';
462 if (!empty($arrayfields[
't.date_close'][
'checked'])) {
463 print
'<td class="liste_titre"></td>';
466 if (!empty($arrayfields[
't.ref'][
'checked'])) {
467 print
'<td class="liste_titre"></td>';
470 if (!empty($arrayfields[
't.subject'][
'checked'])) {
471 print
'<td class="liste_titre">';
472 print
'<input type="text" class="flat maxwidth100" name="search_subject" value="'.$search_subject.
'">';
476 if (!empty($arrayfields[
'type.code'][
'checked'])) {
477 print
'<td class="liste_titre">';
478 $formTicket->selectTypesTickets($search_type,
'search_type',
'', 2, 1, 1, 0,
'maxwidth150', 0, 1);
482 if (!empty($arrayfields[
'category.code'][
'checked'])) {
483 print
'<td class="liste_titre">';
484 $formTicket->selectGroupTickets($search_category,
'search_category',
'(public:=:1)', 2, 1, 1, 0,
'maxwidth150');
488 if (!empty($arrayfields[
'severity.code'][
'checked'])) {
489 print
'<td class="liste_titre">';
490 $formTicket->selectSeveritiesTickets($search_severity,
'search_severity',
'', 2, 1, 1, 0,
'maxwidth150');
494 if (
getDolGlobalString(
'TICKET_SHOW_PROGRESSION') && !empty($arrayfields[
't.progress'][
'checked'])) {
495 print
'<td class="liste_titre"></td>';
498 if (!empty($arrayfields[
't.fk_user_create'][
'checked'])) {
499 print
'<td class="liste_titre"></td>';
502 if (!empty($arrayfields[
't.fk_user_assign'][
'checked'])) {
503 print
'<td class="liste_titre"></td>';
506 if (!empty($arrayfields[
't.tms'][
'checked'])) {
507 print
'<td class="liste_titre"></td>';
511 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
514 $parameters = array(
'arrayfields' => $arrayfields);
515 $reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object);
516 print $hookmanager->resPrint;
519 if (!empty($arrayfields[
't.fk_statut'][
'checked'])) {
520 print
'<td class="liste_titre">';
521 $selected = ($search_fk_status !=
"non_closed" ? $search_fk_status :
'');
527 print
'<td class="liste_titre maxwidthsearch">';
528 $searchpicto = $form->showFilterButtons();
534 print
'<tr class="liste_titre">';
535 if (!empty($arrayfields[
't.datec'][
'checked'])) {
536 print_liste_field_titre($arrayfields[
't.datec'][
'label'], $url_page_current,
't.datec',
'', $param,
'', $sortfield, $sortorder);
538 if (!empty($arrayfields[
't.date_read'][
'checked'])) {
539 print_liste_field_titre($arrayfields[
't.date_read'][
'label'], $url_page_current,
't.date_read',
'', $param,
'', $sortfield, $sortorder);
541 if (!empty($arrayfields[
't.date_close'][
'checked'])) {
542 print_liste_field_titre($arrayfields[
't.date_close'][
'label'], $url_page_current,
't.date_close',
'', $param,
'', $sortfield, $sortorder);
544 if (!empty($arrayfields[
't.ref'][
'checked'])) {
545 print_liste_field_titre($arrayfields[
't.ref'][
'label'], $url_page_current,
't.ref',
'', $param,
'', $sortfield, $sortorder);
547 if (!empty($arrayfields[
't.subject'][
'checked'])) {
550 if (!empty($arrayfields[
'type.code'][
'checked'])) {
551 print_liste_field_titre($arrayfields[
'type.code'][
'label'], $url_page_current,
'type.code',
'', $param,
'', $sortfield, $sortorder);
553 if (!empty($arrayfields[
'category.code'][
'checked'])) {
554 print_liste_field_titre($arrayfields[
'category.code'][
'label'], $url_page_current,
'category.code',
'', $param,
'', $sortfield, $sortorder);
556 if (!empty($arrayfields[
'severity.code'][
'checked'])) {
557 print_liste_field_titre($arrayfields[
'severity.code'][
'label'], $url_page_current,
'severity.code',
'', $param,
'', $sortfield, $sortorder);
559 if (
getDolGlobalString(
'TICKET_SHOW_PROGRESSION') && !empty($arrayfields[
't.progress'][
'checked'])) {
560 print_liste_field_titre($arrayfields[
't.progress'][
'label'], $url_page_current,
't.progress',
'', $param,
'', $sortfield, $sortorder);
562 if (!empty($arrayfields[
't.fk_user_create'][
'checked'])) {
563 print_liste_field_titre($arrayfields[
't.fk_user_create'][
'label'], $url_page_current,
't.fk_user_create',
'', $param,
'', $sortfield, $sortorder);
565 if (!empty($arrayfields[
't.fk_user_assign'][
'checked'])) {
566 print_liste_field_titre($arrayfields[
't.fk_user_assign'][
'label'], $url_page_current,
't.fk_user_assign',
'', $param,
'', $sortfield, $sortorder);
568 if (!empty($arrayfields[
't.tms'][
'checked'])) {
569 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $url_page_current,
't.tms',
'', $param,
'', $sortfield, $sortorder);
573 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
576 $parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
577 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object);
578 print $hookmanager->resPrint;
580 if (!empty($arrayfields[
't.fk_statut'][
'checked'])) {
581 print_liste_field_titre($arrayfields[
't.fk_statut'][
'label'], $url_page_current,
't.fk_statut',
'', $param,
'', $sortfield, $sortorder);
583 print_liste_field_titre($selectedfields, $url_page_current,
"",
'',
'',
'align="right"', $sortfield, $sortorder,
'center maxwidthsearch ');
587 while ($obj =
$db->fetch_object($resql)) {
588 print
'<tr class="oddeven">';
591 if (!empty($arrayfields[
't.datec'][
'checked'])) {
598 if (!empty($arrayfields[
't.date_read'][
'checked'])) {
605 if (!empty($arrayfields[
't.date_close'][
'checked'])) {
612 if (!empty($arrayfields[
't.ref'][
'checked'])) {
613 print
'<td class="nowraponall">';
614 print
'<a rel="nofollow" href="javascript:viewticket(\''.dol_escape_js($obj->track_id).
'\',\
''.dol_escape_js($_SESSION[
'email_customer']).
'\');
">';
615 print img_picto('', 'ticket', 'class="paddingrightonly
"');
622 if (!empty($arrayfields['t.subject']['checked'])) {
624 print '<a rel="nofollow
" href="javascript:viewticket(\
''.
dol_escape_js($obj->track_id).
'\',\
''.dol_escape_js($_SESSION[
'email_customer']).
'\');
">';
631 if (!empty($arrayfields['type.code']['checked'])) {
633 print $obj->type_label;
638 if (!empty($arrayfields['category.code']['checked'])) {
640 print $obj->category_label;
645 if (!empty($arrayfields['severity.code']['checked'])) {
647 print $obj->severity_label;
652 if (getDolGlobalString('TICKET_SHOW_PROGRESSION') && !empty($arrayfields['t.progress']['checked'])) {
654 print $obj->progress;
659 if (!empty($arrayfields['t.fk_user_create']['checked'])) {
660 print '<td title="'.dol_escape_htmltag($obj->origin_email).'">';
661 if ($obj->fk_user_create > 0) {
662 $user_create->firstname = (!empty($obj->user_create_firstname) ? $obj->user_create_firstname : '');
663 $user_create->name = (!empty($obj->user_create_lastname) ? $obj->user_create_lastname : '');
664 $user_create->id = (!empty($obj->fk_user_create) ? $obj->fk_user_create : '');
665 print $user_create->getFullName($langs);
667 print img_picto('', 'email', 'class="paddingrightonly
"');
668 print $langs->trans('Email');
674 if (!empty($arrayfields['t.fk_user_assign']['checked'])) {
676 if ($obj->fk_user_assign > 0) {
677 $user_assign->firstname = (!empty($obj->user_assign_firstname) ? $obj->user_assign_firstname : '');
678 $user_assign->lastname = (!empty($obj->user_assign_lastname) ? $obj->user_assign_lastname : '');
679 $user_assign->id = (!empty($obj->fk_user_assign) ? $obj->fk_user_assign : '');
680 print img_picto('', 'user', 'class="paddingrightonly
"');
681 print $user_assign->getFullName($langs);
686 if (!empty($arrayfields['t.tms']['checked'])) {
687 print '<td>'.dol_print_date($db->jdate($obj->tms), 'dayhour').'</td>';
691 if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
692 foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
693 if (!empty($arrayfields["ef.
".$key]['checked'])) {
695 $cssstring = $extrafields->getCSSClass($key, $object->table_element, 'csslist');
697 print ' class="'.$cssstring.'"';
700 $tmpkey = 'options_'.$key;
701 print $extrafields->showOutputField($key, $obj->$tmpkey, '', $object->table_element);
708 if (!empty($arrayfields['t.fk_statut']['checked'])) {
709 print '<td class="nowraponall
">';
710 $object->status = $obj->fk_statut;
711 if (getDolGlobalString('TICKET_SHOW_PROGRESSION')) {
712 $object->progress = $obj->progress;
714 print $object->getLibStatut(2);
725 print '<tr><td colspan="9
">';
726 print '<span class="opacitymedium
">'.$langs->trans("None
").'</span>';
735 $url_public_ticket = getDolGlobalString('TICKET_URL_PUBLIC_INTERFACE', dol_buildpath('/public/ticket/', 1));
737 print '<form method="POST
" id="form_view_ticket
" name="form_view_ticket
" action="'.$url_public_ticket.'view.php
'.(!empty($entity) && isModEnabled('multicompany
') ? '?entity=
'.$entity : '').'" style="display:none;
">';
738 print '<input type="hidden
" name="token
" value="'.newToken().'">';
739 print '<input type="hidden
" name="action
" value="view_ticket
">';
740 print '<input type="hidden
" name="btn_view_ticket_list
" value="1
">';
741 print '<input type="hidden
" name="track_id
" value="">';
742 print '<input type="hidden
" name="email" value="">';
744 print '<script type="text/javascript
">
745 function viewticket(ticket_id, email) {
746 var form = $("#form_view_ticket
");
747 form.find("input[
name=\\
"track_id\\"]
").val(ticket_id);
748 form.find("input[
name=\\
"email\\"]
").val(email);
754 dol_print_error($db);
757 print '<div class="error
">Not Allowed<br><a href="'.$_SERVER['PHP_SELF
'].'?track_id=
'.$object->track_id.'">'.$langs->trans("GoBack
").'</a></div>';
762 print '<div class="ticketpublicarea ticketlargemargin
">';
764 print '<p class="center opacitymedium
">'.$langs->trans("TicketPublicMsgViewLogIn
").'</p>';
767 print '<div id="form_view_ticket
">';
768 print '<form method="POST
" class="maxwidth1000 center
" name="form_view_ticketlist
" action="'.$_SERVER['PHP_SELF
'].(!empty($entity) && isModEnabled('multicompany
') ? '?entity=
'.$entity : '').'">';
769 print '<input type="hidden
" name="token
" value="'.newToken().'">';
770 print '<input type="hidden
" name="action
" value="view_ticketlist
">';
771 //print '<input type="hidden
" name="search_fk_status
" value="non_closed
">';
773 print '<p><label for="track_id
" style="display:
inline-block
" class="titlefieldcreate left
"><span class="fieldrequired
">';
774 print img_picto($langs->trans("TicketTrackId
"), 'generic', 'class="pictofixedwidth
"');
775 print $langs->trans("OneOfTicketTrackId
");
776 print '</span></label>';
777 print '<br class="showonsmartphone hidden
">';
778 print '<input class="minwidth100
" id="track_id
" name="track_id
" value="'.(GETPOST('track_id
', 'alpha
') ? GETPOST('track_id
', 'alpha
') : '').'" />';
781 print '<p><label for="email" style="display:
inline-block
" class="titlefieldcreate left
"><span class="fieldrequired
">';
782 print img_picto($langs->trans("Email
"), 'email', 'class="pictofixedwidth
"');
783 print $langs->trans('Email').'</span></label>';
784 print '<br class="showonsmartphone hidden
">';
785 print '<input class="minwidth100
" id="email" name="email" value="'.(GETPOST('email', 'alpha
') ? GETPOST('email', 'alpha
') : (!empty($_SESSION['customer_email
']) ? $_SESSION['customer_email
'] : "")).'" />';
788 print '<p style="text-align: center; margin-top: 1.5em;
">';
789 print '<input type="submit
" class="button button-select
" name="btn_view_ticket_list
" value="'.$langs->trans('ViewMyTicketList
').'" />';
791 print '<input type="submit
" class="button button-cancel
" name="cancel
" value="'.$langs->trans("Cancel").'">';
800if (getDolGlobalInt('TICKET_SHOW_COMPANY_FOOTER')) {
802 htmlPrintOnlineFooter($mysoc, $langs, 0, $suffix, $object);
805llxFooter('', 'public');
if(! $sortfield) if(! $sortorder) $object
static getValidAddress($address, $format, $encode=0, $maxnumberofemail=0)
Return a formatted address string for SMTP protocol.
Class to manage Dolibarr users.
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as p label as s rowid as s nom as s email
Sender: Who sends the email ("Sender" has sent emails on behalf of "From").
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0)
Returns text escaped for inclusion into JavaScript code.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
isValidEmail($address, $acceptsupervisorkey=0, $acceptuserkey=0)
Return true if email syntax is ok.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
multi select button
0 = Do not include form tag and submit button -1 = Do not include form tag but include submit button
Class to generate the form for creating a new ticket.
$conf db name
Only used if Module[ID]Name translation string is not found.
httponly_accessforbidden($message='1', $http_response_code=403, $stringalreadysanitized=0)
Show a message to say access is forbidden and stop program.
llxHeaderTicket($title, $head="", $disablejs=0, $disablehead=0, $arrayofjs=[], $arrayofcss=[])
Show http header, open body tag and show HTML header banner for public pages for tickets.