get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses" ); $categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories" ); $appearance_settings = get_option("wppm-ap-project-list"); $proj_per_page = 20; $page_no = (isset($_POST['page_no'])) ? intval(sanitize_text_field($_POST['page_no'])): '0'; $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : ''; $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :"ASC"; $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):"project_name"; $filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : "all"; $current_date = date('Y-m-d'); $wppm_pl_filter = "1=1"; $filters = array( 'sort_by' => $sort_by, 'order' => $order, 'search' => $search_tag, 'filter'=>$filter_by ); $pl_filters = isset( $_COOKIE['wppm_proj_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_proj_filters'] ) ) : $filters; if(!is_array($pl_filters)){ $pl_filters = json_decode($pl_filters); $pl_filters_arr = (array) $pl_filters; } else{ $pl_filters_arr = $filters; } $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : $pl_filters_arr['search']; $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :$pl_filters_arr['order']; $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):$pl_filters_arr['sort_by']; $filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : $pl_filters_arr['filter']; if($sort_by == ""){ $sort_by = 'project_name'; } $filters = array( 'sort_by' => $sort_by, 'order' => $order, 'search'=>$search_tag, 'filter'=>$filter_by ); setcookie('wppm_proj_filters',wp_json_encode( $filters ),time() + 3600); if($pl_filters_arr['sort_by']=='status'){ $sort_by = 'proj_statuses.name'; } if($pl_filters_arr['sort_by']=='category'){ $sort_by = 'proj_categories.name'; } if($pl_filters_arr['sort_by']=='start_date'){ $sort_by = 'start_date'; } if($pl_filters_arr['sort_by']=='end_date'){ $sort_by = 'end_date'; } if($sort_by=='category'){ $sort_by = 'proj_categories.name'; } if($filter_by=='completed'){ $wppm_pl_filter = "status='4'"; }elseif($filter_by=='overdue'){ $wppm_pl_filter = "status!='4' AND (CAST(end_date AS DATE)) < '$current_date'"; }elseif($filter_by == 'unassigned'){ $wppm_pl_filter = "users=''"; }elseif($filter_by == 'new'){ $wppm_pl_filter = "status='1'"; }elseif($filter_by == 'inprogress'){ $wppm_pl_filter = "status='2'"; }elseif($filter_by == 'hold'){ $wppm_pl_filter = "status='3'"; }elseif($filter_by == 'mine'){ $wppm_pl_filter = "(FIND_IN_SET('$current_user->ID',users)>0)"; } $wppm_project_time = get_option('wppm_project_time'); $wppm_default_project_date = get_option('wppm_default_project_date'); $sort_by = apply_filters('wppm_project_list_sort_by_query',$sort_by); $order = apply_filters('wppm_project_list_order_query',$order); $search_tag_text = '%'.$search_tag.'%'; if(!empty($search_tag)){ $search_tag_text = '%'.$search_tag.'%'; $query = ("SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text') Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id "); if($current_user->has_cap('manage_options')){ $where = " where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text'))"; }else{ $where = " where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')) AND ((FIND_IN_SET('$current_user->ID',Project.users)>0) OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1))"; } }else{ if($sort_by=='project_name'|| $sort_by=='start_date' || $sort_by=='end_date'){ $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id "); } else{ $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id "); } if($current_user->has_cap('manage_options')){ $where = " where $wppm_pl_filter"; }else{ $where = " where ($wppm_pl_filter AND (FIND_IN_SET('$current_user->ID',Project.users)>0 OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1)))"; } } $no_of_rows = ( "SELECT count(*) FROM ($query"); $no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows,$wppm_pl_filter,$search_tag); $where = apply_filters('wppm_project_list_query_where',$where, $wppm_pl_filter,$search_tag); $query .= $where." Group by Project.id ORDER BY $sort_by $order"; $no_of_rows .= $where." Group by Project.id) AS Project"; $totalrows = $wpdb->get_var( $no_of_rows ); $query = apply_filters('wppm_project_list_query',$query); $limit_start=$page_no*$proj_per_page; $limit="\n LIMIT ".$limit_start.",".$proj_per_page." "; $query = $query.$limit; $wppm_fillter = $wpdb->get_results($query); ?>