$status_id, 'name' => $status_name, 'order' => $kanban_order, 'tickets' => array() ); } $ordering_snippet = "ORDER BY CASE WHEN ticket_priority = 'High' THEN 1 WHEN ticket_priority = 'Medium' THEN 2 WHEN ticket_priority = 'Low' THEN 3 ELSE 4 END, ticket_id DESC"; if ($config_ticket_ordering == 1) { $ordering_snippet = "ORDER BY ticket_order ASC"; } // Fetch tickets $sql = mysqli_query( $mysqli, "SELECT SQL_CALC_FOUND_ROWS * FROM tickets LEFT JOIN clients ON ticket_client_id = client_id LEFT JOIN contacts ON ticket_contact_id = contact_id LEFT JOIN users ON ticket_assigned_to = user_id LEFT JOIN assets ON ticket_asset_id = asset_id LEFT JOIN locations ON ticket_location_id = location_id LEFT JOIN vendors ON ticket_vendor_id = vendor_id LEFT JOIN ticket_statuses ON ticket_status = ticket_status_id LEFT JOIN categories ON ticket_category = category_id WHERE $ticket_status_snippet $ticket_assigned_query $category_query $client_query AND DATE(ticket_created_at) BETWEEN '$dtf' AND '$dtt' AND ( CONCAT(ticket_prefix,ticket_number) LIKE '%$q%' OR client_name LIKE '%$q%' OR ticket_subject LIKE '%$q%' OR ticket_status_name LIKE '%$q%' OR ticket_priority LIKE '%$q%' OR user_name LIKE '%$q%' OR contact_name LIKE '%$q%' OR asset_name LIKE '%$q%' OR vendor_name LIKE '%$q%' OR ticket_vendor_ticket_number LIKE '%$q%' ) $ticket_project_snippet $ticket_permission_snippet $ordering_snippet" ); while ($row = mysqli_fetch_assoc($sql)) { $status_id = $row['ticket_status_id']; foreach ($row as $key => $value) { if (is_string($value)) { $row[$key] = nullable_htmlentities($value); } } if (isset($statuses[$status_id])) { $statuses[$status_id]['tickets'][] = $row; } } // Convert associative array to indexed array $kanban = array_values($statuses); ?>