ID); $page_no = isset($_POST['page_no']) ? intval(sanitize_text_field($_POST['page_no'])) : '0'; $orderby_sql = esc_sql(sanitize_sql_orderby( "load_order ASC" )); $task_status = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_statuses ORDER BY $orderby_sql " ); $wppm_task_time = get_option('wppm_task_time'); $page = isset($_POST['page']) ? sanitize_text_field($_POST['page']) : ''; $wppm_date_setting = get_option('wppm_date_setting'); $search_tag = isset($_POST['task_search']) ? sanitize_text_field($_POST['task_search']) : ''; $filter_by = isset($_POST['wppm_task_filter']) ? sanitize_text_field($_POST['wppm_task_filter']) : "all"; $proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field($_POST['wppm_proj_filter']) : "0"; $public_projects = isset($_POST['public_projects']) ? sanitize_text_field($_POST['public_projects']):"0"; $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true ); $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'); 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 = ''; } $filters = array( 'search' => $search_tag, 'filter'=>$filter_by, 'proj_filter'=>$proj_filter ); $grid_view_filter = $filters ; $tl_filters = isset( $_COOKIE['wppm_grid_view_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_grid_view_filters'] ) ) : $grid_view_filter; $current_date = date('Y-m-d'); $proj_attr = isset($_POST['wppm_project_attr']) ? sanitize_text_field($_POST['wppm_project_attr']):""; $archived_where = ""; if ( isset($page) && $page === 'wppm-archived-tasks' ) { $archived_where = " AND is_archived = 1"; } if( isset($page) && $page === 'wppm-tasks'){ $archived_where = " AND is_archived = 0"; } if(!empty($proj_attr )){ $proj_attr = esc_sql($proj_attr); $wppm_proj_attr = ' AND (proj.project_name = "'.$proj_attr.'")'; }else{ $wppm_proj_attr = ''; } $query = ("SELECT proj.* FROM {$wpdb->prefix}wppm_project AS proj Left join {$wpdb->prefix}wppm_project_meta proj_meta ON proj.id = proj_meta.project_id"); $santitize_order_by = esc_sql(sanitize_sql_orderby( "project_name ASC" )); if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){ if(!empty($proj_attr )){ $proj_attr = esc_sql($proj_attr); $where = " where project_name = '".$proj_attr."' Group by proj.id ORDER BY '$santitize_order_by'"; }else{ if(!empty($public_projects)){ $where = " where proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1 Group by proj.id ORDER BY '$santitize_order_by'"; }else{ $where = " Group by proj.id ORDER BY '$santitize_order_by'"; } } }else{ if(!empty($public_projects)){ $where = " where (proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) $wppm_proj_attr Group by proj.id ORDER BY '$santitize_order_by'"; } else{ $where = " where ((FIND_IN_SET($current_user->ID,proj.users)) OR (proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR ( proj.created_by='$cu_id')) $wppm_proj_attr Group by proj.id ORDER BY '$santitize_order_by'"; } } $where = apply_filters('wppm_project_filter_in_task_list_grid_view_where',$where); $query.= $where; $projects = $wpdb->get_results($query); $wppm_tl_filter = "1=1"; if(!is_array($tl_filters)){ $tl_filters = json_decode($tl_filters); $tl_filters_arr = (array) $tl_filters; } else{ $tl_filters_arr = $filters; } $search_tag = isset($_POST['task_search']) ? sanitize_text_field($_POST['task_search']) : $tl_filters_arr['search']; $filter_by = isset($_POST['wppm_task_filter']) ? sanitize_text_field($_POST['wppm_task_filter']) : $tl_filters_arr['filter']; $proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field($_POST['wppm_proj_filter']) : $tl_filters_arr['proj_filter']; $filters = array( 'search'=>$search_tag, 'filter'=>$filter_by, 'proj_filter' =>$proj_filter ); setcookie('wppm_grid_view_filters',wp_json_encode( $filters ),time() + 3600); 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"; } if(!empty($wppm_hide_task_statuses_from_frontend) && is_array($wppm_hide_task_statuses_from_frontend) && (isset($_POST['is_frontend']) && sanitize_text_field($_POST['is_frontend'])==1)){ foreach($wppm_hide_task_statuses_from_frontend as $status){ $wppm_tl_filter .= " AND Task.status != '$status'"; } } if($proj_filter!=0){ $wppm_task_by_proj_filter = "Task.project = ".esc_sql($proj_filter).""; }else{ $wppm_task_by_proj_filter ="1=1"; } if(!empty($task_status)){ foreach($task_status as $status) { $status_id = esc_sql($status->id); if(!empty($search_tag)){ $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%'; if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){ $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->base_prefix}users user ON (FIND_IN_SET(user.id,Task.users)>0) AND user.display_name LIKE '$search_tag_text' 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($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') AND Task.status='$status_id' "; }else{ $where = " where $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') AND Task.status='$status_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_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) AND user.display_name LIKE '$search_tag_text' 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($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')) AND Task.status= '$status_id'"; }else{ $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter AND (((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$cu_id') OR (proj_users.user_id = '$cu_id' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',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='$cu_id') 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')) AND Task.status= '$status_id'"; } } }else{ if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){ $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 "); $no_of_rows = ( "SELECT count(*) FROM ($query"); 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.status= '$status_id'"; }else{ $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter AND Task.status= '$status_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_project_meta proj_meta ON Task.project = proj_meta.project_id "); $no_of_rows = ( "SELECT count(*) FROM ($query"); 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.status= '$status_id'"; } else{ $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter AND ((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$cu_id') OR (proj_users.user_id = '$cu_id' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',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='$cu_id') AND Task.status= '$status_id'"; } } } $query = apply_filters('wppm_query_for_grid_view',$query); $no_of_rows = apply_filters('wppm_number_of_rows_query_for_grid_view',$no_of_rows); $where.= $wppm_proj_attr; if($filter_by != 'archived'){ $where .= $archived_where; } $where = apply_filters('wppm_task_list_where_for_grid_view',$where,$wppm_tl_filter,$search_tag); $no_of_rows .= $where; $no_of_rows .= " Group by Task.id) AS Task"; $no_of_rows = apply_filters('wppm_task_list_no_of_rows_for_grid_view',$no_of_rows); $totalrows = $wpdb->get_var($no_of_rows); $totalrows_tasks +=$totalrows; if($total_no_of_rows > $totalrows){ $totalrows = $total_no_of_rows; }else{ $total_no_of_rows = $totalrows; } $limit_start=$page_no*$task_per_page; $limit="\n LIMIT ".$limit_start.",".$task_per_page." "; $current_page=$page_no+1; $query = apply_filters('wppm_tasks_grid_view_query',$query,$search_tag); $where .= " Group by Task.id"; $query .= $where; $query = apply_filters('wppm_task_list_grid_view_query',$query); $query = $query.$limit; $wppm_task_fillter[] = $wpdb->get_results($query); } $total_pages=ceil($total_no_of_rows/$task_per_page); $prev_page_no=$current_page-1; $prev_class=(!$prev_page_no)?'disabled':''; $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page; $next_class=($total_pages==$current_page)?'disabled':''; $flag = false; if(!empty($wppm_task_fillter)){ foreach($wppm_task_fillter as $key_filter=>$val_filter){ foreach($val_filter as $key=>$val){ $val_array = (array) $val; $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("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$tproject_id' AND user_id = '$cu_id'"); $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$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; } } } } } } $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;"; } if ( isset($page) && $page === 'wppm-archived-tasks' ) { $ar_filter_style = "display:none;"; } else { $ar_filter_style = "display:flex;"; } ?>