Nothing to see here

Go Back"; include_once "../includes/footer.php"; exit; } $row = mysqli_fetch_assoc($sql_project); $project_id = intval($row['project_id']); $project_prefix = escapeHtml($row['project_prefix']); $project_number = intval($row['project_number']); $project_name = escapeHtml($row['project_name']); $project_description = escapeHtml($row['project_description']); $project_due = escapeHtml($row['project_due']); $project_created_at = date("Y-m-d", strtotime($row['project_created_at'])); $project_updated_at = escapeHtml($row['project_updated_at']); $project_completed_at = escapeHtml($row['project_completed_at']); $project_archived_at = escapeHtml($row['project_archived_at']); $client_id = intval($row['client_id']); $client_name = escapeHtml($row['client_name']); if ($client_name) { $client_name_display = "
$client_name
"; } else { $client_name_display = ""; } $project_manager = intval($row['user_id']); $project_manager_display = formatAssignee($project_manager, $row['user_name'], $row['user_avatar'], false, 'No manager'); if (lookupUserPermission('module_support') >= 2 && !$project_completed_at && !$project_archived_at) { $project_manager_display = quickPick('project_manager', $project_id, $project_manager, $project_manager_display); } $project_manager_display = "
$project_manager_display
"; if ($project_completed_at) { $project_status_display = "Closed"; $project_completed_date_display = "
" . date('Y-m-d', strtotime($project_completed_at)) . "
"; } else { $project_status_display = "Open"; $project_completed_date_display = ""; } // Override Tab Title // No Sanitizing needed as this var will only be used in the tab title $tab_title = "{$row['project_prefix']}{$row['project_number']}"; $page_title = $row['project_name']; // Tickets on the project - the ones this agent may reach (an internal project can hold any client's) $ticket_scope = clientScopeSql('ticket_client_id'); $project_ticket_sorts = [ 'ticket_number' => "ticket_number $order", 'ticket_priority' => "CASE ticket_priority WHEN 'Urgent' THEN 0 WHEN 'High' THEN 1 WHEN 'Medium' THEN 2 WHEN 'Low' THEN 3 ELSE 4 END $order", 'ticket_status' => "ticket_status_order $order", 'user_name' => "ticket_assigned_to = 0 $order, user_name $order", 'ticket_updated_at' => "COALESCE(ticket_updated_at, ticket_created_at) $order", 'client_name' => "client_name $order", ]; if (!isset($project_ticket_sorts[$sort])) { $sort = 'ticket_number'; } $sql_tickets = mysqli_query($mysqli, "SELECT tickets.ticket_id, ticket_prefix, ticket_number, ticket_subject, ticket_priority, ticket_status, ticket_assigned_to, ticket_billable, ticket_created_at, ticket_updated_at, ticket_resolved_at, ticket_closed_at, ticket_client_id, ticket_status_name, ticket_status_color, client_name, user_name, user_avatar FROM tickets LEFT JOIN ticket_statuses ON ticket_status = ticket_status_id LEFT JOIN clients ON ticket_client_id = client_id LEFT JOIN users ON ticket_assigned_to = user_id WHERE ticket_project_id = $project_id $ticket_scope ORDER BY {$project_ticket_sorts[$sort]}, ticket_number DESC" ); $project_tickets = []; while ($ticket_row = mysqli_fetch_assoc($sql_tickets)) { $project_tickets[intval($ticket_row['ticket_id'])] = $ticket_row; } $project_ticket_replies = ticketLastReplies(array_keys($project_tickets)); $ticket_count = count($project_tickets); $closed_ticket_count = count(array_filter(array_column($project_tickets, 'ticket_closed_at'))); $resolved_ticket_count = count(array_filter(array_column($project_tickets, 'ticket_resolved_at'))); $tickets_closed_percent = 100; //Default if ($ticket_count) { $tickets_closed_percent = round(($closed_ticket_count / $ticket_count) * 100); } $tickets_resolved_percent = 100; //Default if ($ticket_count) { $tickets_resolved_percent = round(($resolved_ticket_count / $ticket_count) * 100); } // Get All Tasks $sql_tasks = mysqli_query($mysqli, "SELECT task_completed_at, task_id, task_name FROM tickets, tasks WHERE ticket_id = task_ticket_id AND ticket_project_id = $project_id $ticket_scope ORDER BY task_created_at ASC" ); $task_count = mysqli_num_rows($sql_tasks); // Get Completed Task Count $sql_tasks_completed = mysqli_query($mysqli, "SELECT 1 FROM tickets, tasks WHERE ticket_id = task_ticket_id AND ticket_project_id = $project_id $ticket_scope AND task_completed_at IS NOT NULL" ); $completed_task_count = mysqli_num_rows($sql_tasks_completed); // Tasks Completed Percent if ($task_count) { $tasks_completed_percent = round(($completed_task_count / $task_count) * 100); } //Get Total Ticket Time $sql_ticket_total_reply_time = mysqli_query($mysqli, "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ticket_reply_time_worked))) AS ticket_total_reply_time FROM ticket_replies LEFT JOIN tickets ON ticket_id = ticket_reply_ticket_id WHERE ticket_reply_archived_at IS NULL AND ticket_project_id = $project_id"); $row = mysqli_fetch_assoc($sql_ticket_total_reply_time); $ticket_total_reply_time = escapeHtml($row['ticket_total_reply_time']); // Get all Assigned ticket Users as a comma-separated string $sql_project_collaborators = mysqli_query($mysqli, " SELECT GROUP_CONCAT(DISTINCT user_name SEPARATOR ', ') AS user_names FROM users LEFT JOIN ticket_replies ON user_id = ticket_reply_by LEFT JOIN tickets ON ticket_id = ticket_reply_ticket_id WHERE ticket_reply_archived_at IS NULL AND ticket_project_id = $project_id "); // Fetch the result $row = mysqli_fetch_assoc($sql_project_collaborators); // The user names in a comma-separated string $ticket_collaborators = escapeHtml($row['user_names']); ?>
Total time worked:
/
/
$ticket_row) { $ticket_is_open = ticketIsOpen($ticket_row); $ticket_url = escapeHtml(ticketUrl($ticket_id, $ticket_row['ticket_client_id'])); ?>
Ticket Priority Status Assigned Activity Client
Internal' ?>
0) { ?>
All Tasks