Fix deleteTicket crash when ticket_custom_fields table doesn't exist

PHP 8.2 raises mysqli_sql_exception on prepare() for non-existent tables
rather than returning false. Wrap each child-table delete in try/catch and
silently skip tables that don't exist in all deployments, re-throwing for
unexpected errors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-11 14:09:34 -04:00
parent 60f23051a9
commit d21691a548
+7
View File
@@ -747,6 +747,7 @@ class TicketModel {
]; ];
foreach ($children as $sql) { foreach ($children as $sql) {
try {
$stmt = $this->conn->prepare($sql); $stmt = $this->conn->prepare($sql);
if (!$stmt) continue; if (!$stmt) continue;
// ticket_dependencies uses two placeholders // ticket_dependencies uses two placeholders
@@ -757,6 +758,12 @@ class TicketModel {
} }
$stmt->execute(); $stmt->execute();
$stmt->close(); $stmt->close();
} catch (mysqli_sql_exception $e) {
// Skip optional tables that may not exist in all deployments
if (strpos($e->getMessage(), "doesn't exist") === false) {
throw $e;
}
}
} }
$stmt = $this->conn->prepare("DELETE FROM tickets WHERE ticket_id = ?"); $stmt = $this->conn->prepare("DELETE FROM tickets WHERE ticket_id = ?");