get_results("SELECT id,name,bg_color FROM {$wpdb->prefix}wppm_task_statuses"); $wppm_project_statuses = $wpdb->get_results("SELECT id,name,bg_color FROM {$wpdb->prefix}wppm_project_statuses"); $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true ); $is_admin = ( $wppm_current_user_capability === 'wppm_admin' || current_user_can('manage_options') ) ? 1 : 0; $query = $wpdb->prepare( "SELECT COUNT(DISTINCT p.id) FROM {$wpdb->prefix}wppm_project p LEFT JOIN {$wpdb->prefix}wppm_project_users pu ON p.id = pu.proj_id LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE ( FIND_IN_SET(%d, p.users) OR p.created_by = %d OR %d = 1 OR pm.meta_value = '1' ) AND p.status != %d", $current_user_id, $current_user_id, $is_admin, 4 ); $active_projects = $wpdb->get_var($query); $query = $wpdb->prepare( "SELECT DISTINCT Task.* FROM {$wpdb->prefix}wppm_task AS Task WHERE ( FIND_IN_SET(%d, Task.users) OR Task.created_by = %d ) AND Task.status != %d AND Task.active = 1 AND Task.is_archived = 0 LIMIT 5", $current_user_id, // for JOIN pu $current_user_id, // role_id 4 // status ); $tasks = $wpdb->get_results($query); $query = $wpdb->prepare( "SELECT DISTINCT Task.* FROM {$wpdb->prefix}wppm_task AS Task LEFT JOIN {$wpdb->prefix}wppm_project p ON Task.project = p.id LEFT JOIN {$wpdb->prefix}wppm_project_users pu ON p.id = pu.proj_id AND pu.user_id = %d LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE ( %d = 1 OR FIND_IN_SET(%d, Task.users) OR Task.created_by = %d OR p.created_by = %d OR (FIND_IN_SET(%d, p.users) AND pu.role_id = %d) OR pm.meta_value = '1' ) AND Task.status = %d AND Task.active = 1 AND Task.is_archived = 0 LIMIT 5", $current_user_id, // 1 → pu.user_id $is_admin, // 2 $current_user_id, // 3 $current_user_id, // 4 $current_user_id, // 5 $current_user_id, // 6 2, // 7 → role_id 4 // 8 → status ); $completed_tasks = $wpdb->get_results($query); $query = $wpdb->prepare( "SELECT COUNT(DISTINCT Task.id) FROM {$wpdb->prefix}wppm_task AS Task LEFT JOIN {$wpdb->prefix}wppm_project p ON Task.project = p.id LEFT JOIN {$wpdb->prefix}wppm_project_users pu ON p.id = pu.proj_id AND pu.user_id = %d LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE ( %d = 1 OR FIND_IN_SET(%d, Task.users) OR Task.created_by = %d OR p.created_by = %d OR (FIND_IN_SET(%d, p.users) AND pu.role_id = %d) OR pm.meta_value = '1' ) AND Task.status = %d AND Task.active = 1 AND Task.is_archived = 0", $current_user_id, // pu.user_id $is_admin, $current_user_id, $current_user_id, $current_user_id, $current_user_id, 2, // role_id ✅ FIXED 4 // status ); $completed_task_count = $wpdb->get_var($query); $query = $wpdb->prepare( "SELECT DISTINCT count(*) AS task_count FROM {$wpdb->prefix}wppm_task AS Task WHERE ( FIND_IN_SET(%d, Task.users) OR Task.created_by = %d ) AND Task.status != %d AND Task.active = 1 AND Task.is_archived = 0 LIMIT 5", $current_user_id, // for JOIN pu $current_user_id, // role_id 4 // status ); $task_count = $wpdb->get_var($query); $query = $wpdb->prepare( "SELECT DISTINCT Task.*,p.project_name FROM {$wpdb->prefix}wppm_task AS Task LEFT JOIN {$wpdb->prefix}wppm_project p ON Task.project = p.id LEFT JOIN {$wpdb->prefix}wppm_project_users pu ON p.id = pu.proj_id AND pu.user_id = %d LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE ( %d = 1 OR FIND_IN_SET(%d, Task.users) OR Task.created_by = %d OR p.created_by = %d OR (FIND_IN_SET(%d, p.users) AND pu.role_id = %d) OR pm.meta_value = '1' ) AND DATE(Task.end_date) = CURDATE() AND Task.status != %d AND Task.active = 1 AND Task.is_archived = 0 LIMIT 5", $current_user_id, // for JOIN pu $is_admin, $current_user_id, $current_user_id, $current_user_id, $current_user_id, 2, // role_id 4 // status ); $todays_tasks = $wpdb->get_results($query); $status_counts = []; $task_bg_color = []; $project_status_counts = []; $project_bg_color = []; if(!empty($wppm_task_statuses)){ foreach($wppm_task_statuses as $key => $status){ $count = $wpdb->get_var($wpdb->prepare( "SELECT DISTINCT COUNT(DISTINCT Task.id) FROM {$wpdb->prefix}wppm_task AS Task LEFT JOIN {$wpdb->prefix}wppm_project p ON Task.project = p.id LEFT JOIN {$wpdb->prefix}wppm_project_users pu ON p.id = pu.proj_id AND pu.user_id = %d LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE ( %d = 1 OR FIND_IN_SET(%d, Task.users) OR Task.created_by = %d OR p.created_by = %d OR (FIND_IN_SET(%d, p.users) AND pu.role_id = %d) OR pm.meta_value = '1' ) AND Task.status = %d AND Task.active = 1 AND Task.is_archived = 0 LIMIT 5", $current_user_id, // for JOIN pu $is_admin, $current_user_id, $current_user_id, $current_user_id, $current_user_id, 2, // role_id $status->id // status ) ); $status_counts[$status->name] = $count; $task_bg_color[$status->name] = $status->bg_color; } } if(!empty($wppm_project_statuses)){ foreach($wppm_project_statuses as $key => $status){ $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT p.id) FROM {$wpdb->prefix}wppm_project p LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE ( FIND_IN_SET(%d, p.users) OR p.created_by = %d OR %d = 1 OR pm.meta_value = '1' ) AND p.status = %d", $current_user_id, $current_user_id, $is_admin, $status->id ) ); $project_status_counts[$status->name] = $count; $project_bg_color[$status->name] = $status->bg_color; } } $overdue = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT t.id) FROM {$wpdb->prefix}wppm_task t LEFT JOIN {$wpdb->prefix}wppm_project p ON t.project = p.id LEFT JOIN {$wpdb->prefix}wppm_project_users pu ON p.id = pu.proj_id AND pu.user_id = %d LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE t.end_date < CURDATE() AND t.status != 4 AND t.active = 1 AND t.is_archived = 0 AND ( %d = 1 OR FIND_IN_SET(%d, t.users) OR t.created_by = %d OR p.created_by = %d OR pu.role_id = %d OR pm.meta_value = '1' )", $current_user_id, // pu.user_id $is_admin, $current_user_id, $current_user_id, $current_user_id, 2 // role_id ) ); $labels = array_keys($status_counts); $data = array_values($status_counts); $task_bg_colors = array_values($task_bg_color); $project_overdue = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT p.id) FROM {$wpdb->prefix}wppm_project p LEFT JOIN {$wpdb->prefix}wppm_project_meta pm ON p.id = pm.project_id AND pm.meta_key = 'public_project' WHERE ( FIND_IN_SET(%d, p.users) OR p.created_by = %d OR %d = 1 OR pm.meta_value = '1' ) AND p.status != %d AND p.end_date < CURDATE()", $current_user_id, $current_user_id, $is_admin, 4 ) ); $project_labels = array_keys($project_status_counts); $project_data = array_values($project_status_counts); $project_bg_colors = array_values($project_bg_color); $labels[] = 'Overdue'; $data[] = $overdue; $task_bg_colors [] = '#e74c3c'; $project_labels[] = 'Overdue'; $project_data[] = $project_overdue; $project_bg_colors[] = '#e74c3c'; ?>