Fix 500 error for non-admin users on dashboard
StatsModel queries used `FROM tickets WHERE` with no table alias, but getVisibilityFilter() returns SQL referencing `t.visibility`. Admins were unaffected because they get `1=1` with no column references. Added `t` alias to all three tickets queries that use $visSQL. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -228,7 +228,7 @@ class StatsModel {
|
||||
SUM(CASE WHEN priority = 1 AND status != 'Closed' THEN 1 ELSE 0 END) as critical,
|
||||
AVG(CASE WHEN status = 'Closed' AND closed_at > created_at
|
||||
THEN TIMESTAMPDIFF(HOUR, created_at, closed_at) ELSE NULL END) as avg_resolution
|
||||
FROM tickets WHERE ($visSQL)";
|
||||
FROM tickets t WHERE ($visSQL)";
|
||||
|
||||
if (!empty($visParams)) {
|
||||
$stmt = $this->conn->prepare($countsSql);
|
||||
@@ -244,13 +244,13 @@ class StatsModel {
|
||||
// Query 2: Get priority, status, and category breakdowns in one query
|
||||
$breakdownSql = "SELECT
|
||||
'priority' as type, CONCAT('P', priority) as label, COUNT(*) as count
|
||||
FROM tickets WHERE status != 'Closed' AND ($visSQL) GROUP BY priority
|
||||
FROM tickets t WHERE status != 'Closed' AND ($visSQL) GROUP BY priority
|
||||
UNION ALL
|
||||
SELECT 'status' as type, status as label, COUNT(*) as count
|
||||
FROM tickets WHERE ($visSQL) GROUP BY status
|
||||
FROM tickets t WHERE ($visSQL) GROUP BY status
|
||||
UNION ALL
|
||||
SELECT 'category' as type, category as label, COUNT(*) as count
|
||||
FROM tickets WHERE status != 'Closed' AND ($visSQL) GROUP BY category";
|
||||
FROM tickets t WHERE status != 'Closed' AND ($visSQL) GROUP BY category";
|
||||
|
||||
if (!empty($visParams)) {
|
||||
// Need to bind params 3 times (once per UNION branch)
|
||||
|
||||
Reference in New Issue
Block a user