mirror of https://github.com/itflow-org/itflow
Ticket Statuses from DB
This commit is contained in:
parent
63f35d5760
commit
667a93210c
|
|
@ -7,15 +7,13 @@ $order = "DESC";
|
|||
|
||||
require_once "inc_all_client.php";
|
||||
|
||||
if (isset($_GET['status']) && ($_GET['status']) == 'Open') {
|
||||
$status = 'Open';
|
||||
$ticket_status_snippet = "ticket_status != 'Closed'";
|
||||
} elseif (isset($_GET['status']) && ($_GET['status']) == 'Closed') {
|
||||
if (isset($_GET['status']) && ($_GET['status']) == 'Closed') {
|
||||
$status = 'Closed';
|
||||
$ticket_status_snippet = "ticket_status = 'Closed'";
|
||||
$ticket_status_snippet = "ticket_closed_at IS NOT NULL";
|
||||
} else {
|
||||
// Default - Show open tickets
|
||||
$status = 'Open';
|
||||
$ticket_status_snippet = "ticket_status != 'Closed'";
|
||||
$ticket_status_snippet = "ticket_closed_at IS NULL";
|
||||
}
|
||||
|
||||
if (isset($_GET['billable']) && ($_GET['billable']) == '1') {
|
||||
|
|
@ -50,12 +48,12 @@ $sql = mysqli_query(
|
|||
$num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
||||
|
||||
//Get Total tickets open
|
||||
$sql_total_tickets_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_client_id = $client_id AND ticket_status != 'Closed'");
|
||||
$sql_total_tickets_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_client_id = $client_id AND ticket_closed_at IS NULL");
|
||||
$row = mysqli_fetch_array($sql_total_tickets_open);
|
||||
$total_tickets_open = intval($row['total_tickets_open']);
|
||||
|
||||
//Get Total tickets closed
|
||||
$sql_total_tickets_closed = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_closed FROM tickets WHERE ticket_client_id = $client_id AND ticket_status = 'Closed'");
|
||||
$sql_total_tickets_closed = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_closed FROM tickets WHERE ticket_client_id = $client_id AND ticket_closed_at IS NOT NULL");
|
||||
$row = mysqli_fetch_array($sql_total_tickets_closed);
|
||||
$total_tickets_closed = intval($row['total_tickets_closed']);
|
||||
|
||||
|
|
@ -142,14 +140,15 @@ $total_scheduled_tickets = intval($row['total_scheduled_tickets']);
|
|||
$ticket_number = nullable_htmlentities($row['ticket_number']);
|
||||
$ticket_subject = nullable_htmlentities($row['ticket_subject']);
|
||||
$ticket_priority = nullable_htmlentities($row['ticket_priority']);
|
||||
$ticket_status = sanitizeInput(getTicketStatusName($row['ticket_status']));
|
||||
$ticket_status_id = intval($row['ticket_status']);
|
||||
$ticket_status_name = sanitizeInput(getTicketStatusName($row['ticket_status']));
|
||||
$ticket_billable = intval($row['ticket_billable']);
|
||||
$ticket_created_at = nullable_htmlentities($row['ticket_created_at']);
|
||||
$ticket_created_at_time_ago = timeAgo($row['ticket_created_at']);
|
||||
$ticket_updated_at = nullable_htmlentities($row['ticket_updated_at']);
|
||||
$ticket_updated_at_time_ago = timeAgo($row['ticket_updated_at']);
|
||||
if (empty($ticket_updated_at)) {
|
||||
if ($ticket_status == $config_ticket_status_id_closed || $ticket_status == "Closed") {
|
||||
if (!empty($ticket_closed_at)) {
|
||||
$ticket_updated_at_display = "<p>Never</p>";
|
||||
} else {
|
||||
$ticket_updated_at_display = "<p class='text-danger'>Never</p>";
|
||||
|
|
@ -159,7 +158,7 @@ $total_scheduled_tickets = intval($row['total_scheduled_tickets']);
|
|||
}
|
||||
$ticket_closed_at = nullable_htmlentities($row['ticket_closed_at']);
|
||||
|
||||
$ticket_status_color = getTicketStatusColor($ticket_status);
|
||||
$ticket_status_color = getTicketStatusColor($ticket_status_id);
|
||||
|
||||
if ($ticket_priority == "High") {
|
||||
$ticket_priority_display = "<span class='p-2 badge badge-danger'>$ticket_priority</span>";
|
||||
|
|
@ -173,7 +172,7 @@ $total_scheduled_tickets = intval($row['total_scheduled_tickets']);
|
|||
|
||||
$ticket_assigned_to = intval($row['ticket_assigned_to']);
|
||||
if (empty($ticket_assigned_to)) {
|
||||
if ($ticket_status == $config_ticket_status_id_closed || $ticket_status == "Closed") {
|
||||
if (!empty($ticket_closed_at)) {
|
||||
$ticket_assigned_to_display = "<p>Not Assigned</p>";
|
||||
} else {
|
||||
$ticket_assigned_to_display = "<p class='text-danger'>Not Assigned</p>";
|
||||
|
|
@ -256,7 +255,7 @@ $total_scheduled_tickets = intval($row['total_scheduled_tickets']);
|
|||
|
||||
<!-- Ticket Status -->
|
||||
<td>
|
||||
<span class='p-2 badge badge-pill badge-<?php echo $ticket_status_color; ?>'><?php echo $ticket_status; ?></span>
|
||||
<span class='p-2 badge badge-pill badge-<?php echo $ticket_status_color; ?>'><?php echo $ticket_status_name; ?></span>
|
||||
</td>
|
||||
|
||||
<!-- Ticket Assigned agent -->
|
||||
|
|
@ -281,7 +280,7 @@ $total_scheduled_tickets = intval($row['total_scheduled_tickets']);
|
|||
|
||||
<?php
|
||||
// Edit actions, for open tickets
|
||||
if ($ticket_status !== $config_ticket_status_id_closed || $ticket_status !== "Closed") {
|
||||
if (empty($ticket_closed_at)) {
|
||||
|
||||
require "ticket_assign_modal.php";
|
||||
|
||||
|
|
|
|||
22
cron.php
22
cron.php
|
|
@ -52,6 +52,10 @@ $config_ticket_client_general_notifications = intval($row['config_ticket_client_
|
|||
$config_ticket_autoclose = intval($row['config_ticket_autoclose']);
|
||||
$config_ticket_autoclose_hours = intval($row['config_ticket_autoclose_hours']);
|
||||
$config_ticket_new_ticket_notification_email = sanitizeInput($row['config_ticket_new_ticket_notification_email']);
|
||||
$config_ticket_status_id_new = intval($row['config_ticket_status_id_new']);
|
||||
$config_ticket_status_id_open = intval($row['config_ticket_status_id_open']);
|
||||
$config_ticket_status_id_autoclose = intval($row['config_ticket_status_id_autoclose']);
|
||||
$config_ticket_status_id_closed = intval($row['config_ticket_status_id_closed']);
|
||||
|
||||
// Get Config for Telemetry
|
||||
$config_theme = $row['config_theme'];
|
||||
|
|
@ -225,9 +229,7 @@ foreach ($warranty_alert_array as $day) {
|
|||
|
||||
// Notify of New Tickets
|
||||
// Get Ticket Pending Assignment
|
||||
$sql_tickets_pending_assignment = mysqli_query($mysqli,"SELECT ticket_id FROM tickets
|
||||
WHERE ticket_status = 'New'"
|
||||
);
|
||||
$sql_tickets_pending_assignment = mysqli_query($mysqli,"SELECT ticket_id FROM tickets WHERE ticket_status = '$config_ticket_status_id_new'");
|
||||
|
||||
$tickets_pending_assignment = mysqli_num_rows($sql_tickets_pending_assignment);
|
||||
|
||||
|
|
@ -258,9 +260,9 @@ if (mysqli_num_rows($sql_scheduled_tickets) > 0) {
|
|||
$contact_id = intval($row['scheduled_ticket_contact_id']);
|
||||
$asset_id = intval($row['scheduled_ticket_asset_id']);
|
||||
|
||||
$ticket_status = 'New'; // Default
|
||||
$ticket_status = $config_ticket_status_id_new; // Default
|
||||
if ($assigned_id > 0) {
|
||||
$ticket_status = 'Open'; // Set to open if we've auto-assigned an agent
|
||||
$ticket_status = $config_ticket_status_id_open; // Set to open if we've auto-assigned an agent
|
||||
}
|
||||
|
||||
// Assign this new ticket the next ticket number
|
||||
|
|
@ -381,7 +383,7 @@ if ($config_ticket_autoclose == 1) {
|
|||
$sql_tickets_to_chase = mysqli_query(
|
||||
$mysqli,
|
||||
"SELECT * FROM tickets
|
||||
WHERE ticket_status = 'Auto Close'
|
||||
WHERE ticket_status = '$config_ticket_status_id_autoclose'
|
||||
AND ticket_updated_at < NOW() - INTERVAL $config_ticket_autoclose_hours HOUR"
|
||||
);
|
||||
|
||||
|
|
@ -395,7 +397,7 @@ if ($config_ticket_autoclose == 1) {
|
|||
$ticket_assigned_to = sanitizeInput($row['ticket_assigned_to']);
|
||||
$client_id = intval($row['ticket_client_id']);
|
||||
|
||||
mysqli_query($mysqli,"UPDATE tickets SET ticket_status = 'Closed', ticket_closed_at = NOW(), ticket_closed_by = $ticket_assigned_to WHERE ticket_id = $ticket_id");
|
||||
mysqli_query($mysqli,"UPDATE tickets SET ticket_status = '$config_ticket_status_id_closed', ticket_closed_at = NOW(), ticket_closed_by = $ticket_assigned_to WHERE ticket_id = $ticket_id");
|
||||
|
||||
//Logging
|
||||
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Ticket', log_action = 'Closed', log_description = '$ticket_prefix$ticket_number auto closed', log_entity_id = $ticket_id");
|
||||
|
|
@ -410,7 +412,7 @@ if ($config_ticket_autoclose == 1) {
|
|||
"SELECT contact_name, contact_email, ticket_id, ticket_prefix, ticket_number, ticket_subject, ticket_status, ticket_client_id FROM tickets
|
||||
LEFT JOIN clients ON ticket_client_id = client_id
|
||||
LEFT JOIN contacts ON ticket_contact_id = contact_id
|
||||
WHERE ticket_status = 'Auto Close'
|
||||
WHERE ticket_status = '$config_ticket_status_id_autoclose'
|
||||
AND ticket_updated_at < NOW() - INTERVAL 48 HOUR"
|
||||
);
|
||||
|
||||
|
|
@ -422,7 +424,7 @@ if ($config_ticket_autoclose == 1) {
|
|||
$ticket_prefix = sanitizeInput($row['ticket_prefix']);
|
||||
$ticket_number = intval($row['ticket_number']);
|
||||
$ticket_subject = sanitizeInput($row['ticket_subject']);
|
||||
$ticket_status = sanitizeInput($row['ticket_status']);
|
||||
$ticket_status = sanitizeInput( getTicketStatusName($row['ticket_status']));
|
||||
$client_id = intval($row['ticket_client_id']);
|
||||
|
||||
$sql_ticket_reply = mysqli_query($mysqli, "SELECT ticket_reply FROM ticket_replies WHERE ticket_reply_type = 'Public' AND ticket_reply_ticket_id = $ticket_id ORDER BY ticket_reply_created_at DESC LIMIT 1");
|
||||
|
|
@ -431,7 +433,7 @@ if ($config_ticket_autoclose == 1) {
|
|||
|
||||
$subject = "Ticket pending closure - [$ticket_prefix$ticket_number] - $ticket_subject";
|
||||
|
||||
$body = "<i style=\'color: #808080\'>##- Please type your reply above this line -##</i><br><br>Hello, $contact_name<br><br>This is an automatic friendly reminder that your ticket regarding \"$ticket_subject\" will be closed, unless you respond.<br><br>--------------------------------<br>$ticket_reply--------------------------------<br><br>If your issue is resolved, you can ignore this email - the ticket will automatically close. If you need further assistance, please respond to this email. <br><br>Ticket: $ticket_prefix$ticket_number<br>Subject: $ticket_subject<br>Status: $ticket_status<br>Portal: https://$config_base_url/portal/ticket.php?id=$ticket_id<br><br>--<br>$company_name - Support<br>$config_ticket_from_email<br>$company_phone";
|
||||
$body = "<i style=\'color: #808080\'>##- Please type your reply above this line -##</i><br><br>Hello, $contact_name<br><br>This is an automatic friendly reminder that your ticket regarding \"$ticket_subject\" will be closed, unless you respond.<br><br>--------------------------------<br>$ticket_reply--------------------------------<br><br>If your issue is resolved, you can ignore this email - the ticket will automatically close. If you need further assistance, please respond to this email. <br><br>Ticket: $ticket_prefix$ticket_number<br>Subject: $ticket_subject<br>Status: $ticket_status <br>Portal: https://$config_base_url/portal/ticket.php?id=$ticket_id<br><br>--<br>$company_name - Support<br>$config_ticket_from_email<br>$company_phone";
|
||||
|
||||
$data = [
|
||||
[
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ $allowed_extensions = array('jpg', 'jpeg', 'gif', 'png', 'webp', 'pdf', 'txt', '
|
|||
function addTicket($contact_id, $contact_name, $contact_email, $client_id, $date, $subject, $message, $attachments) {
|
||||
|
||||
// Access global variables
|
||||
global $mysqli,$config_app_name, $company_name, $company_phone, $config_ticket_prefix, $config_ticket_client_general_notifications, $config_ticket_new_ticket_notification_email, $config_base_url, $config_ticket_from_name, $config_ticket_from_email, $config_smtp_host, $config_smtp_port, $config_smtp_encryption, $config_smtp_username, $config_smtp_password, $allowed_extensions;
|
||||
global $mysqli,$config_app_name, $company_name, $company_phone, $config_ticket_prefix, $config_ticket_client_general_notifications, $config_ticket_new_ticket_notification_email, $config_ticket_status_id_new, $config_ticket_status_id_closed, $config_base_url, $config_ticket_from_name, $config_ticket_from_email, $config_smtp_host, $config_smtp_port, $config_smtp_encryption, $config_smtp_username, $config_smtp_password, $allowed_extensions;
|
||||
|
||||
// Get the next Ticket Number and add 1 for the new ticket number
|
||||
$ticket_number_sql = mysqli_fetch_array(mysqli_query($mysqli, "SELECT config_ticket_next_number FROM settings WHERE company_id = 1"));
|
||||
|
|
@ -122,7 +122,7 @@ function addTicket($contact_id, $contact_name, $contact_email, $client_id, $date
|
|||
$message = nl2br($message);
|
||||
$message = mysqli_escape_string($mysqli, "<i>Email from: $contact_email at $date:-</i> <br><br>$message");
|
||||
|
||||
mysqli_query($mysqli, "INSERT INTO tickets SET ticket_prefix = '$config_ticket_prefix', ticket_number = $ticket_number, ticket_subject = '$subject', ticket_details = '$message', ticket_priority = 'Low', ticket_status = 'New', ticket_created_by = 0, ticket_contact_id = $contact_id, ticket_client_id = $client_id");
|
||||
mysqli_query($mysqli, "INSERT INTO tickets SET ticket_prefix = '$config_ticket_prefix', ticket_number = $ticket_number, ticket_subject = '$subject', ticket_details = '$message', ticket_priority = 'Low', ticket_status = '$config_ticket_status_id_new', ticket_created_by = 0, ticket_contact_id = $contact_id, ticket_client_id = $client_id");
|
||||
$id = mysqli_insert_id($mysqli);
|
||||
|
||||
// Logging
|
||||
|
|
@ -213,7 +213,7 @@ function addReply($from_email, $date, $subject, $ticket_number, $message, $attac
|
|||
// Add email as a comment/reply to an existing ticket
|
||||
|
||||
// Access global variables
|
||||
global $mysqli, $config_app_name, $company_name, $company_phone, $config_ticket_prefix, $config_base_url, $config_ticket_from_name, $config_ticket_from_email, $config_smtp_host, $config_smtp_port, $config_smtp_encryption, $config_smtp_username, $config_smtp_password, $allowed_extensions;
|
||||
global $mysqli, $config_app_name, $company_name, $company_phone, $config_ticket_prefix, $config_ticket_status_id_open, $config_ticket_status_id_closed, $config_base_url, $config_ticket_from_name, $config_ticket_from_email, $config_smtp_host, $config_smtp_port, $config_smtp_encryption, $config_smtp_username, $config_smtp_password, $allowed_extensions;
|
||||
|
||||
// Set default reply type
|
||||
$ticket_reply_type = 'Client';
|
||||
|
|
@ -243,7 +243,7 @@ function addReply($from_email, $date, $subject, $ticket_number, $message, $attac
|
|||
$client_name = sanitizeInput($row['client_name']);
|
||||
|
||||
// Check ticket isn't closed - tickets can't be re-opened
|
||||
if ($ticket_status == "Closed") {
|
||||
if ($ticket_status == $config_ticket_status_id_closed) {
|
||||
mysqli_query($mysqli, "INSERT INTO notifications SET notification_type = 'Ticket', notification = 'Email parser: $from_email attempted to re-open ticket $config_ticket_prefix$ticket_number (ID $ticket_id) - check inbox manually to see email', notification_action = 'ticket.php?ticket_id=$ticket_id', notification_client_id = $client_id");
|
||||
|
||||
$email_subject = "Action required: This ticket is already closed";
|
||||
|
|
@ -360,7 +360,7 @@ function addReply($from_email, $date, $subject, $ticket_number, $message, $attac
|
|||
}
|
||||
|
||||
// Update Ticket Last Response Field & set ticket to open as client has replied
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 'Open' WHERE ticket_id = $ticket_id AND ticket_client_id = $client_id LIMIT 1");
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = '$config_ticket_status_id_open' WHERE ticket_id = $ticket_id AND ticket_client_id = $client_id LIMIT 1");
|
||||
|
||||
echo "Updated existing ticket.<br>";
|
||||
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Ticket', log_action = 'Update', log_description = 'Email parser: Client contact $from_email updated ticket $config_ticket_prefix$ticket_number ($subject)', log_client_id = $client_id");
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ if ($user_config_dashboard_financial_enable == 1) {
|
|||
//Define var so it doesnt throw errors in logs
|
||||
$largest_income_month = 0;
|
||||
|
||||
|
||||
|
||||
//Get Total income
|
||||
$sql_total_payments_to_invoices = mysqli_query($mysqli, "SELECT SUM(payment_amount) AS total_payments_to_invoices FROM payments WHERE YEAR(payment_date) = $year");
|
||||
$row = mysqli_fetch_array($sql_total_payments_to_invoices);
|
||||
|
|
@ -169,7 +169,7 @@ if ($user_config_dashboard_financial_enable == 1) {
|
|||
|
||||
if ($config_module_enable_ticketing && $config_module_enable_accounting) {
|
||||
//Get Unbilled, closed tickets
|
||||
$sql_unbilled_tickets = mysqli_query($mysqli, "SELECT COUNT('ticket_id') AS unbilled_tickets FROM tickets WHERE ticket_status = 'Closed' AND ticket_billable = 1 AND ticket_invoice_id = 0 AND YEAR(ticket_created_at) = $year");
|
||||
$sql_unbilled_tickets = mysqli_query($mysqli, "SELECT COUNT('ticket_id') AS unbilled_tickets FROM tickets WHERE ticket_closed_at IS NOT NULL AND ticket_billable = 1 AND ticket_invoice_id = 0 AND YEAR(ticket_created_at) = $year");
|
||||
$row = mysqli_fetch_array($sql_unbilled_tickets);
|
||||
$unbilled_tickets = intval($row['unbilled_tickets']);
|
||||
} else {
|
||||
|
|
@ -772,13 +772,14 @@ if ($user_config_dashboard_technical_enable == 1) {
|
|||
$ticket_number = intval($row['ticket_number']);
|
||||
$ticket_subject = nullable_htmlentities($row['ticket_subject']);
|
||||
$ticket_priority = nullable_htmlentities($row['ticket_priority']);
|
||||
$ticket_status = nullable_htmlentities($row['ticket_status']);
|
||||
$ticket_status_id = intval($row['ticket_status']);
|
||||
$ticket_status_name = sanitizeInput(getTicketStatusName($row['ticket_status']));
|
||||
$ticket_created_at = nullable_htmlentities($row['ticket_created_at']);
|
||||
$ticket_created_at_time_ago = timeAgo($row['ticket_created_at']);
|
||||
$ticket_updated_at = nullable_htmlentities($row['ticket_updated_at']);
|
||||
$ticket_updated_at_time_ago = timeAgo($row['ticket_updated_at']);
|
||||
if (empty($ticket_updated_at)) {
|
||||
if ($ticket_status == "Closed") {
|
||||
if (!empty($ticket_closed_at)) {
|
||||
$ticket_updated_at_display = "<p>Never</p>";
|
||||
} else {
|
||||
$ticket_updated_at_display = "<p class='text-danger'>Never</p>";
|
||||
|
|
@ -791,17 +792,7 @@ if ($user_config_dashboard_technical_enable == 1) {
|
|||
$contact_id = intval($row['ticket_contact_id']);
|
||||
$contact_name = nullable_htmlentities($row['contact_name']);
|
||||
|
||||
if ($ticket_status == "New") {
|
||||
$ticket_status_color = "danger";
|
||||
} elseif ($ticket_status == "Open") {
|
||||
$ticket_status_color = "primary";
|
||||
} elseif ($ticket_status == "On Hold") {
|
||||
$ticket_status_color = "success";
|
||||
} elseif ($ticket_status == "Auto Close") {
|
||||
$ticket_status_color = "dark";
|
||||
} elseif ($ticket_status == "Closed") {
|
||||
$ticket_status_color = "dark";
|
||||
}
|
||||
$ticket_status_color = getTicketStatusColor($ticket_status_id);
|
||||
|
||||
if ($ticket_priority == "High") {
|
||||
$ticket_priority_color = "danger";
|
||||
|
|
@ -831,7 +822,7 @@ if ($user_config_dashboard_technical_enable == 1) {
|
|||
</td>
|
||||
<td><?php echo $contact_display; ?></td>
|
||||
<td><span class='p-2 badge badge-pill badge-<?php echo $ticket_priority_color; ?>'><?php echo $ticket_priority; ?></span></td>
|
||||
<td><span class='p-2 badge badge-pill badge-<?php echo $ticket_status_color; ?>'><?php echo $ticket_status; ?></span></td>
|
||||
<td><span class='p-2 badge badge-pill badge-<?php echo $ticket_status_color; ?>'><?php echo $ticket_status_name; ?></span></td>
|
||||
<td><?php echo $ticket_updated_at_display; ?></td>
|
||||
</tr>
|
||||
|
||||
|
|
|
|||
|
|
@ -1689,8 +1689,69 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) {
|
|||
|
||||
if (CURRENT_DATABASE_VERSION == '1.1.3') {
|
||||
|
||||
mysqli_query($mysqli, "ALTER TABLE `networks` ADD `network_subnet` VARCHAR(200) DEFAULT NULL AFTER `network`");
|
||||
mysqli_query($mysqli, "ALTER TABLE `networks` ADD `network_primary_dns` VARCHAR(200) DEFAULT NULL AFTER `network_gateway`");
|
||||
mysqli_query($mysqli, "ALTER TABLE `networks` ADD `network_secondary_dns` VARCHAR(200) DEFAULT NULL AFTER `network_primary_dns`");
|
||||
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.1.4'");
|
||||
}
|
||||
|
||||
if (CURRENT_DATABASE_VERSION == '1.1.4') {
|
||||
|
||||
// Add Project Templates
|
||||
mysqli_query($mysqli, "CREATE TABLE `project_templates` (
|
||||
`project_template_id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`project_template_name` VARCHAR(200) NOT NULL,
|
||||
`project_template_description` TEXT DEFAULT NULL,
|
||||
`project_template_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
`project_template_updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
`project_template_archived_at` DATETIME DEFAULT NULL,
|
||||
PRIMARY KEY (`project_template_id`)
|
||||
)");
|
||||
|
||||
// Add Ticket Templates
|
||||
mysqli_query($mysqli, "CREATE TABLE `ticket_templates` (
|
||||
`ticket_template_id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`ticket_template_name` VARCHAR(200) NOT NULL,
|
||||
`ticket_template_description` TEXT DEFAULT NULL,
|
||||
`ticket_template_subject` VARCHAR(200) DEFAULT NULL,
|
||||
`ticket_template_details` LONGTEXT DEFAULT NULL,
|
||||
`ticket_template_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
`ticket_template_updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
`ticket_template_archived_at` DATETIME DEFAULT NULL,
|
||||
`ticket_template_project_template_id` INT(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`ticket_template_id`)
|
||||
)");
|
||||
|
||||
// Add Task Templates
|
||||
mysqli_query($mysqli, "CREATE TABLE `task_templates` (
|
||||
`task_template_id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`task_template_name` VARCHAR(200) NOT NULL,
|
||||
`task_template_description` TEXT DEFAULT NULL,
|
||||
`task_template_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
`task_template_updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
`task_template_archived_at` DATETIME DEFAULT NULL,
|
||||
`task_template_ticket_template_id` INT(11) NOT NULL,
|
||||
PRIMARY KEY (`task_template_id`)
|
||||
)");
|
||||
|
||||
mysqli_query($mysqli, "ALTER TABLE `projects` ADD `project_completed_at` DATETIME DEFAULT NULL AFTER `project_updated_at`");
|
||||
|
||||
mysqli_query($mysqli, "ALTER TABLE `tickets` ADD `ticket_project_id` INT(11) NOT NULL DEFAULT 0 AFTER `ticket_invoice_id`");
|
||||
|
||||
mysqli_query($mysqli, "ALTER TABLE `tasks` DROP `task_template`");
|
||||
mysqli_query($mysqli, "ALTER TABLE `tasks` DROP `task_finish_date`");
|
||||
mysqli_query($mysqli, "ALTER TABLE `tasks` DROP `task_project_id`");
|
||||
|
||||
mysqli_query($mysqli, "ALTER TABLE `projects` DROP `project_template`");
|
||||
|
||||
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.1.5'");
|
||||
}
|
||||
|
||||
if (CURRENT_DATABASE_VERSION == '1.1.5') {
|
||||
|
||||
// Add new ticket_statuses table
|
||||
mysqli_query($mysqli, "CREATE TABLE `ticket_statuses` (
|
||||
mysqli_query($mysqli,
|
||||
"CREATE TABLE `ticket_statuses` (
|
||||
`ticket_status_id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`ticket_status_name` VARCHAR(200) NOT NULL,
|
||||
`ticket_status_color` VARCHAR(200) NOT NULL,
|
||||
|
|
@ -1702,7 +1763,7 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) {
|
|||
mysqli_query($mysqli, "INSERT INTO ticket_statuses SET ticket_status_name = 'New', ticket_status_color = 'danger'"); // Default ID for new tickets is 1
|
||||
mysqli_query($mysqli, "INSERT INTO ticket_statuses SET ticket_status_name = 'Open', ticket_status_color = 'primary'"); // 2
|
||||
mysqli_query($mysqli, "INSERT INTO ticket_statuses SET ticket_status_name = 'On Hold', ticket_status_color = 'success'"); // 3
|
||||
mysqli_query($mysqli, "INSERT INTO ticket_statuses SET ticket_status_name = 'Auto Close', ticket_status_color = 'dark'"); // 5
|
||||
mysqli_query($mysqli, "INSERT INTO ticket_statuses SET ticket_status_name = 'Auto Close', ticket_status_color = 'dark'"); // 4
|
||||
mysqli_query($mysqli, "INSERT INTO ticket_statuses SET ticket_status_name = 'Closed', ticket_status_color = 'dark'"); // 5
|
||||
|
||||
// Add default values above to settings
|
||||
|
|
@ -1711,13 +1772,20 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) {
|
|||
mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_ticket_status_id_autoclose` int(1) NOT NULL DEFAULT '4' AFTER `config_ticket_status_id_open`");
|
||||
mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_ticket_status_id_closed` int(1) NOT NULL DEFAULT '5' AFTER `config_ticket_status_id_autoclose`");
|
||||
|
||||
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.1.4'");
|
||||
// Update existing tickets to use new values
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 1 WHERE ticket_status = 'New'"); // New
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 2 WHERE ticket_status = 'Open'"); // Open
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 3 WHERE ticket_status = 'On Hold'"); // On Hold
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 4 WHERE ticket_status = 'Auto Close'"); // Auto Close
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 5 WHERE ticket_closed_at IS NOT NULL"); // Closed
|
||||
|
||||
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.1.6'");
|
||||
}
|
||||
|
||||
// if (CURRENT_DATABASE_VERSION == '1.1.4') {
|
||||
// // Insert queries here required to update to DB version 1.1.5
|
||||
// if (CURRENT_DATABASE_VERSION == '1.1.6') {
|
||||
// // Insert queries here required to update to DB version 1.1.7
|
||||
// // Then, update the database to the next sequential version
|
||||
// mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.1.5'");
|
||||
// mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.1.7'");
|
||||
// }
|
||||
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@
|
|||
* It is used in conjunction with database_updates.php
|
||||
*/
|
||||
|
||||
DEFINE("LATEST_DATABASE_VERSION", "1.1.4");
|
||||
DEFINE("LATEST_DATABASE_VERSION", "1.1.6");
|
||||
|
||||
|
|
|
|||
81
db.sql
81
db.sql
|
|
@ -848,7 +848,10 @@ CREATE TABLE `networks` (
|
|||
`network_description` text DEFAULT NULL,
|
||||
`network_vlan` int(11) DEFAULT NULL,
|
||||
`network` varchar(200) NOT NULL,
|
||||
`network_subnet` varchar(200) DEFAULT NULL,
|
||||
`network_gateway` varchar(200) NOT NULL,
|
||||
`network_primary_dns` varchar(200) DEFAULT NULL,
|
||||
`network_secondary_dns` varchar(200) DEFAULT NULL,
|
||||
`network_dhcp_range` varchar(200) DEFAULT NULL,
|
||||
`network_notes` text DEFAULT NULL,
|
||||
`network_created_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
|
|
@ -928,6 +931,24 @@ CREATE TABLE `products` (
|
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `project_templates`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `project_templates`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `project_templates` (
|
||||
`project_template_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`project_template_name` varchar(200) NOT NULL,
|
||||
`project_template_description` text DEFAULT NULL,
|
||||
`project_template_created_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`project_template_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
|
||||
`project_template_archived_at` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`project_template_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `projects`
|
||||
--
|
||||
|
|
@ -937,11 +958,11 @@ DROP TABLE IF EXISTS `projects`;
|
|||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `projects` (
|
||||
`project_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`project_template` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`project_name` varchar(255) NOT NULL,
|
||||
`project_description` text DEFAULT NULL,
|
||||
`project_created_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`project_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
|
||||
`project_completed_at` datetime DEFAULT NULL,
|
||||
`project_archived_at` datetime DEFAULT NULL,
|
||||
`project_client_id` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`project_id`)
|
||||
|
|
@ -1483,6 +1504,25 @@ CREATE TABLE `tags` (
|
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `task_templates`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `task_templates`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `task_templates` (
|
||||
`task_template_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`task_template_name` varchar(200) NOT NULL,
|
||||
`task_template_description` text DEFAULT NULL,
|
||||
`task_template_created_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`task_template_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
|
||||
`task_template_archived_at` datetime DEFAULT NULL,
|
||||
`task_template_ticket_template_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`task_template_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `tasks`
|
||||
--
|
||||
|
|
@ -1492,17 +1532,14 @@ DROP TABLE IF EXISTS `tasks`;
|
|||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `tasks` (
|
||||
`task_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`task_template` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`task_name` varchar(255) NOT NULL,
|
||||
`task_description` text DEFAULT NULL,
|
||||
`task_finish_date` date DEFAULT NULL,
|
||||
`task_status` varchar(255) DEFAULT NULL,
|
||||
`task_completed_at` datetime DEFAULT NULL,
|
||||
`task_completed_by` int(11) DEFAULT NULL,
|
||||
`task_created_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`task_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
|
||||
`task_ticket_id` int(11) DEFAULT NULL,
|
||||
`task_project_id` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`task_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
|
@ -1564,17 +1601,38 @@ CREATE TABLE `ticket_replies` (
|
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `ticket_templates`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ticket_templates`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `ticket_templates` (
|
||||
`ticket_template_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ticket_template_name` varchar(200) NOT NULL,
|
||||
`ticket_template_description` text DEFAULT NULL,
|
||||
`ticket_template_subject` varchar(200) DEFAULT NULL,
|
||||
`ticket_template_details` longtext DEFAULT NULL,
|
||||
`ticket_template_created_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`ticket_template_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
|
||||
`ticket_template_archived_at` datetime DEFAULT NULL,
|
||||
`ticket_template_project_template_id` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`ticket_template_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `ticket_statuses`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ticket_statuses`;
|
||||
CREATE TABLE IF NOT EXISTS `ticket_statuses` (
|
||||
`ticket_status_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ticket_status_name` varchar(200) NOT NULL,
|
||||
`ticket_status_color` varchar(200) NOT NULL,
|
||||
`ticket_status_active` TINYINT(1) NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`ticket_status_id`)
|
||||
`ticket_status_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ticket_status_name` varchar(200) NOT NULL,
|
||||
`ticket_status_color` varchar(200) NOT NULL,
|
||||
`ticket_status_active` TINYINT(1) NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`ticket_status_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
--
|
||||
|
|
@ -1620,7 +1678,7 @@ CREATE TABLE `tickets` (
|
|||
`ticket_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ticket_prefix` varchar(200) DEFAULT NULL,
|
||||
`ticket_number` int(11) NOT NULL,
|
||||
`ticket_source` varchar(255) DEFAULT NULL,
|
||||
`ticket_source` varchar(255) DEFAULT NULL COMMENT 'Where the Ticket Came from\r\nEmail, Client Portal, In-App, Project Template',
|
||||
`ticket_category` varchar(200) DEFAULT NULL,
|
||||
`ticket_subject` varchar(200) NOT NULL,
|
||||
`ticket_details` longtext NOT NULL,
|
||||
|
|
@ -1644,6 +1702,7 @@ CREATE TABLE `tickets` (
|
|||
`ticket_location_id` int(11) NOT NULL DEFAULT 0,
|
||||
`ticket_asset_id` int(11) NOT NULL DEFAULT 0,
|
||||
`ticket_invoice_id` int(11) NOT NULL DEFAULT 0,
|
||||
`ticket_project_id` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`ticket_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
|
@ -1820,4 +1879,4 @@ CREATE TABLE `vendors` (
|
|||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2024-03-19 17:11:58
|
||||
-- As of 2024 03 29
|
||||
|
|
|
|||
|
|
@ -1142,41 +1142,21 @@ function getTicketStatusColor($ticket_status) {
|
|||
|
||||
global $mysqli;
|
||||
|
||||
if (intval($ticket_status)) {
|
||||
$status_id = intval($ticket_status);
|
||||
$row = mysqli_fetch_array(mysqli_query($mysqli, "SELECT * FROM ticket_statuses WHERE ticket_status_id = $status_id LIMIT 1"));
|
||||
$status_id = intval($ticket_status);
|
||||
$row = mysqli_fetch_array(mysqli_query($mysqli, "SELECT ticket_status_color FROM ticket_statuses WHERE ticket_status_id = $status_id LIMIT 1"));
|
||||
|
||||
if ($row) {
|
||||
return nullable_htmlentities($row['ticket_status_color']);
|
||||
}
|
||||
|
||||
// Default return
|
||||
return "Unknown";
|
||||
if ($row) {
|
||||
return nullable_htmlentities($row['ticket_status_color']);
|
||||
}
|
||||
|
||||
// Legacy support for named statuses
|
||||
if ($ticket_status == "New") {
|
||||
return "danger";
|
||||
} elseif ($ticket_status == "Open") {
|
||||
return "primary";
|
||||
} elseif ($ticket_status == "On Hold") {
|
||||
return "success";
|
||||
} elseif ($ticket_status == "Auto Close") {
|
||||
return "dark";
|
||||
} elseif ($ticket_status == "Closed") {
|
||||
return "dark";
|
||||
}
|
||||
// Default return
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
function getTicketStatusName($ticket_status) {
|
||||
|
||||
global $mysqli;
|
||||
|
||||
// Legacy support for named statuses
|
||||
if (!intval($ticket_status)) {
|
||||
return $ticket_status;
|
||||
}
|
||||
|
||||
$status_id = intval($ticket_status);
|
||||
$row = mysqli_fetch_array(mysqli_query($mysqli, "SELECT * FROM ticket_statuses WHERE ticket_status_id = $status_id LIMIT 1"));
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ if (isset($_GET['query'])) {
|
|||
AND client_name LIKE '%$query%'
|
||||
ORDER BY client_id DESC LIMIT 5"
|
||||
);
|
||||
|
||||
|
||||
$sql_contacts = mysqli_query($mysqli, "SELECT * FROM contacts
|
||||
LEFT JOIN clients ON client_id = contact_client_id
|
||||
WHERE contact_archived_at IS NULL
|
||||
|
|
@ -37,7 +37,7 @@ if (isset($_GET['query'])) {
|
|||
OR contact_mobile LIKE '%$phone_query%')
|
||||
ORDER BY contact_id DESC LIMIT 5"
|
||||
);
|
||||
|
||||
|
||||
$sql_vendors = mysqli_query($mysqli, "SELECT * FROM vendors
|
||||
LEFT JOIN clients ON vendor_client_id = client_id
|
||||
WHERE vendor_archived_at IS NULL
|
||||
|
|
@ -52,20 +52,20 @@ if (isset($_GET['query'])) {
|
|||
AND domain_name LIKE '%$query%'
|
||||
ORDER BY domain_id DESC LIMIT 5"
|
||||
);
|
||||
|
||||
|
||||
$sql_products = mysqli_query($mysqli, "SELECT * FROM products
|
||||
WHERE product_archived_at IS NULL
|
||||
AND product_name LIKE '%$query%'
|
||||
ORDER BY product_id DESC LIMIT 5"
|
||||
);
|
||||
|
||||
|
||||
$sql_documents = mysqli_query($mysqli, "SELECT * FROM documents
|
||||
LEFT JOIN clients on document_client_id = clients.client_id
|
||||
WHERE document_archived_at IS NULL
|
||||
AND MATCH(document_content_raw) AGAINST ('$query')
|
||||
ORDER BY document_id DESC LIMIT 5"
|
||||
);
|
||||
|
||||
|
||||
$sql_tickets = mysqli_query($mysqli, "SELECT * FROM tickets
|
||||
LEFT JOIN clients on tickets.ticket_client_id = clients.client_id
|
||||
WHERE ticket_archived_at IS NULL
|
||||
|
|
@ -73,7 +73,7 @@ if (isset($_GET['query'])) {
|
|||
OR ticket_number = '$ticket_num_query')
|
||||
ORDER BY ticket_id DESC LIMIT 5"
|
||||
);
|
||||
|
||||
|
||||
$sql_logins = mysqli_query($mysqli, "SELECT * FROM logins
|
||||
LEFT JOIN contacts ON login_contact_id = contact_id
|
||||
LEFT JOIN clients ON login_client_id = client_id
|
||||
|
|
@ -108,10 +108,10 @@ if (isset($_GET['query'])) {
|
|||
);
|
||||
|
||||
$q = nullable_htmlentities($_GET['query']);
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-12">
|
||||
|
|
@ -291,7 +291,7 @@ if (isset($_GET['query'])) {
|
|||
$domain_id = intval($row['domain_id']);
|
||||
$client_id = intval($row['client_id']);
|
||||
$client_name = nullable_htmlentities($row['client_name']);
|
||||
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td><a href="client_domains.php?client_id=<?php echo $client_id; ?>&domain_id=<?php echo $domain_id; ?>"><?php echo $domain_name; ?></a>
|
||||
|
|
@ -308,7 +308,7 @@ if (isset($_GET['query'])) {
|
|||
</div>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<?php if (mysqli_num_rows($sql_products) > 0) { ?>
|
||||
|
||||
<!-- Products -->
|
||||
|
|
@ -418,7 +418,7 @@ if (isset($_GET['query'])) {
|
|||
$ticket_prefix = nullable_htmlentities($row['ticket_prefix']);
|
||||
$ticket_number = intval($row['ticket_number']);
|
||||
$ticket_subject = nullable_htmlentities($row['ticket_subject']);
|
||||
$ticket_status = nullable_htmlentities($row['ticket_status']);
|
||||
$ticket_status = nullable_htmlentities(getTicketStatusName($row['ticket_status']));
|
||||
$client_name = nullable_htmlentities($row['client_name']);
|
||||
$client_id = intval($row['ticket_client_id']);
|
||||
|
||||
|
|
@ -598,7 +598,7 @@ if (isset($_GET['query'])) {
|
|||
if (empty($contact_name)) {
|
||||
$contact_name_display = "-";
|
||||
}else{
|
||||
$contact_name_display = "<a href='client_contact_details.php?client_id=$client_id&contact_id=$contact_id'>$contact_name</a>";
|
||||
$contact_name_display = "<a href='client_contact_details.php?client_id=$client_id&contact_id=$contact_id'>$contact_name</a>";
|
||||
}
|
||||
$contact_archived_at = nullable_htmlentities($row['contact_archived_at']);
|
||||
if (empty($contact_archived_at)) {
|
||||
|
|
@ -652,12 +652,12 @@ if (isset($_GET['query'])) {
|
|||
|
||||
while ($row = mysqli_fetch_array($sql_ticket_replies)) {
|
||||
$ticket_id = intval($row['ticket_id']);
|
||||
|
||||
|
||||
// Only output the ticket header if we're at a new ticket
|
||||
if ($ticket_id !== $last_ticket_id) {
|
||||
if ($last_ticket_id !== null) {
|
||||
// Close the previous ticket's card (except for the very first ticket)
|
||||
echo '</div></div>';
|
||||
echo '</div></div>';
|
||||
}
|
||||
|
||||
$ticket_prefix = nullable_htmlentities($row['ticket_prefix']);
|
||||
|
|
@ -699,7 +699,7 @@ if (isset($_GET['query'])) {
|
|||
|
||||
if ($last_ticket_id !== null) {
|
||||
// Close the last ticket's card
|
||||
echo '</div></div>';
|
||||
echo '</div></div>';
|
||||
}
|
||||
?>
|
||||
|
||||
|
|
@ -721,4 +721,4 @@ require_once "footer.php";
|
|||
|
||||
?>
|
||||
|
||||
<script src="js/pretty_content.js"></script>
|
||||
<script src="js/pretty_content.js"></script>
|
||||
|
|
|
|||
|
|
@ -850,16 +850,13 @@ if (isset($_POST['add_ticket_reply'])) {
|
|||
|
||||
$ticket_id = intval($_POST['ticket_id']);
|
||||
$ticket_reply = mysqli_real_escape_string($mysqli, $_POST['ticket_reply']);
|
||||
$ticket_status = sanitizeInput($_POST['status']);
|
||||
$ticket_status = intval($_POST['status']);
|
||||
$ticket_status_name = sanitizeInput(getTicketStatusName($row['ticket_status']));
|
||||
// Handle the time inputs for hours, minutes, and seconds
|
||||
$hours = intval($_POST['hours']);
|
||||
$minutes = intval($_POST['minutes']);
|
||||
$seconds = intval($_POST['seconds']);
|
||||
|
||||
//var_dump($_POST);
|
||||
//exit;
|
||||
|
||||
// Combine into a single time string
|
||||
$ticket_reply_time_worked = sanitizeInput(sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds));
|
||||
|
||||
|
|
@ -877,7 +874,7 @@ if (isset($_POST['add_ticket_reply'])) {
|
|||
$ticket_reply_id = mysqli_insert_id($mysqli);
|
||||
|
||||
// Update Ticket Last Response Field
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = '$ticket_status' WHERE ticket_id = $ticket_id");
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = $ticket_status WHERE ticket_id = $ticket_id");
|
||||
|
||||
if ($ticket_status == $config_ticket_status_id_closed || $ticket_status == 'Closed') {
|
||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_closed_at = NOW() WHERE ticket_id = $ticket_id");
|
||||
|
|
|
|||
|
|
@ -94,12 +94,12 @@ $sql_clients = mysqli_query($mysqli, "SELECT client_id, client_name FROM clients
|
|||
$ticket_raised_count = intval($row['ticket_raised_count']);
|
||||
|
||||
// Calculate total tickets raised in period that are closed
|
||||
$sql_ticket_closed_count = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS ticket_closed_count FROM tickets WHERE YEAR(ticket_created_at) = $year AND ticket_client_id = $client_id AND ticket_status = 'Closed'");
|
||||
$sql_ticket_closed_count = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS ticket_closed_count FROM tickets WHERE YEAR(ticket_created_at) = $year AND ticket_client_id = $client_id AND ticket_closed_at IS NOT NULL");
|
||||
$row = mysqli_fetch_array($sql_ticket_closed_count);
|
||||
$ticket_closed_count = intval($row['ticket_closed_count']);
|
||||
|
||||
// Used to calculate average time to close tickets that were raised in period specified
|
||||
$sql_tickets = mysqli_query($mysqli, "SELECT ticket_created_at, ticket_closed_at FROM tickets WHERE YEAR(ticket_created_at) = $year AND ticket_client_id = $client_id AND ticket_status = 'Closed' AND ticket_closed_at IS NOT NULL");
|
||||
$sql_tickets = mysqli_query($mysqli, "SELECT ticket_created_at, ticket_closed_at FROM tickets WHERE YEAR(ticket_created_at) = $year AND ticket_client_id = $client_id AND ticket_closed_at IS NOT NULL");
|
||||
|
||||
if ($ticket_raised_count > 0) {
|
||||
|
||||
|
|
|
|||
39
ticket.php
39
ticket.php
|
|
@ -252,9 +252,9 @@ if (isset($_GET['ticket_id'])) {
|
|||
<div class="card card-body">
|
||||
<div class="row">
|
||||
<div class="col-9">
|
||||
<h3><i class="fas fa-fw fa-life-ring text-secondary mr-2"></i>Ticket <?php echo "$ticket_prefix$ticket_number"; ?> <span class='p-2 badge badge-<?php echo $ticket_status_color; ?>'><?php echo $ticket_status ?></span></h3>
|
||||
<h3><i class="fas fa-fw fa-life-ring text-secondary mr-2"></i>Ticket <?php echo "$ticket_prefix$ticket_number"; ?> <span class='p-2 badge badge-<?php echo $ticket_status_color; ?>'><?php echo getTicketStatusName($ticket_status) ?></span></h3>
|
||||
</div>
|
||||
<?php if ($ticket_status != "Closed") { ?>
|
||||
<?php if (empty($ticket_closed_at)) { ?>
|
||||
<div class="col-3">
|
||||
<div class="dropdown dropleft text-center d-print-none">
|
||||
<button class="btn btn-secondary btn-sm float-right" type="button" id="dropdownMenuButton" data-toggle="dropdown">
|
||||
|
|
@ -309,12 +309,12 @@ if (isset($_GET['ticket_id'])) {
|
|||
</div>
|
||||
|
||||
<!-- Only show ticket reply modal if status is not closed -->
|
||||
<?php if ($ticket_status != "Closed") { ?>
|
||||
<?php if (empty($ticket_closed_at)) { ?>
|
||||
<form class="mb-3 d-print-none" action="post.php" method="post" autocomplete="off">
|
||||
<input type="hidden" name="ticket_id" id="ticket_id" value="<?php echo $ticket_id; ?>">
|
||||
<input type="hidden" name="client_id" id="client_id" value="<?php echo $client_id; ?>">
|
||||
<div class="form-group">
|
||||
<?php if($config_ai_enable) { ?>
|
||||
<?php if ($config_ai_enable) { ?>
|
||||
<div class="form-group">
|
||||
<textarea class="form-control tinymceai" id="textInput" name="ticket_reply" placeholder="Type a response"></textarea>
|
||||
</div>
|
||||
|
|
@ -337,16 +337,15 @@ if (isset($_GET['ticket_id'])) {
|
|||
<span class="input-group-text"><i class="fa fa-fw fa-thermometer-half"></i></span>
|
||||
</div>
|
||||
<select class="form-control select2" name="status" required>
|
||||
<option <?php if ($ticket_status == "Open") {
|
||||
echo "selected";
|
||||
} ?>>Open</option>
|
||||
<option <?php if ($ticket_status == "On Hold") {
|
||||
echo "selected";
|
||||
} ?>>On Hold</option>
|
||||
<?php if ($config_ticket_autoclose) { ?>
|
||||
<option <?php if ($ticket_status == 'Auto Close') {
|
||||
echo "selected";
|
||||
} ?>>Auto Close</option>
|
||||
|
||||
<!-- Show all active ticket statuses, apart from new or closed as these are system-managed -->
|
||||
<?php $sql_ticket_status = mysqli_query($mysqli, "SELECT * FROM ticket_statuses WHERE ticket_status_id != $config_ticket_status_id_new AND ticket_status_id != $config_ticket_status_id_closed AND ticket_status_active = 1");
|
||||
while ($row = mysqli_fetch_array($sql_ticket_status)) {
|
||||
$ticket_status_id = intval($row['ticket_status_id']);
|
||||
$ticket_status_name = nullable_htmlentities($row['ticket_status_name']); ?>
|
||||
|
||||
<option value="<?php echo $ticket_status_id ?>" <?php if ($ticket_status == $ticket_status_id) { echo 'selected'; } ?>> <?php echo $ticket_status_name ?> </option>
|
||||
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
|
|
@ -608,7 +607,7 @@ if (isset($_GET['ticket_id'])) {
|
|||
if ($prev_ticket_row) {
|
||||
$prev_ticket_id = intval($prev_ticket_row['ticket_id']);
|
||||
$prev_ticket_subject = nullable_htmlentities($prev_ticket_row['ticket_subject']);
|
||||
$prev_ticket_status = nullable_htmlentities($prev_ticket_row['ticket_status']);
|
||||
$prev_ticket_status = nullable_htmlentities( getTicketStatusName($prev_ticket_row['ticket_status']));
|
||||
?>
|
||||
|
||||
<hr>
|
||||
|
|
@ -682,7 +681,7 @@ if (isset($_GET['ticket_id'])) {
|
|||
|
||||
<!-- Ticket closure info -->
|
||||
<?php
|
||||
if ($ticket_status == "Closed") {
|
||||
if (!empty($ticket_closed_at)) {
|
||||
$sql_closed_by = mysqli_query($mysqli, "SELECT * FROM tickets, users WHERE ticket_closed_by = user_id");
|
||||
$row = mysqli_fetch_array($sql_closed_by);
|
||||
$ticket_closed_by_display = nullable_htmlentities($row['user_name']);
|
||||
|
|
@ -698,7 +697,7 @@ if (isset($_GET['ticket_id'])) {
|
|||
|
||||
<?php
|
||||
// Ticket scheduling
|
||||
if ($ticket_status !== "Closed") { ?>
|
||||
if (empty ($ticket_closed_at)) { ?>
|
||||
<div class="mt-1">
|
||||
<i class="fa fa-fw fa-calendar-check text-secondary ml-1 mr-2"></i>Scheduled: <a href="#" data-toggle="modal" data-target="#editTicketScheduleModal"> <?php echo $ticket_scheduled_wording ?> </a>
|
||||
</div>
|
||||
|
|
@ -908,7 +907,7 @@ if (isset($_GET['ticket_id'])) {
|
|||
<?php } ?>
|
||||
</select>
|
||||
<div class="input-group-append d-print-none">
|
||||
<button type="submit" class="btn btn-primary" name="assign_ticket" <?php if ($ticket_status == "Closed") {
|
||||
<button type="submit" class="btn btn-primary" name="assign_ticket" <?php if (!empty($ticket_closed_at)) {
|
||||
echo "disabled";
|
||||
} ?>><i class="fas fa-check"></i></button>
|
||||
</div>
|
||||
|
|
@ -926,7 +925,7 @@ if (isset($_GET['ticket_id'])) {
|
|||
</a>
|
||||
<?php }
|
||||
|
||||
if ($ticket_status !== "Closed") { ?>
|
||||
if (empty($ticket_closed_at)) { ?>
|
||||
<a href="post.php?close_ticket=<?php echo $ticket_id; ?>" class="btn btn-secondary btn-block confirm-link" id="ticket_close">
|
||||
<i class="fas fa-fw fa-gavel mr-2"></i>Close Ticket
|
||||
</a>
|
||||
|
|
@ -969,7 +968,7 @@ require_once "footer.php";
|
|||
|
||||
<script src="js/show_modals.js"></script>
|
||||
|
||||
<?php if ($ticket_status !== "Closed") { ?>
|
||||
<?php if (empty($ticket_closed_at)) { ?>
|
||||
<!-- Ticket Time Tracking JS -->
|
||||
<script src="js/ticket_time_tracking.js"></script>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
</div>
|
||||
<form action="post.php" method="post" autocomplete="off">
|
||||
<input type="hidden" name="ticket_id" value="<?php echo $ticket_id; ?>">
|
||||
<input type="hidden" name="ticket_status" value="<?php echo $ticket_status; ?>">
|
||||
<input type="hidden" name="ticket_status" value="<?php echo $ticket_status_id; ?>">
|
||||
<div class="modal-body bg-white">
|
||||
|
||||
<div class="form-group">
|
||||
|
|
|
|||
66
tickets.php
66
tickets.php
|
|
@ -14,27 +14,29 @@ if (isset($_GET['status']) && is_array($_GET['status']) && !empty($_GET['status'
|
|||
$sanitizedStatuses = array();
|
||||
foreach ($_GET['status'] as $status) {
|
||||
// Escape each status to prevent SQL injection
|
||||
$sanitizedStatuses[] = "'" . sanitizeInput($status) . "'";
|
||||
$sanitizedStatuses[] = "'" . intval($status) . "'";
|
||||
}
|
||||
|
||||
// Convert the sanitized statuses into a comma-separated string
|
||||
$sanitizedStatusesString = implode(",", $sanitizedStatuses);
|
||||
$ticket_status_snippet = "ticket_status IN ($sanitizedStatusesString)";
|
||||
|
||||
} else {
|
||||
|
||||
if (isset($_GET['status']) && ($_GET['status']) == 'Open') {
|
||||
$status = 'Open';
|
||||
$ticket_status_snippet = "ticket_status != 'Closed'";
|
||||
} elseif (isset($_GET['status']) && ($_GET['status']) == 'Closed') {
|
||||
if (isset($_GET['status']) && ($_GET['status']) == 'Closed') {
|
||||
$status = 'Closed';
|
||||
$ticket_status_snippet = "ticket_status = 'Closed'";
|
||||
$ticket_status_snippet = "ticket_closed_at IS NOT NULL";
|
||||
} else {
|
||||
// Default - Show open tickets
|
||||
$status = 'Open';
|
||||
$ticket_status_snippet = "ticket_status != 'Closed'";
|
||||
$ticket_status_snippet = "ticket_closed_at IS NULL";
|
||||
}
|
||||
}
|
||||
|
||||
// Ticket assignment status filter
|
||||
// Default - any
|
||||
$ticket_assigned_query = '';
|
||||
$ticket_assigned_filter_id = '';
|
||||
if (isset($_GET['assigned']) & !empty($_GET['assigned'])) {
|
||||
if ($_GET['assigned'] == 'unassigned') {
|
||||
$ticket_assigned_query = 'AND ticket_assigned_to = 0';
|
||||
|
|
@ -43,14 +45,10 @@ if (isset($_GET['assigned']) & !empty($_GET['assigned'])) {
|
|||
$ticket_assigned_query = 'AND ticket_assigned_to = ' . intval($_GET['assigned']);
|
||||
$ticket_assigned_filter_id = intval($_GET['assigned']);
|
||||
}
|
||||
} else {
|
||||
// Default - any
|
||||
$ticket_assigned_query = '';
|
||||
$ticket_assigned_filter_id = '';
|
||||
}
|
||||
|
||||
//Rebuild URL
|
||||
$url_query_strings_sort = http_build_query(array_merge($_GET, array('sort' => $sort, 'order' => $order, 'status' => $status, 'assigned' => $ticket_assigned_filter)));
|
||||
$url_query_strings_sort = http_build_query(array_merge($_GET, array('sort' => $sort, 'order' => $order, 'status' => $status, 'assigned' => $ticket_assigned_filter_id)));
|
||||
|
||||
// Main ticket query:
|
||||
$sql = mysqli_query(
|
||||
|
|
@ -71,12 +69,12 @@ $sql = mysqli_query(
|
|||
$num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
||||
|
||||
//Get Total tickets open
|
||||
$sql_total_tickets_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_status != 'Closed'");
|
||||
$sql_total_tickets_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_closed_at IS NULL");
|
||||
$row = mysqli_fetch_array($sql_total_tickets_open);
|
||||
$total_tickets_open = intval($row['total_tickets_open']);
|
||||
|
||||
//Get Total tickets closed
|
||||
$sql_total_tickets_closed = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_closed FROM tickets WHERE ticket_status = 'Closed'");
|
||||
$sql_total_tickets_closed = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_closed FROM tickets WHERE ticket_closed_at IS NOT NULL");
|
||||
$row = mysqli_fetch_array($sql_total_tickets_closed);
|
||||
$total_tickets_closed = intval($row['total_tickets_closed']);
|
||||
|
||||
|
|
@ -86,12 +84,12 @@ $row = mysqli_fetch_array($sql_total_scheduled_tickets);
|
|||
$total_scheduled_tickets = intval($row['total_scheduled_tickets']);
|
||||
|
||||
//Get Unassigned tickets
|
||||
$sql_total_tickets_unassigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_unassigned FROM tickets WHERE ticket_assigned_to = '0' AND ticket_status != 'Closed'");
|
||||
$sql_total_tickets_unassigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_unassigned FROM tickets WHERE ticket_assigned_to = '0' AND ticket_closed_at IS NULL");
|
||||
$row = mysqli_fetch_array($sql_total_tickets_unassigned);
|
||||
$total_tickets_unassigned = intval($row['total_tickets_unassigned']);
|
||||
|
||||
//Get Total tickets assigned to me
|
||||
$sql_total_tickets_assigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_assigned FROM tickets WHERE ticket_assigned_to = $session_user_id AND ticket_status != 'Closed'");
|
||||
$sql_total_tickets_assigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_assigned FROM tickets WHERE ticket_assigned_to = $session_user_id AND ticket_closed_at IS NULL");
|
||||
$row = mysqli_fetch_array($sql_total_tickets_assigned);
|
||||
$user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
||||
|
||||
|
|
@ -235,11 +233,15 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
<div class="form-group">
|
||||
<label>Ticket Status</label>
|
||||
<select onchange="this.form.submit()" class="form-control select2" name="status[]" data-placeholder="Select Status" multiple>
|
||||
<option value="New" <?php if (isset($_GET['status']) && is_array($_GET['status']) && in_array('New', $_GET['status'])) { echo 'selected'; } ?>>New</option>
|
||||
<option value="Open" <?php if (isset($_GET['status']) && is_array($_GET['status']) && in_array('Open', $_GET['status'])) { echo 'selected'; } ?>>Open</option>
|
||||
<option value="On Hold" <?php if (isset($_GET['status']) && is_array($_GET['status']) && in_array('On Hold', $_GET['status'])) { echo 'selected'; } ?>>On Hold</option>
|
||||
<option value="Auto Close" <?php if (isset($_GET['status']) && is_array($_GET['status']) && in_array('Auto Close', $_GET['status'])) { echo 'selected'; } ?>>Auto Close</option>
|
||||
<option value="Closed" <?php if (isset($_GET['status']) && is_array($_GET['status']) && in_array('Closed', $_GET['status'])) { echo 'selected'; } ?>>Closed</option>
|
||||
|
||||
<?php $sql_ticket_status = mysqli_query($mysqli, "SELECT * FROM ticket_statuses WHERE ticket_status_active = 1");
|
||||
while ($row = mysqli_fetch_array($sql_ticket_status)) {
|
||||
$ticket_status_id = intval($row['ticket_status_id']);
|
||||
$ticket_status_name = nullable_htmlentities($row['ticket_status_name']); ?>
|
||||
|
||||
<option value="<?php echo $ticket_status_id ?>" <?php if (isset($_GET['status']) && is_array($_GET['status']) && in_array($ticket_status_id, $_GET['status'])) { echo 'selected'; } ?>> <?php echo $ticket_status_name ?> </option>
|
||||
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -311,15 +313,17 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
$ticket_number = intval($row['ticket_number']);
|
||||
$ticket_subject = nullable_htmlentities($row['ticket_subject']);
|
||||
$ticket_priority = nullable_htmlentities($row['ticket_priority']);
|
||||
$ticket_status = sanitizeInput(getTicketStatusName($row['ticket_status']));
|
||||
$ticket_status_id = intval($row['ticket_status']);
|
||||
$ticket_status_name = sanitizeInput(getTicketStatusName($row['ticket_status']));
|
||||
$ticket_billable = intval($row['ticket_billable']);
|
||||
$ticket_scheduled_for = nullable_htmlentities($row['ticket_schedule']);
|
||||
$ticket_created_at = nullable_htmlentities($row['ticket_created_at']);
|
||||
$ticket_created_at_time_ago = timeAgo($row['ticket_created_at']);
|
||||
$ticket_updated_at = nullable_htmlentities($row['ticket_updated_at']);
|
||||
$ticket_updated_at_time_ago = timeAgo($row['ticket_updated_at']);
|
||||
$ticket_closed_at = nullable_htmlentities($row['ticket_closed_at']);
|
||||
if (empty($ticket_updated_at)) {
|
||||
if ($ticket_status == $config_ticket_status_id_closed || $ticket_status == "Closed") {
|
||||
if (!empty($ticket_closed_at)) {
|
||||
$ticket_updated_at_display = "<p>Never</p>";
|
||||
} else {
|
||||
$ticket_updated_at_display = "<p class='text-danger'>Never</p>";
|
||||
|
|
@ -327,13 +331,13 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
} else {
|
||||
$ticket_updated_at_display = "$ticket_updated_at_time_ago<br><small class='text-secondary'>$ticket_updated_at</small>";
|
||||
}
|
||||
$ticket_closed_at = nullable_htmlentities($row['ticket_closed_at']);
|
||||
|
||||
$client_id = intval($row['ticket_client_id']);
|
||||
$client_name = nullable_htmlentities($row['client_name']);
|
||||
$contact_name = nullable_htmlentities($row['contact_name']);
|
||||
$contact_email = nullable_htmlentities($row['contact_email']);
|
||||
|
||||
$ticket_status_color = getTicketStatusColor($ticket_status);
|
||||
$ticket_status_color = getTicketStatusColor($ticket_status_id);
|
||||
|
||||
if ($ticket_priority == "High") {
|
||||
$ticket_priority_color = "danger";
|
||||
|
|
@ -345,7 +349,7 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
|
||||
$ticket_assigned_to = intval($row['ticket_assigned_to']);
|
||||
if (empty($ticket_assigned_to)) {
|
||||
if ($ticket_status == $config_ticket_status_id_closed || $ticket_status == "Closed") {
|
||||
if (!empty($ticket_closed_at)) {
|
||||
$ticket_assigned_to_display = "<p>Not Assigned</p>";
|
||||
} else {
|
||||
$ticket_assigned_to_display = "<p class='text-danger'>Not Assigned</p>";
|
||||
|
|
@ -384,11 +388,11 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
|
||||
?>
|
||||
|
||||
<tr class="<?php if(empty($ticket_updated_at)) { echo "text-bold"; }?> <?php if ($ticket_reply_type == "Client") { echo "table-warning"; } ?>">
|
||||
<tr class="<?php if(empty($ticket_closed_at) && empty($ticket_updated_at)) { echo "text-bold"; }?> <?php if (empty($ticket_closed_at) && $ticket_reply_type == "Client") { echo "table-warning"; } ?>">
|
||||
|
||||
<!-- Ticket Bulk Select -->
|
||||
<!-- Ticket Bulk Select (for open tickets) -->
|
||||
<td>
|
||||
<?php if ($ticket_status == $config_ticket_status_id_closed || $ticket_status == "Closed") { ?>
|
||||
<?php if (empty($ticket_closed_at)) { ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input bulk-select" type="checkbox" name="ticket_ids[]" value="<?php echo $ticket_id ?>">
|
||||
</div>
|
||||
|
|
@ -435,7 +439,7 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
|
||||
<!-- Ticket Status -->
|
||||
<td>
|
||||
<span class='p-2 badge badge-pill badge-<?php echo $ticket_status_color; ?>'><?php echo $ticket_status; ?></span> <?php if ($ticket_status == 'On Hold' && isset ($ticket_scheduled_for)) { echo "<div class=\"mt-1\"> <small class='text-secondary'> $ticket_scheduled_for </small></div>"; } ?>
|
||||
<span class='p-2 badge badge-pill badge-<?php echo $ticket_status_color; ?>'><?php echo $ticket_status_name; ?></span> <?php if (isset ($ticket_scheduled_for)) { echo "<div class=\"mt-1\"> <small class='text-secondary'> $ticket_scheduled_for </small></div>"; } ?>
|
||||
</td>
|
||||
|
||||
<!-- Ticket Assigned agent -->
|
||||
|
|
@ -460,7 +464,7 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
|
||||
<?php
|
||||
// Edit actions, for open tickets
|
||||
if ($ticket_status !== $config_ticket_status_id_closed || $ticket_status !== "Closed") {
|
||||
if (empty($ticket_closed_at)) {
|
||||
|
||||
require "ticket_assign_modal.php";
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue