# taskbuilder/4.0.9/includes/admin/projects/projects_list.php

Taskbuilder – Project Management &amp; Task Management Tool With Kanban Board, version 4.0.9. 572 lines.

- Page: https://pluginprobe.com/plugins/taskbuilder/4.0.9/code/includes/admin/projects/projects_list.php
- Raw: https://pluginprobe.com/plugins/taskbuilder/4.0.9/raw/includes/admin/projects/projects_list.php
- Modified: 2025-07-17T10:12:10+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/taskbuilder/4.0.9/code/includes/admin/projects/projects_list.php#L10-L20`.

```php
<?php
if ( ! defined( 'ABSPATH' ) ) {
  exit; // Exit if accessed directly
}
global $wpdb,$wppmfunction,$current_user;
$status = $wpdb->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");
$wppm_date_setting = get_option('wppm_date_setting');
$wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
$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";
$wppm_hide_completed_status_proj = get_option('wppm_hide_completed_status_proj');
$cu_id = esc_sql($current_user->ID);
$wppm_hide_proj_statuses_from_frontend = get_option('wppm_hide_proj_statuses_from_frontend');
if(!empty($wppm_hide_proj_statuses_from_frontend)){
  $wppm_hide_proj_statuses_from_frontend = explode(",",$wppm_hide_proj_statuses_from_frontend);
} else {
  $wppm_hide_proj_statuses_from_frontend = '';
}
$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=='all'){
  if($wppm_hide_completed_status_proj == 0){
     $wppm_pl_filter = "status!='4'";
  }
}
if($filter_by=='4'){
  $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 == '1'){
	$wppm_pl_filter = "status='1'";
}elseif($filter_by == '2'){
	$wppm_pl_filter = "status='2'";
}elseif($filter_by == '3'){
	$wppm_pl_filter = "status='3'";
}elseif($filter_by == 'mine'){
	$wppm_pl_filter = "(FIND_IN_SET('$current_user->ID',users)>0)";
}

if(!empty($wppm_hide_proj_statuses_from_frontend) && is_array($wppm_hide_proj_statuses_from_frontend) && ((isset($_POST['is_frontend'])) && (sanitize_text_field($_POST['is_frontend'])==1))){
  foreach($wppm_hide_proj_statuses_from_frontend as $status){
    $wppm_pl_filter .= " AND status != '$status'";
  }
}

$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 = '%'.$wpdb->esc_like($search_tag).'%';
if(!empty($search_tag)){
  $search_tag_text = '%'.$wpdb->esc_like($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') || $wppm_current_user_capability == 'wppm_admin'){
    $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) OR Project.created_by='$cu_id')";
  }
}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') || $wppm_current_user_capability == 'wppm_admin'){
    $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)) OR Project.created_by='$cu_id')";
  }
}
$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);
$sort_by = esc_sql($sort_by);
$order = esc_sql($order);
$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);
$new_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(1)."'" );
$inp_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(2)."'" );
$hold_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(3)."'" );
$completed_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(4)."'" );
$new_style = (!empty($new_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;";
$complete_status_style = (!empty($completed_status_name))? "display:inline" :"display:none;";
?>
<form id="wppm_project_list_frm">
  <div id="wppm-container">
    <div id="wppm_project_list_container" class="wppm_bootstrap">
      <div class="row">
        <div class="col-sm-12" id="wppm_heading_inline">
          <span class="wppm-heading-inline">
            <?php echo esc_html_e('Projects','taskbuilder');?>
          </span>
          <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin' ){ ?>
                    <img width="25" height="30" id="wppm_add_new_project_btn" class="wppm_add_new_project_btn" onclick="wppm_add_new_project()" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/add.svg'); ?>" alt="add">
          <?php } ?>
        </div>
      </div>
      <div style="display:flex;justify-content:space-between;margin-top:20px;flex-wrap: wrap;">
        <div style="display:flex;flex-wrap: wrap;">
          <div id="wppm_project_filter_container">
            <div class="wppm-bulk-actions" style="margin-bottom: 10px;">
              <button 
                id="wppm-bulk-actions-btn"
                class="wppm-button small secondary"
                type="button"
                style="display:none;padding:14px;font: 13px Helvetica Neue, Arial, Helvetica, sans-serif !important"
                data-popover="wppm-bulk-actions">
                <?php esc_attr_e( 'Bulk Actions ', 'taskbuilder' ); ?><img style="color:#313042" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/wppm_chevron_down_icon.svg'); ?>" alt="chevron_down">
              </button>
              <div id="wppm-bulk-actions" class="gpopover wppm-popover-menu wppm-proj-bulk-actions">
                <div class="wppm-popover-menu-item" onclick="wppm_bulk_change_status('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_status' ) ); ?>');">
                  <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/gps-navigation.svg'); ?>" alt="status"><?php echo esc_html_e('Change Status','taskbuilder'); ?></span>
                </div>
                <div class="wppm-popover-menu-item" onclick="wppm_bulk_change_category('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_category' ) ); ?>');">
                  <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/tags.svg'); ?>" alt="category"><?php echo esc_html_e('Change Category','taskbuilder'); ?></span>
                </div>
                <div class="wppm-popover-menu-item" onclick="wppm_bulk_assign_users('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_assign_users' ) ); ?>');">
                  <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/users.svg'); ?>" alt="users"><?php echo esc_html_e('Assign Co-workers','taskbuilder'); ?></span>
                </div>
                <div class="wppm-popover-menu-item" onclick="wppm_bulk_delete_project('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_assign_users' ) ); ?>');">
                  <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash-alt-solid.svg'); ?>" alt="delete"><?php echo esc_html_e('Delete','taskbuilder'); ?></span>
                </div>
              </div>
            </div>
            <div class="wppm-filter-item">
              <label for="wppm_project_filter"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
              <select id="wppm_project_filter" name="wppm_project_filter" onchange="wppm_apply_project_filter()">
                <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
                <option style="<?php echo $new_style ?>" value="1" <?php echo ($filter_by == "1")? 'selected':""?>><?php echo  esc_html_e($new_status_name,'taskbuilder');?></option>
                <option style="<?php echo $inp_status_style ?>" value="2" <?php echo ($filter_by == "2")? 'selected':""?>><?php echo  esc_html_e($inp_status_name,'taskbuilder');?></option>
                <option style="<?php echo $hold_status_style ?>" value="3" <?php echo ($filter_by == "3")? 'selected':""?>><?php echo  esc_html_e($hold_status_name,'taskbuilder');?></option>
                <option style="<?php echo $complete_status_style ?>" value="4" <?php echo ($filter_by == "4")? 'selected':""?>><?php echo  esc_html_e($completed_status_name,'taskbuilder');?></option>
                <option value="mine" <?php echo ($filter_by == "mine")? 'selected':""?>><?php echo  esc_html_e('Mine','taskbuilder');?></option>
                <option value="unassigned" <?php echo ($filter_by == "unassigned")? 'selected':""?>><?php echo  esc_html_e('Unassigned','taskbuilder');?></option>
                <option value="overdue" <?php echo ($filter_by == "overdue")? 'selected':""?>><?php echo  esc_html_e('Overdue','taskbuilder');?></option>
              </select>
            </div>
            <div class="wppm_display_submit">
              <div class="wppm-filter-actions">
                  <span class="wppm-link" onclick="wppm_pl_reset_filter()"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
              </div>
            </div>
          </div>
        </div>
        <div id="wppm_project_and_task_search" style="display:flex;justify-content:flex-end;">
          <img width="25px" id="wppm_project_search_filter_img" style="position: relative;top: 10px;left: 30px;" height="15px" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/search.svg'); ?>" alt="search">
          <input type="search" id="wppm_project_search_filter" style="margin-right:10px;" name="wppm_project_search_filter" class="form-control form-control-sm" aria-controls="selection-datatable" placeholder="<?php echo esc_attr__('Search','taskbuilder');?>" value="<?php echo (!empty($search_tag)) ? esc_attr($search_tag) : "" ?>">
        </div>
      </div>
      <script>
        jQuery('#wppm-more-actions-btn, #wppm-bulk-actions-btn').gpopover({width: 200});
      </script>
      <div class="table-responsive">
        <table id="wppm_project_table" class="wppm_table table">
          <tr>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>" onchange="wppm_bulk_select_change()">
              <div class="checkbox-container">
                <input id="wppm_bulk_select_option" class="wppm-bulk-selector" type="checkbox" onchange="wppm_bulk_select_change();"/>
                <label for="wppm_bulk_select_option"></label>
              </div>
            </th>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
              <span id="wppm_proj_name_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Project','taskbuilder'); ?></span>
              <img width="16" height="16" onclick="wppm_sort_up_project_list('project_name','ASC')" style = "<?php echo ($sort_by == 'project_name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_name_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
              <img width="16" height="16" onclick="wppm_sort_up_project_list('project_name','DESC')" style = "<?php echo ($sort_by == 'project_name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_name_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
            </th>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
              <span id="wppm_project_status_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder'); ?></span>
              <img width="16" height="16" onclick="wppm_sort_up_project_list('status','ASC')" style = "<?php echo ($sort_by == 'proj_statuses.name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_status_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
              <img width="16" height="16" onclick="wppm_sort_up_project_list('status','DESC')" style = "<?php echo ($sort_by == 'proj_statuses.name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_status_img" class="wppm_chevron_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
            </th>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
              <span id="wppm_proj_list_users_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Users','taskbuilder'); ?></span></th>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
              <span id="wppm_project_category_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Category','taskbuilder'); ?></span>
              <img width="16" height="16" onclick="wppm_sort_up_project_list('category','ASC')" style = "<?php echo ($sort_by == 'proj_categories.name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_cat_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
              <img width="16" height="16" onclick="wppm_sort_up_project_list('category','DESC')" style = "<?php echo ($sort_by == 'proj_categories.name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_cat_img" class="wppm_chevron_img"  src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
            </th>
            <?php if($wppm_default_project_date==1){ ?>
                    <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
                      <span id="wppm_project_start_date_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Start Date','taskbuilder'); ?></span>
                      <img width="16" height="16" onclick="wppm_sort_up_project_list('start_date','ASC')" style = "<?php echo ($sort_by == 'start_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_start_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
                      <img width="16" height="16" onclick="wppm_sort_up_project_list('start_date','DESC')" style = "<?php echo ($sort_by == 'start_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_start_date_img" class="wppm_chevron_img"  src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
                    </th>
                    <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
                      <span id="wppm_project_end_date_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('End Date','taskbuilder'); ?></span>
                      <img width="16" height="16" onclick="wppm_sort_up_project_list('end_date','ASC')" style = "<?php echo ($sort_by == 'end_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_end_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
                      <img width="16" height="16" onclick="wppm_sort_up_project_list('end_date','DESC')" style = "<?php echo ($sort_by == 'end_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_end_date_img" class="wppm_chevron_img"  src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
                    </th>
            <?php } ?>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>"><span style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('No. of tasks','taskbuilder'); ?></span></th>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>"></th>
          </tr>
          <tbody>
          <?php
          $total_projects=0;
          $users = array();
          if(!empty($wppm_fillter)){ 
            foreach( $wppm_fillter as $project ){ 
                $total_projects++;
                $proejctdata = $wppmfunction->get_project($project->id);
                $pstatus= esc_sql($project->status);
                $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id='$pstatus'" );
                $users = explode(",",$project->users);
                $pid= esc_sql($project->id);
                if(isset($project->cat_id)){
                  $pcat_id = esc_sql($project->cat_id);
                  $category = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_categories where id='$pcat_id'" );
                }
                if(isset($project->id)){
                  if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
                    $no_of_tasks = $wpdb->get_var("SELECT count(*) FROM {$wpdb->prefix}wppm_task WHERE project='$pid' ");
                  }else{
                    $query =("SELECT count(*) FROM  
                            ( 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 proj.id = proj_meta.project_id
                            where Task.project = '$pid' 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 ) OR (proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR ( Task.project = proj.id AND proj.created_by='$cu_id')) Group by Task.id ) AS Task");
                    $no_of_tasks = $wpdb->get_var($query);
                    }
                    $no_of_tasks = apply_filters('wppm_no_of_task_proj_list_query',$no_of_tasks,$project->id);
                  }
                  if($wppm_project_time == 1){
                    $psDate = new DateTime($project->start_date);
                    $peDate = new DateTime($project->end_date);
                    if($project->start_date=='0000-00-00 00:00:00'){
                      if($wppm_date_setting=='Y-m-d H:i:s'){
                        $proj_start_date = '0000-00-00 00:00:00';
                      }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                        $proj_start_date = '00-00-0000 00:00:00';
                      }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                        $proj_start_date = '00-00-0000 00:00:00';
                      }else{
                        $proj_start_date = '0000-00-00 00:00:00';
                      }
                    }if($project->end_date=='0000-00-00 00:00:00'){
                      if($wppm_date_setting=='Y-m-d H:i:s'){
                        $proj_end_date = '0000-00-00 00:00:00';
                      }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                        $proj_end_date = '00-00-0000 00:00:00';
                      }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                        $proj_end_date = '00-00-0000 00:00:00';
                      }else{
                         $proj_end_date = '0000-00-00 00:00:00';
                      }
                    }
                    if($project->start_date!='0000-00-00 00:00:00'){
                         if(!empty($wppm_date_setting)){
                        $proj_start_date = $psDate->format($wppm_date_setting);
                        }else{
                          $proj_start_date = isset($project->start_date)? $project->start_date:"";
                        }
                      }
                    if($project->end_date!='0000-00-00 00:00:00'){
                        if(!empty($wppm_date_setting)){
                          $proj_end_date = $peDate->format($wppm_date_setting);
                        }else{
                          $proj_end_date = isset($project->end_date) ? $project->end_date: "" ;
                        }
                    }
                  } elseif($wppm_project_time == 0){
                      $psDate = new DateTime($project->start_date);
                      $peDate = new DateTime($project->end_date);
                      $proj_start_date = $psDate->format('Y-m-d');
                      $proj_end_date = $peDate->format('Y-m-d');
                      if($project->start_date=='0000-00-00 00:00:00'){
                        if($wppm_date_setting=='Y-m-d H:i:s'){
                          $proj_start_date = '0000-00-00';
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $proj_start_date = '00-00-0000';
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $proj_start_date = '00-00-0000';
                        }else{
                          $proj_start_date = '0000-00-00';
                        }
                      }
                      if($project->end_date=='0000-00-00 00:00:00'){
                        if($wppm_date_setting=='Y-m-d H:i:s'){
                          $proj_end_date = '0000-00-00';
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $proj_end_date = '00-00-0000';
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $proj_end_date = '00-00-0000';
                        }else{
                          $proj_end_date = '0000-00-00';
                        }

                      }if($project->start_date!='0000-00-00 00:00:00'){
                         if($wppm_date_setting=='Y-m-d H:i:s'){
                          $proj_start_date = $psDate->format('Y-m-d');
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $proj_start_date = $psDate->format('d-m-Y');
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $proj_start_date = $psDate->format('m-d-Y');
                        }else{
                          $proj_start_date = $psDate->format('Y-m-d');
                        }
                      }
                    if($project->end_date!='0000-00-00 00:00:00'){
                        if($wppm_date_setting=='Y-m-d H:i:s'){
                          $proj_end_date = $peDate->format('Y-m-d');
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $proj_end_date = $peDate->format('d-m-Y');
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $proj_end_date = $peDate->format('m-d-Y');
                            }else{
                              $proj_end_date = $peDate->format('Y-m-d');
                            }
                    }
                  }
                  ?>
                  <tr onclick="if(link)wppm_open_project(<?php echo esc_attr($project->id) ?>)">
                    <td class="bulk-selector" onmouseover="link=false;" onmouseout="link=true;">
                      <div class="wppm-pl-item-selector">
                        <div class="checkbox-container">
                          <input id="wppm_bulk_select_<?php echo esc_attr($project->id) ?>" class="wppm-bulk-select" type="checkbox" onchange="wppm_bulk_item_select_change();" value="<?php echo esc_attr( $project->id ); ?>"/>
                          <label for="wppm_bulk_select_<?php echo esc_attr($project->id) ?>"></label>
                        </div>
                      </div>
                    </td>
                    <td onmouseover="link=true;"><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
                    <td onmouseover="link=true;"><span class="wppm_td_project_status" style="background-color:<?php echo esc_attr($status->bg_color);?>; color: <?php echo esc_attr($status->color); ?>"><?php echo esc_html_e($status->name,'taskbuilder') ?></span></td>
                    <td onmouseover="link=true;">
                      <?php 
                        $i=0;
                        if(!empty(array_filter($users))){
                          foreach($users as $user){ 
                            $i++;
                            if( $i <= 4 ){
                              $user_info = get_user_by('id', $user );
                              if(!empty($user_info)){
                                ?>
                                <a href="#" title="<?php echo esc_html_e($user_info->display_name) ?>">
                                  <?php echo get_avatar($user_info->ID, 25, "mysteryman");?>
                                </a> <?php
                              }
                            }
                          }
                        } else{
                          _e('None','wp_projects');
                        }
                      if($i > 4){
                      ?>
                      <a href="#" class="wppm_avatar">
                        <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
                      </a>
                      <?php } ?>
                    </td>
                    <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></td>
                    <?php if($wppm_default_project_date==1){
                            ?>
                            <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
                            <?php
                            if(!empty($proj_end_date) && $project->status!=4 && $proj_end_date < $current_date && ($proj_end_date != '0000-00-00 00:00:00' && $proj_end_date != '00-00-0000 00:00:00' && $proj_end_date != '00-00-0000' && $proj_end_date != '0000-00-00')) {
                              $style = "color:#FF0000";
                            } else {
                              $style = "color:#2C3E50";
                            } ?>
                            <td onmouseover="link=true;" class="wppm_table_td"><span style="<?php echo esc_attr($style); ?>"><?php echo isset($proj_end_date) ? esc_html($proj_end_date):"" ?></span></td>
                    <?php } ?>
                    <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
                    <td onmouseover="link=true;" class="wppm_delete_action">
                      <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_project_permission('delete_project',esc_attr($project->id))) || $wppm_current_user_capability == 'wppm_admin' || ($proejctdata['created_by']==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') )? "display:inline":"display:none"; ?>
                      <span style="<?php echo esc_attr($style); ?>" onclick="wppm_delete_project(<?php echo esc_attr($project->id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
                      <?php ?>
                    </td>
                  </tr>
                <?php
              } 
            } 
            ?>
          </tbody>
        </table>
        <?php 
        $total_pages=ceil($totalrows/$proj_per_page);
        $current_page=$page_no+1;
        $prev_page_no=$current_page-1;
        $prev_class=($prev_page_no==0)?'disabled':'';
        $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
        $next_class=($total_pages==$current_page)?'disabled':'';
        ?>
        <div class="wppm_project_result" style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>"><?php echo esc_html_e('Your search request returned no results.','taskbuilder');?></div>
        <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
      </div>
      <div class="row wppm_proj_pagination_container">
        <div class="col-sm-4">
          <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_html($total_projects) ?>&nbsp;<?php echo esc_html_e('of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Projects','taskbuilder')?>
        </div>
        <div class="col-sm-4">
          <div class="wppm_proj_pagination" style="<?php echo esc_attr($total_pages==0)? "display:none;":"display:flex;"?>">
            <span class="wppm-pagination-txt">
              <span><?php echo esc_html($current_page); ?>&nbsp;<?php echo esc_html_e('of','taskbuilder');?>&nbsp;<?php echo esc_html($total_pages); ?>&nbsp;<?php echo esc_html_e('Page','taskbuilder'); ?></span>
            </span>
            <span 
              <?php echo esc_html($prev_class) ?>
              style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
              <a class="wppm_pagination_prev" onclick="return wppm_load_prev_page(<?php echo esc_attr($prev_page_no) ?>,<?php echo esc_attr($page_no) ?>,'<?php echo esc_attr($sort_by)?>','<?php echo esc_attr($order) ?>');"><?php echo esc_html_e('PREV','taskbuilder');?></a>
            </span>
            <span 
              <?php echo esc_attr($next_class) ?>
              style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
              <a class="wppm_pagination_next" onclick="return wppm_load_next_page('<?php echo esc_attr($next_page_no) ?>','<?php echo esc_attr($page_no) ?>','<?php echo esc_attr($sort_by)?>','<?php echo esc_attr($order) ?>');"><?php echo esc_html_e('NEXT','taskbuilder');?></a>
            </span>
          </div>
        </div>
      </div>
    </div>
  </div>
</form>
<style>
  #wppm_project_table tr:nth-child(even) td{
    background-color:<?php echo esc_attr($appearance_settings['list-item-even-background-color'])?>!important;
    color:<?php echo esc_attr($appearance_settings['list-item-even-text-color'])?>!important;
  }
  #wppm_project_table tr:nth-child(odd) td{
    background-color:<?php echo esc_attr($appearance_settings['list-item-odd-background-color'])?>!important;
    color:<?php echo esc_attr($appearance_settings['list-item-odd-text-color'])?>!important;
  }
  #wppm_project_table tr:hover td{
    background-color:<?php echo esc_attr($appearance_settings['list-item-hover-background-color'])?>!important;
  }
  #wppm_project_table tr:hover td{
    color: <?php echo esc_attr($appearance_settings['list-item-hover-text-color'])?>!important;
  }
</style>
<script type="text/javascript">
  jQuery( document ).ready( function( jQuery ) {
    jQuery("input[name='wppm_project_search_filter']").keypress(function(e) {
          //Enter key
      if (e.which == 13) {
        wppm_project_search_filter();
      }
    });
    jQuery("#wppm_proj_name_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_project_name_img').show();
      jQuery('#wppm_chevron_sort_down_project_name_img').hide();
    });
    jQuery("#wppm_project_status_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_project_status_img').show();
      jQuery('#wppm_chevron_sort_down_project_status_img').hide();
    });
    jQuery("#wppm_project_category_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_project_cat_img').show();
      jQuery('#wppm_chevron_sort_down_project_cat_img').hide();
    });
    jQuery("#wppm_project_start_date_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_project_start_date_img').show();
      jQuery('#wppm_chevron_sort_down_project_start_date_img').hide();
    });
    jQuery("#wppm_project_end_date_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_project_end_date_img').show();
      jQuery('#wppm_chevron_sort_down_project_end_date_img').hide();
    });
    jQuery(".wppm_delete_action").on("click", function(e){
      e.preventDefault();
      return false;
    });

    jQuery('#wppm_project_list_frm').on('submit', function (e) {
      var dataform = new FormData(jQuery('#wppm_project_list_frm')[0]);
        jQuery.ajax({
          url: wppm_admin.ajax_url,
          type: 'POST',
          data: dataform,
          processData: false,
          contentType: false,
          success: function () {
            alert('form was submitted');
          }
        });
    });
  });
  /**
 * Bulk item selector change
 */
function wppm_bulk_item_select_change() {
  jQuery("#wppm-bulk-actions-btn").show();
  var items = jQuery(".wppm-bulk-select:checked");
  var checked = items.length === 0 ? false : true;
  if(checked){
    jQuery(".wppm-bulk-selector").prop("checked", checked);
  }else{
    jQuery("#wppm-bulk-actions-btn").hide();
    jQuery(".wppm-bulk-selector").prop("checked", false);
  }
}
</script>
<?php
add_action('wp_footer', 'wppm_page_inline_script', 999999999999999999);
do_action('wppm_after_shortcode_loaded');
if(!function_exists('wppm_page_inline_script')) {
  function wppm_page_inline_script() { ?>
    <script type="text/javascript">
      jQuery( document ).ready( function( jQuery ) {
        wppm_get_project_list();
      });
    </script>
  <?php } 
}  
?>
```
