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

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

- Page: https://pluginprobe.com/plugins/taskbuilder/6.0.5/code/includes/admin/projects/projects_list.php
- Raw: https://pluginprobe.com/plugins/taskbuilder/6.0.5/raw/includes/admin/projects/projects_list.php
- Modified: 2026-08-26T12:27:30+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/6.0.5/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_deafault_time_duration_project = get_option('wppm_display_time_duration_project');
$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';
$page = isset($_POST['page']) ? sanitize_text_field(wp_unslash($_POST['page'])):"";
$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";
$is_archieved = !empty($_POST['is_archieved']) ? 1 : 0;
$current_date = wp_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 = '';
}
$is_admin = ( $wppm_current_user_capability === 'wppm_admin' || current_user_can('manage_options') ) ? 1 : 0;
$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);

$allowed_sort_by = [
    'project_name' => 'project_name',
    'status'       => 'proj_statuses.name',
    'category'     => 'proj_categories.name',
    'start_date'   => 'start_date',
    'end_date'     => 'end_date',
    'TIMESTAMPDIFF(SECOND, start_date, end_date)'=> 'TIMESTAMPDIFF(SECOND, start_date, end_date)'
];
// Resolve sort_by safely
$sort_key = isset($pl_filters_arr['sort_by'])
    ? sanitize_text_field($pl_filters_arr['sort_by'])
    : 'project_name';

$sort_by = $allowed_sort_by[$sort_key] ?? 'project_name';
$order = ( isset($pl_filters_arr['order']) && strtoupper($pl_filters_arr['order']) === 'ASC' )
    ? 'ASC'
    : 'DESC';
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)";
}elseif($filter_by == 'active'){
  $wppm_pl_filter = " (FIND_IN_SET('$current_user->ID', users) OR created_by = '$current_user->ID' OR $is_admin = 1 )
              AND status != 4";
}

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
        LEFT JOIN {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id";
    // SAFE search condition
    $search_sql = $wpdb->prepare(
        "(Project.project_name LIKE %s 
        OR proj_statuses.name LIKE %s 
        OR proj_categories.name LIKE %s 
        OR user.display_name LIKE %s)",
        $search_tag_text,
        $search_tag_text,
        $search_tag_text,
        $search_tag_text
    );
    if ($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin') {
        // ✅ Admin (safe)
        $where = " WHERE $wppm_pl_filter AND $search_sql";
    } else {
        // ✅ Non-admin (safe)
        $where = $wpdb->prepare(
            " WHERE $wppm_pl_filter
              AND $search_sql
              AND (
                  FIND_IN_SET(%d, Project.users) > 0
                  OR (
                      proj_meta.meta_key = 'public_project'
                      AND proj_meta.meta_value = 1
                  )
                  OR Project.created_by = %d
              )",
            $current_user->ID,
            $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 = $wpdb->prepare(
            " WHERE (
                $wppm_pl_filter
                AND (
                    FIND_IN_SET(%d, Project.users) > 0
                    OR (
                        proj_meta.meta_key = 'public_project'
                        AND proj_meta.meta_value = 1
                    )
                )
                OR Project.created_by = %d
            )",
            $current_user->ID,
            $cu_id
        );
    }
}
$archived_where = '';
if ( isset( $is_archieved ) && $is_archieved === 1 ) {
    $archived_where = ' AND Project.is_archived = 1';
} else {
    $archived_where = ' AND Project.is_archived = 0';
}
$where .= $archived_where;
$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);
$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 !empty($is_archieved) ? esc_html__('Archived Projects', 'taskbuilder') : esc_html__('Projects', 'taskbuilder'); ?>          
          </span>
        <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin'){ ?>
              <span class="wppm-add-new-btn btn-primary" id="wppm_add_new_project_btn" onclick="wppm_add_new_project()"><span style="margin-right:5px;"><img id="wppm_add_new_project_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus_icon.svg'); ?>" alt="plus_icon"></span><span><?php echo esc_html_e('Add New','taskbuilder');?></span></span>
      <?php } ?>
      <span class="wppm-add-new-btn btn-primary" id="wppm_project_list" onclick="wppm_get_project_list()" ><span style="margin-right:5px;"><img id ="wppm_project_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list-symbol.svg'); ?>" alt="list-symbol"></span><span><?php echo esc_html_e('Project List','taskbuilder');?></span></span>
       <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin' ){ ?>
      <span class="wppm-add-new-btn btn-primary"" id="wppm_archieve_project_btn" title="Archive Project" onclick="wppm_archieve_project_list()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/archive_project.svg'); ?>" alt="archive"><span style="margin-left:5px;"><span><?php echo esc_html_e('Archive Project','taskbuilder');?></span></span>
      <?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(<?php echo $is_archieved ?>)">
                <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
                <option style="<?php echo esc_attr($new_style) ?>" value="1" <?php echo ($filter_by == "1")? 'selected':""?>><?php echo  esc_html($new_status_name);?></option>
                <option style="<?php echo esc_attr($inp_status_style) ?>" value="2" <?php echo ($filter_by == "2")? 'selected':""?>><?php echo  esc_html($inp_status_name);?></option>
                <option style="<?php echo esc_attr($hold_status_style) ?>" value="3" <?php echo ($filter_by == "3")? 'selected':""?>><?php echo  esc_html($hold_status_name);?></option>
                <option style="<?php echo esc_attr($complete_status_style) ?>" value="4" <?php echo ($filter_by == "4")? 'selected':""?>><?php echo  esc_html($completed_status_name);?></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 $is_archieved ?>)"> <?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 && $wppm_deafault_time_duration_project==0){ ?>
                    <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 }
            if( $wppm_deafault_time_duration_project==1){ ?>
                  <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
                    <span id="wppm_project_time_duration_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Duration','taskbuilder'); ?></span>
                    <img width="16" height="16" onclick="wppm_sort_up_project_list('TIMESTAMPDIFF(SECOND, start_date, end_date)','ASC')" style = "<?php echo ($sort_by == 'TIMESTAMPDIFF(SECOND, start_date, end_date)' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_time_duration_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('TIMESTAMPDIFF(SECOND, start_date, end_date)','DESC')" style = "<?php echo ($sort_by == 'TIMESTAMPDIFF(SECOND, start_date, end_date)' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_time_duration_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);
                $wppm_proj_duration = $wppmfunction->wppm_get_duration($project->start_date,$project->end_date);
                $pstatus= absint($project->status);
                $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id='$pstatus'" );
                $users = explode(",",$project->users);
                $pid= absint($project->id);
                if(isset($project->cat_id)){
                  $pcat_id = absint($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($project->project_name) ?></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($status->name) ?></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($user_info->display_name) ?>">
                                  <?php echo get_avatar($user_info->ID, 25, "mysteryman");?>
                                </a> <?php
                              }
                            }
                          }
                        } else{
                          esc_html_e('None','taskbuilder');
                        }
                      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($category): "" ?></td>
                    <?php if($wppm_default_project_date==1 && $wppm_deafault_time_duration_project==0){ ?>
                            <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 } ?>
                     <?php if($wppm_deafault_time_duration_project==1){ ?>
                            <?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($wppm_proj_duration) ? esc_html($wppm_proj_duration):"" ?></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_attr($is_archieved)?>');"><?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_attr($is_archieved)?>');"><?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(<?php echo $is_archieved ?>);
      }
    });
    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_project_time_duration_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_project_time_duration_img').show();
      jQuery('#wppm_chevron_sort_down_project_time_duration_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 } 
}  
?>
```
