'; } else { echo ' '; } if ($index !== $numberOfStatuses) { // Display move down echo ' '; } else { echo ''; } } function buildCreateModal() { global $hesklang, $hesk_settings; $languages = array(); foreach ($hesk_settings['languages'] as $key => $value) { $languages[$key] = $hesk_settings['languages'][$key]['folder']; } ?> $value) { $languages[$key] = $hesk_settings['languages'][$key]['folder']; } ?> 0) { // it's a default action return 'no-default'; } // check if any tickets have this status $statusRs = hesk_dbQuery("SELECT 1 FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE `status` = " . intval($id)); if (hesk_dbNumRows($statusRs) > 0) { return 'no-tickets'; } return 'yes'; } function echoWarningForStatus() { global $hesklang; echo ' '; } function createStatus() { global $hesklang, $hesk_settings; hesk_dbConnect(); // Create the new status record $isClosed = hesk_POST('closed'); $closable = hesk_POST('closable'); $textColor = hesk_POST('text-color'); /* Get the latest cat_order */ $res = hesk_dbQuery("SELECT `sort` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` ORDER BY `sort` DESC LIMIT 1"); $row = hesk_dbFetchRow($res); $my_order = $row[0] + 10; // Get the next status id $res = hesk_dbQuery("SELECT `ID` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` ORDER BY `ID` DESC LIMIT 1"); $row = hesk_dbFetchAssoc($res); $nextId = $row['ID'] + 1; $insert = "INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` (`ID`, `Key`, `TextColor`, `IsClosed`, `Closable`, `sort`) VALUES (" . intval($nextId) . ", 'STORED IN XREF TABLE', '" . hesk_dbEscape($textColor) . "', " . intval($isClosed) . ", '" . hesk_dbEscape($closable) . "', " . intval($my_order) . ")"; hesk_dbQuery($insert); // For each language, create a value in the xref table foreach (hesk_POST_array('name') as $language => $translation) { hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "text_to_status_xref` (`language`, `text`, `status_id`) VALUES ('" . hesk_dbEscape($language) . "', '" . hesk_dbEscape($translation) . "', " . intval($nextId) . ")"); } hesk_process_messages($hesklang['new_status_created'], 'manage_statuses.php', 'SUCCESS'); } function updateStatus() { global $hesklang, $hesk_settings; $statusId = hesk_POST('status-id'); $isClosed = hesk_POST('closed'); $closable = hesk_POST('closable'); $textColor = hesk_POST('text-color'); $update = "UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` SET `TextColor` = '" . hesk_dbEscape($textColor) . "', `IsClosed` = " . intval($isClosed) . ", `Closable` = '" . hesk_dbEscape($closable) . "' WHERE `ID` = " . intval($statusId); hesk_dbQuery($update); // For each language, delete the xref record and insert the new ones hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "text_to_status_xref` WHERE `status_id` = " . intval($statusId)); foreach (hesk_POST_array('name') as $language => $translation) { hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "text_to_status_xref` (`language`, `text`, `status_id`) VALUES ('" . hesk_dbEscape($language) . "', '" . hesk_dbEscape($translation) . "', " . intval($statusId) . ")"); } hesk_process_messages($hesklang['ticket_status_updated'], 'manage_statuses.php', 'SUCCESS'); } function deleteStatus() { global $hesklang, $hesk_settings; $statusId = hesk_GET('id'); hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "text_to_status_xref` WHERE `status_id` = " . intval($statusId)); hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `ID` = " . intval($statusId)); resortStatuses(); hesk_process_messages($hesklang['ticket_status_deleted'], 'manage_statuses.php', 'SUCCESS'); } function moveStatus() { global $hesk_settings, $hesklang; $statusId = intval(hesk_GET('id')); $statusMove = intval(hesk_GET('move')); hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` SET `sort` = `sort`+" . intval($statusMove) . " WHERE `ID` = '" . intval($statusId) . "' LIMIT 1"); resortStatuses(); hesk_process_messages($hesklang['status_sort_updated'], 'manage_statuses.php', 'SUCCESS'); } function resortStatuses() { global $hesk_settings; /* Update all category fields with new order */ $res = hesk_dbQuery("SELECT `ID` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` ORDER BY `sort` ASC"); $i = 10; while ($myStatus = hesk_dbFetchAssoc($res)) { hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` SET `sort`=" . intval($i) . " WHERE `ID`='" . intval($myStatus['ID']) . "' LIMIT 1"); $i += 10; } } function save() { global $hesklang, $hesk_settings; //-- Update default status for actions $defaultQuery = "UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` SET "; hesk_dbQuery($defaultQuery . "`IsNewTicketStatus` = 0"); $updateQuery = $defaultQuery . "`IsNewTicketStatus` = 1 WHERE `ID` = " . intval($_POST['newTicket']); hesk_dbQuery($updateQuery); hesk_dbQuery($defaultQuery . "`IsClosedByClient` = 0"); $updateQuery = $defaultQuery . "`IsClosedByClient` = 1 WHERE `ID` = " . intval($_POST['closedByClient']); hesk_dbQuery($updateQuery); hesk_dbQuery($defaultQuery . "`IsCustomerReplyStatus` = 0"); $updateQuery = $defaultQuery . "`IsCustomerReplyStatus` = 1 WHERE `ID` = " . intval($_POST['replyFromClient']); hesk_dbQuery($updateQuery); hesk_dbQuery($defaultQuery . "`IsStaffClosedOption` = 0"); $updateQuery = $defaultQuery . "`IsStaffClosedOption` = 1 WHERE `ID` = " . intval($_POST['staffClosedOption']); hesk_dbQuery($updateQuery); hesk_dbQuery($defaultQuery . "`IsStaffReopenedStatus` = 0"); $updateQuery = $defaultQuery . "`IsStaffReopenedStatus` = 1 WHERE `ID` = " . intval($_POST['staffReopenedStatus']); hesk_dbQuery($updateQuery); hesk_dbQuery($defaultQuery . "`IsDefaultStaffReplyStatus` = 0"); $updateQuery = $defaultQuery . "`IsDefaultStaffReplyStatus` = 1 WHERE `ID` = " . intval($_POST['defaultStaffReplyStatus']); hesk_dbQuery($updateQuery); hesk_dbQuery($defaultQuery . "`LockedTicketStatus` = 0"); $updateQuery = $defaultQuery . "`LockedTicketStatus` = 1 WHERE `ID` = " . intval($_POST['lockedTicketStatus']); hesk_dbQuery($updateQuery); hesk_dbQuery($defaultQuery . "`IsAutocloseOption` = 0"); $updateQuery = $defaultQuery . "`IsAutocloseOption` = 1 WHERE `ID` = " . intval($_POST['autocloseTicketOption']); hesk_dbQuery($updateQuery); hesk_process_messages($hesklang['default_statuses_updated'], 'manage_statuses.php', 'SUCCESS'); }