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'); 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 = ' AND (proj.project_name = "'.$proj_attr.'")'; }else{ $wppm_proj_attr = ''; } $current_date = 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 is_archived = 1"; } if( isset($page) && $page === 'wppm-tasks'){ $archived_where = " AND 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 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 = " where project_name = '".$proj_attr."' Group by proj.id ORDER BY ".$orderby_proj_sql; }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 ".$orderby_proj_sql; }else{ $where = " Group by proj.id ORDER BY ".$orderby_proj_sql; } } }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 $orderby_proj_sql"; } 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 $orderby_proj_sql"; } } $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; 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($_POST['order']) :$tl_filters_arr['order']; $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):$tl_filters_arr['sort_by']; $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']; $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); if($tl_filters_arr['sort_by']=='project'){ $sort_by = 'proj.project_name'; } if($tl_filters_arr['sort_by']=='start_date'){ $sort_by = 'Task.start_date'; } if($tl_filters_arr['sort_by']=='end_date'){ $sort_by = 'Task.end_date'; } if($tl_filters_arr['sort_by']=='status'){ $sort_by = 'task_statuses.name'; } if($tl_filters_arr['sort_by']=='priority'){ $sort_by='task_priorities.name'; } 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 = '$proj_filter'"; }else{ $wppm_task_by_proj_filter ="1=1"; } $wppm_default_task_date = get_option('wppm_default_task_date'); $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%'; 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) AND user.display_name LIKE '$search_tag_text' 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 "; }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') $wppm_proj_attr "; } } else{ 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 (((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 (FIND_IN_SET('$current_user->ID',proj.users)>0))) 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"; }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 (FIND_IN_SET('$current_user->ID',proj.users)>0))) 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"; } } }else{ 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 $wppm_proj_attr"; }else{ $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr"; } } else{ 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 $wppm_proj_attr"; }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 (FIND_IN_SET('$current_user->ID',proj.users)>0))) $wppm_proj_attr"; } } } $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); $sort_by = esc_sql($sort_by); $order = esc_sql($order); $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("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = '$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("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; } } } } 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;"; } ?>