array_map('absint', (array) ($raw_filters['created_by'] ?? [])), 'assigned' => array_map('absint', (array) ($raw_filters['assigned'] ?? [])), 'priority' => array_map('absint', (array) ($raw_filters['priority'] ?? [])), 'start_date' => sanitize_text_field($raw_filters['start_date'] ?? ''), 'end_date' => sanitize_text_field($raw_filters['end_date'] ?? ''), ]; } else { $advanced_filter = []; } }else{ $advanced_filter = []; } ///$advanced_filter = isset($_POST['filters']) ? (($_POST['filters'])) : "array()"; $proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field(wp_unslash($_POST['wppm_proj_filter'])) : "0"; $proj_attr = isset($_POST['wppm_project_attr']) ? sanitize_text_field(wp_unslash($_POST['wppm_project_attr'])):""; $public_projects = isset($_POST['public_projects']) ? sanitize_text_field(wp_unslash($_POST['public_projects'])):"0"; $tb_start_date = isset($_POST['tb_start_date']) ? sanitize_text_field($_POST['tb_start_date']) : ''; $tb_end_date = isset($_POST['tb_end_date']) ? sanitize_text_field($_POST['tb_end_date']) : ''; $tb_created_by = isset($_POST['tb_created_by']) ? sanitize_text_field($_POST['tb_created_by']) : ''; $page = isset($_POST['page']) ? sanitize_text_field(wp_unslash($_POST['page'])):""; $priorities = $wpdb->get_results("SELECT id, name FROM {$wpdb->prefix}wppm_task_priorities ORDER BY id ASC "); $users = get_users(array( 'orderby' => 'display_name', 'order' => 'ASC' )); $assigned_users = $wpdb->get_col( " SELECT DISTINCT users FROM {$wpdb->prefix}wppm_task WHERE users != ''"); $all_assigned = []; foreach ($assigned_users as $row) { $ids = explode(',', $row); foreach ($ids as $id) { $all_assigned[] = trim($id); } } $all_assigned = array_unique($all_assigned); $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true ); $wppm_create_tasks_coworkers_permission = get_option('wppm_allow_coworkers_create_task'); $orderby_proj_sql = esc_sql(sanitize_sql_orderby( "project_name" )); $wppm_date_setting = get_option('wppm_date_setting'); $wppm_hide_completed_status_task = get_option('wppm_hide_completed_status_task'); $wppm_hide_task_statuses_from_frontend = get_option('wppm_hide_task_statuses_from_frontend'); $wppm_deafault_time_duration_task = get_option('wppm_display_time_duration_task'); if(!empty($wppm_hide_task_statuses_from_frontend)){ $wppm_hide_task_statuses_from_frontend = explode(",",$wppm_hide_task_statuses_from_frontend); } else { $wppm_hide_task_statuses_from_frontend = ''; } $proj_attr = esc_sql($proj_attr); $is_frontend = 0; if ( ! empty( $proj_attr ) ) { $wppm_proj_attr = $wpdb->prepare( ' AND (proj.project_name = %s)', $proj_attr ); } else { $wppm_proj_attr = ''; } $current_date = wp_date('Y-m-d'); $current_date = esc_sql($current_date ); $cu_id = esc_sql($current_user->ID); $archived_where = ''; if ( isset( $page ) && $page === 'wppm-archived-tasks' ) { $archived_where = ' AND Task.is_archived = 1'; } elseif ( isset( $page ) && $page === 'wppm-tasks' ) { $archived_where = ' AND Task.is_archived = 0'; } $wppm_task_time = get_option('wppm_task_time'); $query = "SELECT proj.* FROM {$wpdb->prefix}wppm_project AS proj LEFT JOIN {$wpdb->prefix}wppm_project_meta AS proj_meta ON proj.id = proj_meta.project_id"; if ( $current_user->has_cap( 'manage_options' ) || $wppm_current_user_capability === 'wppm_admin' ) { if ( ! empty( $proj_attr ) ) { $where = $wpdb->prepare( " WHERE proj.project_name = %s GROUP BY proj.id ORDER BY $orderby_proj_sql", $proj_attr ); } else { if ( ! empty( $public_projects ) ) { $where = $wpdb->prepare( " WHERE proj_meta.meta_key = %s AND proj_meta.meta_value = %d GROUP BY proj.id ORDER BY $orderby_proj_sql", 'public_project', 1 ); } else { $where = " GROUP BY proj.id ORDER BY $orderby_proj_sql"; } } } else { if ( ! empty( $public_projects ) ) { $where = $wpdb->prepare( " WHERE ( proj_meta.meta_key = %s AND proj_meta.meta_value = %d ) $wppm_proj_attr GROUP BY proj.id ORDER BY $orderby_proj_sql", 'public_project', 1 ); } else { $where = $wpdb->prepare( " WHERE ( FIND_IN_SET(%d, proj.users) OR ( proj_meta.meta_key = %s AND proj_meta.meta_value = %d ) OR proj.created_by = %d ) $wppm_proj_attr GROUP BY proj.id ORDER BY $orderby_proj_sql", $current_user->ID, 'public_project', 1, $cu_id ); } } $where = apply_filters('wppm_project_filter_in_task_list_where',$where); $query.= $where; $projects = $wpdb->get_results($query); $appearance_settings = get_option("wppm-ap-task-list"); $filters = array( 'sort_by' => $sort_by, 'order' => $order, 'search' => $search_tag, 'filter'=>$filter_by, 'proj_filter' =>$proj_filter ); $tl_filters = isset( $_COOKIE['wppm_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_filters'] ) ) : $filters; $tl_advanced_filters = []; if ( !empty($_COOKIE['tb_list_filters']) ) { $tl_advanced_filters = json_decode( stripslashes($_COOKIE['tb_list_filters']), true ); if ( ! is_array($tl_advanced_filters) ) { $tl_advanced_filters = []; } } //$tl_advanced_filters = isset( $_COOKIE['wppm_advanced_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_advanced_filters'] ) ) : $tl_advanced_filters; if(!is_array($tl_filters)){ $tl_filters = json_decode($tl_filters); $tl_filters_arr = (array) $tl_filters; } else{ $tl_filters_arr = $filters; } $wppm_tl_filter = "1=1"; $order = isset($_POST['order']) ? sanitize_text_field(wp_unslash($_POST['order'])) :$tl_filters_arr['order']; $sort_by = isset($_POST['sort_by']) ? sanitize_text_field(wp_unslash($_POST['sort_by'])):$tl_filters_arr['sort_by']; $search_tag = isset($_POST['task_search']) ? sanitize_text_field(wp_unslash($_POST['task_search'])) : $tl_filters_arr['search']; $filter_by = isset($_POST['wppm_task_filter']) ? sanitize_text_field(wp_unslash($_POST['wppm_task_filter'])) : $tl_filters_arr['filter']; $proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field(wp_unslash($_POST['wppm_proj_filter'])) : $tl_filters_arr['proj_filter']; $proj_filter = esc_sql($proj_filter); if($sort_by == ""){ $sort_by = 'task_name'; } $filters = array( 'sort_by' => $sort_by, 'order' => $order, 'search'=>$search_tag, 'filter'=>$filter_by, 'proj_filter'=>$proj_filter ); setcookie('wppm_filters',wp_json_encode( $filters ),time() + 3600); //setcookie('wppm_advanced_filters',wp_json_encode( $tl_advanced_filters ),time() + 3600); // Allowed sort columns $allowed_sort_by = [ 'project' => 'proj.project_name', 'status' => 'task_statuses.name', 'priority' => 'task_priorities.name', 'start_date' => 'Task.start_date', 'end_date' => 'Task.end_date', 'TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)' => 'TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)', ]; // Resolve sort_by safely $sort_key = isset($_POST['sort_by']) ? sanitize_text_field(wp_unslash($_POST['sort_by'])) : ($tl_filters_arr['sort_by'] ?? 'task_name'); $sort_by = $allowed_sort_by[$sort_key] ?? 'Task.task_name'; // Resolve order safely $order = (isset($_POST['order']) && strtoupper(wp_unslash($_POST['order'])) === 'ASC') ? 'ASC' : 'DESC'; if($filter_by=='all'){ if($wppm_hide_completed_status_task == 0){ $wppm_tl_filter = "Task.status!='4'"; } } if($filter_by=='4'){ $wppm_tl_filter = "Task.status='4'"; }elseif($filter_by=='overdue'){ $wppm_tl_filter = "Task.status!='4' AND (CAST(Task.end_date AS DATE)) < '$current_date'"; }elseif($filter_by == 'unassigned'){ $wppm_tl_filter = "Task.users=''"; }elseif($filter_by == '1'){ $wppm_tl_filter = "Task.status='1'"; }elseif($filter_by == '2'){ $wppm_tl_filter = "Task.status='2'"; }elseif($filter_by == '3'){ $wppm_tl_filter = "Task.status='3'"; }elseif($filter_by == 'mine'){ $wppm_tl_filter = "(FIND_IN_SET('$current_user->ID',Task.users)>0)"; }elseif($filter_by == 'archived'){ $wppm_tl_filter = "Task.is_archived = 1"; } elseif($filter_by == 'today'){ $wppm_tl_filter = "DATE(Task.end_date) = CURDATE()"; }elseif($filter_by == 'upcoming'){ $wppm_tl_filter = "DATE(Task.end_date) BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY) AND Task.status != 4 AND Task.active = 1 AND Task.is_archived = 0"; }elseif ($filter_by == 'mytasks') { $wppm_tl_filter = "( FIND_IN_SET('$current_user->ID', Task.users) OR Task.created_by = '$current_user->ID' ) AND Task.status != 4 AND Task.active = 1 AND Task.is_archived = 0"; } if(!empty($tl_advanced_filters['created_by'])){ $created_by_ids = array_map('intval', $tl_advanced_filters['created_by']); $wppm_tl_filter .= " AND Task.created_by IN (" . implode(',', $created_by_ids) . ")"; } if(!empty($tl_advanced_filters['assigned'])){ $assigned_ids = array_map('intval', $tl_advanced_filters['assigned']); $assigned_sql = []; foreach ($assigned_ids as $id) { $assigned_sql[] = "FIND_IN_SET('$id', Task.users)"; } $wppm_tl_filter .= " AND (" . implode(' OR ', $assigned_sql) . ")"; } if(!empty($tl_advanced_filters['priority'])){ $priority = array_map('intval', $tl_advanced_filters['priority']); $wppm_tl_filter .= " AND Task.priority IN (" . implode(',', $priority) . ")"; } if(!empty($tl_advanced_filters['start_date'])){ $start_date = sanitize_text_field($tl_advanced_filters['start_date']); $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.start_date AS DATE)) >= %s", $start_date); } if(!empty($tl_advanced_filters['end_date'])){ $end_date = sanitize_text_field($tl_advanced_filters['end_date']); $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.end_date AS DATE)) <= %s", $end_date); } $advanced_conditions = []; // Created By if (!empty($advanced_filter['created_by'])) { $created_by_ids = array_map('intval', $advanced_filter['created_by']); $advanced_conditions[] = "Task.created_by IN (" . implode(',', $created_by_ids) . ")"; } // Assigned Users if (!empty($advanced_filter['assigned'])) { $assigned_ids = array_map('intval', $advanced_filter['assigned']); $assigned_sql = []; foreach ($assigned_ids as $id) { $assigned_sql[] = "FIND_IN_SET('$id', Task.users)"; } $advanced_conditions[] = "(" . implode(' OR ', $assigned_sql) . ")"; } // Priority if (!empty($advanced_filter['priority'])) { $priority = array_map('intval', $advanced_filter['priority']); $advanced_conditions[] = "Task.priority IN (" . implode(',', $priority) . ")"; } // Start Date if (!empty($advanced_filter['start_date'])) { $start_date = sanitize_text_field($advanced_filter['start_date']); $advanced_conditions[] = $wpdb->prepare("(CAST(Task.start_date AS DATE)) >= %s", $start_date); } // End Date if (!empty($advanced_filter['end_date'])) { $end_date = sanitize_text_field($advanced_filter['end_date']); $advanced_conditions[] = $wpdb->prepare("(CAST(Task.end_date AS DATE)) <= %s", $end_date); } if (!empty($advanced_conditions)) { $wppm_tl_filter .= " AND " . implode(" AND ", $advanced_conditions); } // Subtasks are shown only within their parent task, never as their own row in the task list. $wppm_tl_filter .= " AND (Task.parent_task_id = 0 OR Task.parent_task_id IS NULL)"; //setcookie('wppm_advanced_filters',wp_json_encode( $advanced_filter ),time() + 3600); if(!empty($wppm_hide_task_statuses_from_frontend) && is_array($wppm_hide_task_statuses_from_frontend) && ((isset($_POST['is_frontend'])) && (sanitize_text_field(wp_unslash($_POST['is_frontend']))==1))){ foreach($wppm_hide_task_statuses_from_frontend as $status){ $wppm_tl_filter .= " AND Task.status != '$status'"; } } if ( $proj_filter != 0 || $project_id != 0 ) { if ( $project_id != 0 ) { $proj_filter = $project_id; } $proj_filter = absint( $proj_filter ); $wppm_task_by_proj_filter = $wpdb->prepare( "Task.project = %d", $proj_filter ); } else { $wppm_task_by_proj_filter = "1=1"; } $wppm_default_task_date = get_option('wppm_default_task_date'); $search_tag_text = ""; if(!empty($search_tag)){ $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%'; $query = ("SELECT Task.* FROM {$wpdb->prefix}wppm_task AS Task Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Task.users)>0) Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id"); } else{ if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){ if($sort_by=='task_name'|| $sort_by=='start_date' || $sort_by=='end_date'){ $query = ( "SELECT Task.* FROM {$wpdb->prefix}wppm_task AS Task Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id "); } else{ $query = ( "SELECT Task.* FROM {$wpdb->prefix}wppm_task AS Task Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id "); } }else{ $query = ( "SELECT Task.* FROM {$wpdb->prefix}wppm_task AS Task Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id "); } } $no_of_rows = ( "SELECT count(*) FROM ($query"); if(!empty($search_tag )){ if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){ if(!empty($public_projects)){ //$where = " where (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND $wppm_tl_filter AND $wppm_task_by_proj_filter AND (Task.task_name LIKE '$search_tag_text' OR proj.project_name LIKE '$search_tag_text' OR task_statuses.name LIKE '$search_tag_text' OR task_priorities.name LIKE '$search_tag_text' OR user.display_name LIKE '$search_tag_text') $wppm_proj_attr "; $where = $wpdb->prepare( " WHERE (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND $wppm_tl_filter AND $wppm_task_by_proj_filter AND ( Task.task_name LIKE %s OR proj.project_name LIKE %s OR task_statuses.name LIKE %s OR task_priorities.name LIKE %s OR user.display_name LIKE %s ) $wppm_proj_attr", $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text ); }else{ $where = $wpdb->prepare( " WHERE $wppm_tl_filter AND $wppm_task_by_proj_filter AND ( Task.task_name LIKE %s OR proj.project_name LIKE %s OR task_statuses.name LIKE %s OR task_priorities.name LIKE %s OR user.display_name LIKE %s ) $wppm_proj_attr", $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text ); } } else{ if(!empty($public_projects)){ $where = $wpdb->prepare( " WHERE (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND (proj.is_archived = 0) AND $wppm_tl_filter AND $wppm_task_by_proj_filter AND ( ( FIND_IN_SET(%d, Task.users) > 0 OR Task.created_by = %d OR ( proj_users.user_id = %d AND proj_users.role_id = 1 AND FIND_IN_SET(%d, proj.users) > 0 ) OR ( Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1 ) OR ( proj.created_by = %d AND FIND_IN_SET(%d, proj.users) > 0 ) ) AND ( Task.task_name LIKE %s OR proj.project_name LIKE %s OR task_statuses.name LIKE %s OR task_priorities.name LIKE %s OR user.display_name LIKE %s ) ) $wppm_proj_attr", $current_user->ID, $cu_id, $cu_id, $current_user->ID, $cu_id, $current_user->ID, $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text ); }else{ $where = $wpdb->prepare( " WHERE (proj.is_archived = 0) AND $wppm_tl_filter AND $wppm_task_by_proj_filter AND ( ( FIND_IN_SET(%d, Task.users) > 0 OR Task.created_by = %d OR ( proj_users.user_id = %d AND proj_users.role_id = 1 AND FIND_IN_SET(%d, proj.users) > 0 ) OR ( Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1 ) OR ( proj.created_by = %d AND FIND_IN_SET(%d, proj.users) > 0 ) ) AND ( Task.task_name LIKE %s OR proj.project_name LIKE %s OR task_statuses.name LIKE %s OR task_priorities.name LIKE %s OR user.display_name LIKE %s ) ) $wppm_proj_attr", $current_user->ID, $cu_id, $cu_id, $current_user->ID, $cu_id, $current_user->ID, $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text, $search_tag_text ); } } }else{ if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){ if(!empty($public_projects)){ $where = $wpdb->prepare( " WHERE (proj_meta.meta_key = %s AND proj_meta.meta_value = %d) AND (proj.is_archived = 0) AND $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr", 'public_project', 1 ); }else{ $where = " where (proj.is_archived = 0) AND $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr"; } } else{ if(!empty($public_projects)){ $where = $wpdb->prepare( " WHERE ( proj_meta.meta_key = %s AND proj_meta.meta_value = %d ) AND (proj.is_archived = 0) AND $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr", 'public_project', 1 ); }else{ $where = $wpdb->prepare( " WHERE (proj.is_archived = 0) AND $wppm_tl_filter AND $wppm_task_by_proj_filter AND ( ( FIND_IN_SET(%d, Task.users) > 0 ) OR ( Task.created_by = %d ) OR ( proj_users.user_id = %d AND proj_users.role_id = %d AND FIND_IN_SET(%d, proj.users) > 0 ) OR ( Task.project = proj_meta.project_id AND proj_meta.meta_key = %s AND proj_meta.meta_value = %d ) OR ( proj.created_by = %d AND FIND_IN_SET(%d, proj.users) > 0 ) ) $wppm_proj_attr", $current_user->ID, $cu_id, $cu_id, 1, $current_user->ID, 'public_project', 1, $cu_id, $current_user->ID ); } } } $query = apply_filters('wppm_task_list_list_view_query',$query,$search_tag_text); $no_of_rows= apply_filters('wppm_task_list_number_of_rows_query',$no_of_rows,$search_tag_text); $where = apply_filters('wppm_task_list_query_where',$where, $wppm_tl_filter,$search_tag_text); if($filter_by != 'archived'){ $where .= $archived_where; } $no_of_rows_where = $where." Group by Task.id) AS Task"; $no_of_rows .= $no_of_rows_where; $no_of_rows = apply_filters('wppm_task_list_no_of_rows',$no_of_rows,$wppm_tl_filter,$search_tag_text); $totalrows = $wpdb->get_var($no_of_rows); $query .= $where." Group by Task.id ORDER BY ".$sort_by." ".$order.""; $query = apply_filters('wppm_task_list_query',$query); $limit_start=$page_no*$task_per_page; $limit="\n LIMIT ".$limit_start.",".$task_per_page." "; $task_id_array = array(); $query = $query.$limit; $wppm_task_fillter = $wpdb->get_results($query); $flag = false; $project_creator = $wpdb->get_var($wpdb->prepare("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d",$cu_id)); if(!empty($wppm_task_fillter)){ foreach($wppm_task_fillter as $key_filter=>$val_filter){ $val_array = (array) $val_filter; $tusers = $val_array['users']; $tusers_arr = explode(',',$tusers); $tproject_id = esc_sql($val_array['project']); if(!empty($tusers) && in_array($current_user->ID,$tusers_arr)){ $project_user_role = $wpdb->get_var($wpdb->prepare("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$tproject_id,$cu_id)); $project_users = $wpdb->get_var($wpdb->prepare("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = %d",$tproject_id)); $project_users_arr = explode(',',(string)$project_users); if(((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr))){ $flag= true; break; } } } } if(($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || ($flag==true) || ($project_creator!="")) && (isset($page) && $page != 'wppm-archived-tasks' )){ $style = "display:inline;"; }else{ $style = "display:none;"; } $style = apply_filters('wppm_tl_add_new_task_btn_style',$style); if($current_user->has_cap('manage_options') || $wppm_current_user_capability == ('wppm_admin') || ($flag==true) || ($wppmfunction->has_permission('change_task_status',0))!="" || ($project_creator!="")){ $cs_style = "display:flex;"; }else{ $cs_style = "display:none;"; } if ( isset($page) && $page === 'wppm-archived-tasks' ) { $ar_filter_style = "display:none;"; } else { $ar_filter_style = "display:flex;"; } $todo_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(1)."'" ); $inp_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(2)."'" ); $hold_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(3)."'" ); $completed_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(4)."'" ); $todo_status_style = (!empty($todo_status_name))? "display:inline" :"display:none;"; $inp_status_style = (!empty($inp_status_name))? "display:inline" :"display:none;"; $hold_status_style = (!empty($hold_status_name))? "display:inline" :"display:none;"; $completed_status_style = (!empty($completed_status_name))? "display:inline" :"display:none;"; if( isset($page) && $page === 'wppm-tasks'){ $arch_filter_style = "display:inline;"; }else{ $arch_filter_style = "display:none;"; } ?>
task_status
priority
delete

grid_view
get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_statuses", OBJECT_K ); $priorities = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_priorities", OBJECT_K ); $projects = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project", OBJECT_K) ; $task_ids = wp_list_pluck($wppm_task_fillter, 'id'); $checklist_counts = []; if (!empty($task_ids)) { $task_ids_sql = implode(',', array_map('absint', $task_ids)); $checklist_results = $wpdb->get_results(" SELECT checklist.task_id, COUNT(Items.id) AS total_items, SUM(CASE WHEN Items.checked = 1 THEN 1 ELSE 0 END) AS checked_items FROM {$wpdb->prefix}wppm_checklist_items AS Items LEFT JOIN {$wpdb->prefix}wppm_checklist AS checklist ON Items.checklist_id = checklist.id WHERE checklist.task_id IN ($task_ids_sql) GROUP BY checklist.task_id" ); foreach ($checklist_results as $row) { $checklist_counts[$row->task_id] = [ 'total' => (int) $row->total_items, 'checked' => (int) $row->checked_items, ]; } } if(!empty($wppm_task_fillter)){ foreach($wppm_task_fillter as $task) { $task_id = absint($task->id); $wppm_task_duration = $wppmfunction->wppm_get_duration($task->start_date,$task->end_date); $checklists = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_checklist where task_id = %d",$task_id) ); if(!empty($task)){ $taskdata = $wppmfunction->get_task($task->id); $project_data = $wppmfunction->get_project($task->project); $task_index++; $total = $checklist_counts[$task_id]['total'] ?? 0; $total_checked_items = $checklist_counts[$task_id]['checked'] ?? 0; if(isset($task->status)){ $tstatus = absint($task->status); $status = $statuses[$task->status] ?? null; } if(!empty($task->priority)){ $tpriority = absint($task->priority); $priority = $priorities[$task->priority] ?? null; } if(isset($task->project)){ $tproj = absint($task->project); $project = $projects[$task->project] ?? null; } if($wppm_task_time == 1){ $tsDate = new DateTime($task->start_date); $teDate = new DateTime($task->end_date); if($task->start_date=='0000-00-00 00:00:00'){ if($wppm_date_setting=='Y-m-d H:i:s'){ $task_start_date = '0000-00-00 00:00:00'; }elseif($wppm_date_setting=='d-m-Y H:i:s'){ $task_start_date = '00-00-0000 00:00:00'; }elseif($wppm_date_setting=='m-d-Y H:i:s'){ $task_start_date = '00-00-0000 00:00:00'; }else{ $task_start_date = '0000-00-00 00:00:00'; } }if($task->end_date=='0000-00-00 00:00:00'){ if($wppm_date_setting=='Y-m-d H:i:s'){ $task_end_date = '0000-00-00 00:00:00'; }elseif($wppm_date_setting=='d-m-Y H:i:s'){ $task_end_date = '00-00-0000 00:00:00'; }elseif($wppm_date_setting=='m-d-Y H:i:s'){ $task_end_date = '00-00-0000 00:00:00'; }else{ $task_end_date = '0000-00-00 00:00:00'; } }if($task->start_date!='0000-00-00 00:00:00'){ if(!empty($wppm_date_setting)){ $task_start_date = $tsDate->format($wppm_date_setting); } else { $task_start_date = isset($task->start_date)? $task->start_date:""; } }if($task->end_date!='0000-00-00 00:00:00'){ if(!empty($wppm_date_setting)){ $task_end_date = $teDate->format($wppm_date_setting); }else{ $task_end_date = isset($task->end_date) ? $task->end_date: "" ; } } } elseif($wppm_task_time == 0){ $tsDate = new DateTime($task->start_date); $teDate = new DateTime($task->end_date); $task_start_date = $tsDate->format('Y-m-d'); $task_end_date = $teDate->format('Y-m-d'); if($task->start_date=='0000-00-00 00:00:00'){ if($wppm_date_setting=='Y-m-d H:i:s'){ $task_start_date = '0000-00-00'; }elseif($wppm_date_setting=='d-m-Y H:i:s'){ $task_start_date = '00-00-0000'; }elseif($wppm_date_setting=='m-d-Y H:i:s'){ $task_start_date = '00-00-0000'; }else{ $task_start_date = '0000-00-00'; } } if($task->end_date=='0000-00-00 00:00:00'){ if($wppm_date_setting=='Y-m-d H:i:s'){ $task_end_date = '0000-00-00'; }elseif($wppm_date_setting=='d-m-Y H:i:s'){ $task_end_date = '00-00-0000'; }elseif($wppm_date_setting=='m-d-Y H:i:s'){ $task_end_date = '00-00-0000'; }else{ $task_end_date = '0000-00-00'; } } if($task->start_date!='0000-00-00 00:00:00'){ if($wppm_date_setting=='Y-m-d H:i:s'){ $task_start_date = $tsDate->format('Y-m-d'); }elseif($wppm_date_setting=='d-m-Y H:i:s'){ $task_start_date = $tsDate->format('d-m-Y'); }elseif($wppm_date_setting=='m-d-Y H:i:s'){ $task_start_date = $tsDate->format('m-d-Y'); }else{ $task_start_date = $tsDate->format('Y-m-d'); } } if($task->end_date!='0000-00-00 00:00:00'){ if($wppm_date_setting=='Y-m-d H:i:s'){ $task_end_date = $teDate->format('Y-m-d'); }elseif($wppm_date_setting=='d-m-Y H:i:s'){ $task_end_date = $teDate->format('d-m-Y'); }elseif($wppm_date_setting=='m-d-Y H:i:s'){ $task_end_date = $teDate->format('m-d-Y'); }else{ $task_end_date = $teDate->format('Y-m-d'); } } } $url = $wppmfunction->get_task_url( $task->id, $is_frontend ); ?> status!=4 && $task_end_date < $current_date && $task_end_date != '0000-00-00 00:00:00' && $task_end_date != '00-00-0000 00:00:00' && $task_end_date != '00-00-0000' && $task_end_date != '0000-00-00')){ $style = "color:#FF2222"; } else { $style = "color:#2C3E50"; } ?>
chevron_sort_up_icon chevron_sort_down_icon
chevron_sort_up_icon chevron_sort_down_icon chevron_sort_up_icon chevron_sort_down_icon chevron_sort_up_icon chevron_sort_down_icon chevron_sort_up_icon chevron_sort_down_icon chevron_sort_up_icon chevron_sort_down_icon chevron_sort_up_icon chevron_sort_down_icon
task_name) ?> get_subtask_progress($task->id); if($wppm_row_subtask_progress['total'] > 0){ ?> project_name)){ echo esc_html($project->project_name); } ?> status)){ ?> ; color: color))? esc_attr($status->color):""; ?>">name))? esc_html($status->name):"" ?> priority)){ ?> ; color: color))? esc_attr($priority->color):""; ?>">name))? esc_html($priority->name):"" ?> status!=4 && $task_end_date < $current_date && $task_end_date != '0000-00-00 00:00:00' && $task_end_date != '00-00-0000 00:00:00' && $task_end_date != '00-00-0000' && $task_end_date != '0000-00-00')){ $style = "color:#FF0000"; } else{ $style = "color:#2C3E50"; }?> users)){ $users = explode(",",$task->users); foreach($users as $user){ if( (!empty($proj_users)) && (in_array($user,$proj_users))){ $i++; if( $i <= 4 ){ $userdata = get_userdata( $user ); if(!empty($userdata)){ ?> ID, 25, "mysteryman")?> 4){ ?> +

    
">     style="cursor:pointer;"> style="cursor:pointer;">