Add Bulk Delete Function Also when deletign a ticket delete the watchers and attachments and remove the ticket id from uploads/tickets/ticket_id

This commit is contained in:
johnnyq 2025-06-26 23:16:08 -04:00
parent 3626777bd1
commit 45ac7f084b
2 changed files with 59 additions and 0 deletions

View File

@ -747,6 +747,15 @@ if (isset($_GET['delete_ticket'])) {
// Delete all ticket views
mysqli_query($mysqli, "DELETE FROM ticket_views WHERE view_ticket_id = $ticket_id");
// Delete ticket watchers
mysqli_query($mysqli, "DELETE FROM ticket_watchers WHERE watcher_ticket_id = $ticket_id");
// Delete Ticket Attachements
mysqli_query($mysqli, "DELETE FROM ticket_attachments WHERE ticket_attachment_ticket_id = $ticket_id");
removeDirectory("uploads/tickets/$ticket_id");
// No Need to delete ticket assets as this is cascadely deleted via the database.
// Logging
logAction("Ticket", "Delete", "$session_name deleted $ticket_prefix$ticket_number along with all replies", $client_id);
@ -760,6 +769,50 @@ if (isset($_GET['delete_ticket'])) {
}
}
if (isset($_POST['bulk_delete_tickets'])) {
enforceUserPermission('module_support', 3);
validateCSRFToken($_POST['csrf_token']);
if (isset($_POST['ticket_ids'])) {
$count = count($_POST['ticket_ids']);
// Cycle through array and delete each recurring scheduled ticket
foreach ($_POST['ticket_ids'] as $ticket_id) {
$ticket_id = intval($ticket_id);
mysqli_query($mysqli, "DELETE FROM tickets WHERE ticket_id = $ticket_id");
// Delete all ticket replies
mysqli_query($mysqli, "DELETE FROM ticket_replies WHERE ticket_reply_ticket_id = $ticket_id");
// Delete all ticket views
mysqli_query($mysqli, "DELETE FROM ticket_views WHERE view_ticket_id = $ticket_id");
// Delete ticket watchers
mysqli_query($mysqli, "DELETE FROM ticket_watchers WHERE watcher_ticket_id = $ticket_id");
// Delete Ticket Attachements
mysqli_query($mysqli, "DELETE FROM ticket_attachments WHERE ticket_attachment_ticket_id = $ticket_id");
removeDirectory("uploads/tickets/$ticket_id");
// No Need to delete ticket assets as this is cascadely deleted via the database.
// Logging
logAction("Ticket", "Delete", "$session_name deleted ticket", 0, $ticket_id);
}
// Logging
logAction("Ticket", "Bulk Delete", "$session_name deleted $count ticket(s)");
$_SESSION['alert_message'] = "Deleted <strong>$count</strong> ticket(s)";
}
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_POST['bulk_assign_ticket'])) {
enforceUserPermission('module_support', 2);

View File

@ -283,6 +283,12 @@ $sql_categories = mysqli_query(
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#bulkCloseTicketsModal">
<i class="fas fa-fw fa-check mr-2"></i>Resolve
</a>
<?php if (lookupUserPermission("module_support") === 3) { ?>
<div class="dropdown-divider"></div>
<button class="dropdown-item text-danger text-bold confirm-link" type="submit" form="bulkActions" name="bulk_delete_tickets">
<i class="fas fa-fw fa-trash mr-2"></i>Delete
</button>
<?php } ?>
</div>
</div>
<?php } ?>