# taskbuilder/6.0.6/includes/admin/tasks/wppm_tasks_list.php

Taskbuilder – Project Management &amp; Task Management Tool With Kanban Board, version 6.0.6. 1,362 lines.

- Page: https://pluginprobe.com/plugins/taskbuilder/6.0.6/code/includes/admin/tasks/wppm_tasks_list.php
- Raw: https://pluginprobe.com/plugins/taskbuilder/6.0.6/raw/includes/admin/tasks/wppm_tasks_list.php
- Modified: 2026-09-17T18:30:20+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.6/code/includes/admin/tasks/wppm_tasks_list.php#L10-L20`.

```php
<?php
if ( ! defined( 'ABSPATH' ) ) {
  exit; // Exit if accessed directly
}
global $current_user,$wpdb,$wppmfunction;
$task_per_page = 20;
$page_no = isset($_POST['page_no']) ? intval(sanitize_text_field(wp_unslash($_POST['page_no']))) : '0';
$project_id = isset($_POST['project_id']) ? intval(sanitize_text_field(wp_unslash($_POST['project_id']))) : "0";
$search_tag = isset($_POST['task_search']) ? sanitize_text_field(wp_unslash($_POST['task_search'])) : '';
$order = isset($_POST['order']) ? sanitize_text_field(wp_unslash($_POST['order'])) :"ASC";
$sort_by = isset($_POST['sort_by']) ? sanitize_text_field(wp_unslash($_POST['sort_by'])):"task_name";
$filter_by = isset($_POST['wppm_task_filter']) ? sanitize_text_field(wp_unslash($_POST['wppm_task_filter'])) : "all";
if (isset($_POST['filters'])) {
  if (is_string($_POST['filters'])) {
      $advanced_filter = json_decode( stripslashes( sanitize_text_field( wp_unslash($_POST['filters']))),true );
  } elseif (is_array($_POST['filters'])) {
      $raw_filters = wp_unslash($_POST['filters']);
      $advanced_filter = [
          'created_by' => array_map('absint', (array) ($raw_filters['created_by'] ?? [])),
          'assigned'   => array_map('absint', (array) ($raw_filters['assigned'] ?? [])),
          'priority'   => array_map('absint', (array) ($raw_filters['priority'] ?? [])),
          'start_date' => sanitize_text_field($raw_filters['start_date'] ?? ''),
          'end_date'   => sanitize_text_field($raw_filters['end_date'] ?? ''),
      ];
  } else {
      $advanced_filter = [];
  }
}else{
  $advanced_filter = [];
}
///$advanced_filter = isset($_POST['filters']) ? (($_POST['filters'])) : "array()";
$proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field(wp_unslash($_POST['wppm_proj_filter'])) : "0";
$proj_attr = isset($_POST['wppm_project_attr']) ? sanitize_text_field(wp_unslash($_POST['wppm_project_attr'])):"";
$public_projects = isset($_POST['public_projects']) ? sanitize_text_field(wp_unslash($_POST['public_projects'])):"0";
$tb_start_date = isset($_POST['tb_start_date']) ? sanitize_text_field($_POST['tb_start_date']) : '';
$tb_end_date   = isset($_POST['tb_end_date']) ? sanitize_text_field($_POST['tb_end_date']) : '';
$tb_created_by = isset($_POST['tb_created_by']) ? sanitize_text_field($_POST['tb_created_by']) : '';
$page = isset($_POST['page']) ? sanitize_text_field(wp_unslash($_POST['page'])):"";
$priorities = $wpdb->get_results("SELECT id, name FROM {$wpdb->prefix}wppm_task_priorities ORDER BY id ASC ");
$users = get_users(array(
    'orderby' => 'display_name',
    'order'   => 'ASC'
));
$assigned_users = $wpdb->get_col( " SELECT DISTINCT users FROM {$wpdb->prefix}wppm_task WHERE users != ''");
$all_assigned = [];
foreach ($assigned_users as $row) {
    $ids = explode(',', $row);
    foreach ($ids as $id) {
        $all_assigned[] = trim($id);
    }
}
$all_assigned = array_unique($all_assigned);
$wppm_current_user_capability = get_user_meta( $current_user->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');
$wppm_deafault_time_duration_task = get_option('wppm_display_time_duration_task');
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 = $wpdb->prepare(
        ' AND (proj.project_name = %s)',
        $proj_attr
    );
} else {
    $wppm_proj_attr = '';
}
$current_date = wp_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 Task.is_archived = 1';
} elseif ( isset( $page ) && $page === 'wppm-tasks' ) {
    $archived_where = ' AND Task.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 AS 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 = $wpdb->prepare(
            " WHERE proj.project_name = %s
            GROUP BY proj.id
            ORDER BY $orderby_proj_sql",
            $proj_attr
        );
    } else {
        if ( ! empty( $public_projects ) ) {
            $where = $wpdb->prepare(
                " WHERE proj_meta.meta_key = %s
                AND proj_meta.meta_value = %d
                GROUP BY proj.id
                ORDER BY $orderby_proj_sql",
                'public_project',
                1
            );
        } else {
            $where = " GROUP BY proj.id ORDER BY $orderby_proj_sql";
        }
    }
} else {
    if ( ! empty( $public_projects ) ) {
        $where = $wpdb->prepare(
            " WHERE (
                proj_meta.meta_key = %s
                AND proj_meta.meta_value = %d
            )
            $wppm_proj_attr
            GROUP BY proj.id
            ORDER BY $orderby_proj_sql",
            'public_project',
            1
        );

    } else {
        $where = $wpdb->prepare(
            " WHERE (
                FIND_IN_SET(%d, proj.users)
                OR (
                    proj_meta.meta_key = %s
                    AND proj_meta.meta_value = %d
                )
                OR proj.created_by = %d
            )
            $wppm_proj_attr
            GROUP BY proj.id
            ORDER BY $orderby_proj_sql",
            $current_user->ID,
            'public_project',
            1,
            $cu_id
        );
    }
}
$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;
$tl_advanced_filters = [];
if ( !empty($_COOKIE['tb_list_filters']) ) {
  $tl_advanced_filters = json_decode(
      stripslashes($_COOKIE['tb_list_filters']),
      true
  );
  if ( ! is_array($tl_advanced_filters) ) {
      $tl_advanced_filters = [];
  }
}
//$tl_advanced_filters = isset( $_COOKIE['wppm_advanced_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_advanced_filters'] ) ) : $tl_advanced_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(wp_unslash($_POST['order'])) :$tl_filters_arr['order'];
$sort_by = isset($_POST['sort_by']) ? sanitize_text_field(wp_unslash($_POST['sort_by'])):$tl_filters_arr['sort_by'];
$search_tag = isset($_POST['task_search']) ? sanitize_text_field(wp_unslash($_POST['task_search'])) : $tl_filters_arr['search'];
$filter_by = isset($_POST['wppm_task_filter']) ? sanitize_text_field(wp_unslash($_POST['wppm_task_filter'])) : $tl_filters_arr['filter'];
$proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field(wp_unslash($_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);
//setcookie('wppm_advanced_filters',wp_json_encode( $tl_advanced_filters ),time() + 3600);
// Allowed sort columns
$allowed_sort_by = [
    'project'       => 'proj.project_name',
    'status'        => 'task_statuses.name',
    'priority'      => 'task_priorities.name',
    'start_date'    => 'Task.start_date',
    'end_date'      => 'Task.end_date',
    'TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)' => 'TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)',
];

// Resolve sort_by safely
$sort_key = isset($_POST['sort_by'])
    ? sanitize_text_field(wp_unslash($_POST['sort_by']))
    : ($tl_filters_arr['sort_by'] ?? 'task_name');

$sort_by = $allowed_sort_by[$sort_key] ?? 'Task.task_name';
// Resolve order safely
$order = (isset($_POST['order']) && strtoupper(wp_unslash($_POST['order'])) === 'ASC')
    ? 'ASC'
    : 'DESC';

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";
} elseif($filter_by == 'today'){
  $wppm_tl_filter = "DATE(Task.end_date) = CURDATE()";
}elseif($filter_by == 'upcoming'){
  $wppm_tl_filter = "DATE(Task.end_date) BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY) AND Task.status != 4 AND Task.active = 1 AND Task.is_archived = 0";
}elseif ($filter_by == 'mytasks') {
    $wppm_tl_filter = "(
        FIND_IN_SET('$current_user->ID', Task.users)
        OR Task.created_by = '$current_user->ID'
    )
    AND Task.status != 4
    AND Task.active = 1
    AND Task.is_archived = 0";

}

if(!empty($tl_advanced_filters['created_by'])){
  $created_by_ids = array_map('intval', $tl_advanced_filters['created_by']);
  $wppm_tl_filter .= " AND Task.created_by IN (" . implode(',', $created_by_ids) . ")";
}
if(!empty($tl_advanced_filters['assigned'])){
  $assigned_ids = array_map('intval', $tl_advanced_filters['assigned']);
  $assigned_sql = [];
  foreach ($assigned_ids as $id) {
    $assigned_sql[] = "FIND_IN_SET('$id', Task.users)";
  }
  $wppm_tl_filter .= " AND (" . implode(' OR ', $assigned_sql) . ")";
}
if(!empty($tl_advanced_filters['priority'])){
  $priority = array_map('intval', $tl_advanced_filters['priority']);
  $wppm_tl_filter .= " AND Task.priority IN (" . implode(',', $priority) . ")";
}
if(!empty($tl_advanced_filters['start_date'])){
  $start_date = sanitize_text_field($tl_advanced_filters['start_date']);
  $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.start_date AS DATE)) >= %s", $start_date);
}
if(!empty($tl_advanced_filters['end_date'])){
  $end_date = sanitize_text_field($tl_advanced_filters['end_date']);
  $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.end_date AS DATE)) <= %s", $end_date);
}

$advanced_conditions = [];
// Created By
if (!empty($advanced_filter['created_by'])) {
  $created_by_ids = array_map('intval', $advanced_filter['created_by']);
  $advanced_conditions[] = "Task.created_by IN (" . implode(',', $created_by_ids) . ")";
}
// Assigned Users
if (!empty($advanced_filter['assigned'])) {
  $assigned_ids = array_map('intval', $advanced_filter['assigned']);
  $assigned_sql = [];
  foreach ($assigned_ids as $id) {
    $assigned_sql[] = "FIND_IN_SET('$id', Task.users)";
  }
  $advanced_conditions[] = "(" . implode(' OR ', $assigned_sql) . ")";
}
// Priority
if (!empty($advanced_filter['priority'])) {
  $priority = array_map('intval', $advanced_filter['priority']);
  $advanced_conditions[] = "Task.priority IN (" . implode(',', $priority) . ")";
}
// Start Date
if (!empty($advanced_filter['start_date'])) {
  $start_date = sanitize_text_field($advanced_filter['start_date']);
  $advanced_conditions[] = $wpdb->prepare("(CAST(Task.start_date AS DATE)) >= %s", $start_date);
}
// End Date
if (!empty($advanced_filter['end_date'])) {
  $end_date = sanitize_text_field($advanced_filter['end_date']);
  $advanced_conditions[] = $wpdb->prepare("(CAST(Task.end_date AS DATE)) <= %s", $end_date);
}
if (!empty($advanced_conditions)) {
  $wppm_tl_filter .= " AND " . implode(" AND ", $advanced_conditions);
}
// Subtasks are shown only within their parent task, never as their own row in the task list.
$wppm_tl_filter .= " AND (Task.parent_task_id = 0 OR Task.parent_task_id IS NULL)";
//setcookie('wppm_advanced_filters',wp_json_encode( $advanced_filter ),time() + 3600);
if(!empty($wppm_hide_task_statuses_from_frontend) && is_array($wppm_hide_task_statuses_from_frontend) && ((isset($_POST['is_frontend'])) && (sanitize_text_field(wp_unslash($_POST['is_frontend']))==1))){
  foreach($wppm_hide_task_statuses_from_frontend as $status){
    $wppm_tl_filter .= " AND Task.status != '$status'";
  }
}
if ( $proj_filter != 0 || $project_id != 0 ) {
    if ( $project_id != 0 ) {
        $proj_filter = $project_id;
    }
    $proj_filter = absint( $proj_filter );
    $wppm_task_by_proj_filter = $wpdb->prepare(
        "Task.project = %d",
        $proj_filter
    );
} else {
    $wppm_task_by_proj_filter = "1=1";
}
$wppm_default_task_date = get_option('wppm_default_task_date');
$search_tag_text = "";
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)
              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 ";
      $where = $wpdb->prepare( " 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 %s
        OR proj.project_name LIKE %s
        OR task_statuses.name LIKE %s
        OR task_priorities.name LIKE %s
        OR user.display_name LIKE %s
        ) $wppm_proj_attr",
        $search_tag_text,
        $search_tag_text,
        $search_tag_text,
        $search_tag_text,
        $search_tag_text
      );    
    }else{
      $where = $wpdb->prepare(
        " WHERE $wppm_tl_filter
        AND $wppm_task_by_proj_filter
        AND (
            Task.task_name LIKE %s
            OR proj.project_name LIKE %s
            OR task_statuses.name LIKE %s
            OR task_priorities.name LIKE %s
            OR user.display_name LIKE %s
        )
        $wppm_proj_attr",
        $search_tag_text,
        $search_tag_text,
        $search_tag_text,
        $search_tag_text,
        $search_tag_text
      );   
    }
  } else{
    if(!empty($public_projects)){
      $where = $wpdb->prepare(
            " WHERE
            (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND (proj.is_archived = 0)
            AND $wppm_tl_filter
            AND $wppm_task_by_proj_filter
            AND (
                (
                    FIND_IN_SET(%d, Task.users) > 0
                    OR Task.created_by = %d
                    OR (
                        proj_users.user_id = %d
                        AND proj_users.role_id = 1
                        AND FIND_IN_SET(%d, 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 = %d
                        AND FIND_IN_SET(%d, proj.users) > 0
                    )
                )
                AND (
                    Task.task_name LIKE %s
                    OR proj.project_name LIKE %s
                    OR task_statuses.name LIKE %s
                    OR task_priorities.name LIKE %s
                    OR user.display_name LIKE %s
                )
            )
            $wppm_proj_attr",
            $current_user->ID,
            $cu_id,
            $cu_id,
            $current_user->ID,
            $cu_id,
            $current_user->ID,
            $search_tag_text,
            $search_tag_text,
            $search_tag_text,
            $search_tag_text,
            $search_tag_text
        ); 
     }else{
      $where = $wpdb->prepare(
          " WHERE
          (proj.is_archived = 0)
          AND $wppm_tl_filter
          AND $wppm_task_by_proj_filter
          AND (
              (
                  FIND_IN_SET(%d, Task.users) > 0
                  OR Task.created_by = %d
                  OR (
                      proj_users.user_id = %d
                      AND proj_users.role_id = 1
                      AND FIND_IN_SET(%d, 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 = %d
                      AND FIND_IN_SET(%d, proj.users) > 0
                  )
              )
              AND (
                  Task.task_name LIKE %s
                  OR proj.project_name LIKE %s
                  OR task_statuses.name LIKE %s
                  OR task_priorities.name LIKE %s
                  OR user.display_name LIKE %s
              )
          )
          $wppm_proj_attr",
          $current_user->ID,
          $cu_id,
          $cu_id,
          $current_user->ID,
          $cu_id,
          $current_user->ID,
          $search_tag_text,
          $search_tag_text,
          $search_tag_text,
          $search_tag_text,
          $search_tag_text
      );
    }
  }
}else{
  if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
    if(!empty($public_projects)){
      $where = $wpdb->prepare(
          " WHERE
          (proj_meta.meta_key = %s AND proj_meta.meta_value = %d)
          AND (proj.is_archived = 0)
          AND $wppm_tl_filter
          AND $wppm_task_by_proj_filter
          $wppm_proj_attr",
          'public_project',
          1
      );
    }else{
      $where = " where (proj.is_archived = 0) AND $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr";
    }
  } else{
    if(!empty($public_projects)){
      $where = $wpdb->prepare(
                      " WHERE
                      (
                          proj_meta.meta_key = %s
                          AND proj_meta.meta_value = %d
                      )
                      AND (proj.is_archived = 0)
                      AND $wppm_tl_filter
                      AND $wppm_task_by_proj_filter
                      $wppm_proj_attr",
                      'public_project',
                      1
                  );  
    }else{
       $where = $wpdb->prepare(
              " WHERE
              (proj.is_archived = 0)
              AND $wppm_tl_filter
              AND $wppm_task_by_proj_filter
              AND (
                  (
                      FIND_IN_SET(%d, Task.users) > 0
                  )
                  OR (
                      Task.created_by = %d
                  )
                  OR (
                      proj_users.user_id = %d
                      AND proj_users.role_id = %d
                      AND FIND_IN_SET(%d, proj.users) > 0
                  )
                  OR (
                      Task.project = proj_meta.project_id
                      AND proj_meta.meta_key = %s
                      AND proj_meta.meta_value = %d
                  )
                  OR (
                      proj.created_by = %d
                      AND FIND_IN_SET(%d, proj.users) > 0
                  )
              )
              $wppm_proj_attr",
              $current_user->ID,
              $cu_id,
              $cu_id,
              1,
              $current_user->ID,
              'public_project',
              1,
              $cu_id,
              $current_user->ID
        );   
    }
  }
}
$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);
$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($wpdb->prepare("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d",$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($wpdb->prepare("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$tproject_id,$cu_id));
      $project_users = $wpdb->get_var($wpdb->prepare("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = %d",$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;";
}
?>
<form id="wppm_task_list_frm">
  <div id="wppm_task_list_container" class="wppm_bootstrap">
    <div class="row">
      <div class="col-sm-12" id="wppm_heading_inline">
        <span class="wppm-heading-inline"><?php echo (isset($page) && $page === 'wppm-archived-tasks' ) ? esc_html_e('Archived Tasks','taskbuilder'): esc_html_e('Tasks','taskbuilder');?> </span>
        <span class="wppm-add-new-btn btn-primary" id="wppm_add_new_task_btn_tl" style="background-color:<?php echo esc_attr($appearance_settings['list-header-button-background-color'])?>;color:<?php echo esc_attr($appearance_settings['list-header-button-text-color'])?>;<?php echo esc_attr($style)?>;" onclick="wppm_add_new_task()"><img class="wppm_add_new_task_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus_icon.svg'); ?>" alt="add_icon"><?php echo esc_html_e('Add New','taskbuilder');?></span>
          <!-- Dashboard Button -->
          <a class="wppm-add-new-btn btn-primary" style="background-color:<?php echo esc_attr($appearance_settings['list-header-button-background-color'])?>;color:<?php echo esc_attr($appearance_settings['list-header-button-text-color'])?>;<?php echo esc_attr($style)?>;" href="<?php echo esc_url( admin_url('admin.php?page=wppm-dashboard') ); ?>"
            style="margin-right:10px;" title="<?php echo esc_attr_e('Go to Dashboard','taskbuilder'); ?>">
            <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/dashboard.svg'); ?>" alt="dashboard_icon">
            <?php esc_html_e('Dashboard','taskbuilder'); ?>
          </a>
        </span>
      </div>
    </div>
    <div>
      <div style="display:flex;flex-wrap: wrap;min-width: 0; max-width: 100%;margin-top: 20px;">
        <div id="wppm_task_filter_container">
          <div class="wppm-bulk-actions"style="margin-left: -14px !important;">
            <button 
              id="wppm-task-bulk-actions-btn"
              class="wppm-button small secondary"
              type="button"
              style="display:none;margin: 14px -20px 0px 22px; padding:14px;font: 13px Helvetica Neue, Arial, Helvetica, sans-serif !important;"
              data-popover="wppm-task-bulk-actions">
              <?php esc_attr_e( 'Bulk Actions ', 'taskbuilder' ); ?><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/wppm_chevron_down_icon.svg'); ?>" alt="chevron_down">
            </button>
            <div id="wppm-task-bulk-actions" class="gpopover wppm-popover-menu wppm-proj-bulk-actions">
              <div class="wppm-popover-menu-item" style="<?php echo esc_attr($cs_style);?><?php echo esc_attr($ar_filter_style);?>" onclick="wppm_bulk_change_task_status('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_task_status' ) ); ?>');">
                <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/gps-navigation.svg'); ?>" alt="task_status"><?php echo esc_html_e('Change Status','taskbuilder'); ?></span>
              </div>
              <div class="wppm-popover-menu-item" style="<?php echo esc_attr($ar_filter_style);?>" onclick="wppm_bulk_change_task_priority('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_task_priority' ) ); ?>');">
                <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/priority_up_icon.svg'); ?>" alt="priority"><?php echo esc_html_e('Change Priority','taskbuilder'); ?></span>
              </div>
              <div class="wppm-popover-menu-item" onclick="wppm_bulk_delete_task('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_delete_task' ) ); ?>');">
                <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 Tasks','taskbuilder'); ?></span>
              </div>
          </div>
          <div class="wppm-filter-item">
                <label for="wppm_task_filter" style="margin-left:20px;"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
                <select id="wppm_task_filter" name="wppm_task_filter" onchange="wppm_apply_task_filter('<?php echo esc_attr($page); ?>')" style="margin-left:20px;">
                  <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
                  <option value="1" style="<?php echo esc_attr($todo_status_style); ?>" <?php echo ($filter_by == "1")? 'selected':""?>><?php echo  esc_html($todo_status_name);?></option>
                  <option value="2" style="<?php echo esc_attr($inp_status_style); ?>" <?php echo ($filter_by == "2")? 'selected':""?>><?php echo  esc_html($inp_status_name);?></option>
                  <option value="3" style="<?php echo esc_attr($hold_status_style); ?>" <?php echo ($filter_by == "3")? 'selected':""?>><?php echo  esc_html($hold_status_name);?></option>
                  <option value="4" style="<?php echo esc_attr($completed_status_style); ?>" <?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>
                  <option value="archived" style="<?php echo esc_attr($arch_filter_style); ?>" <?php echo ($filter_by == "archived")? 'selected':""?>><?php echo  esc_html_e('Archived','taskbuilder');?></option>
                </select>
              </div>
            </div>
          </div>
          <div class="wppm-filter-item wppm_project_autocomplete_container" style="margin: 0 0 0 20px;">
            <label for="wppm_task_list_proj_filter">
                <?php echo esc_html_e('Project','taskbuilder');?>
            </label><br>
            <select searchable="search here" onchange="wppm_tasks_by_select_project('<?php echo esc_attr($page); ?>')" class="form-control" size="40" name="wppm_task_list_proj_filter" id="wppm_task_list_proj_filter" data-width="100%" style="width: 100%!important;">
                <option value="0" <?php echo ($proj_filter == 0)? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
                <?php 
                if(!empty($projects)){
                    foreach($projects as $proj) { 
                        ?><option value="<?php echo esc_attr($proj->id)?>" <?php echo ($proj_filter == $proj->id)? 'selected':""?>><?php echo esc_html($proj->project_name,'taskbuilder');?></option>
                <?php } 
                } ?>
            </select>
          </div>
          <!-- FILTER BUTTON -->
          <div class="tb-filters" class="wppm-filter-item" style="display:flex;margin-left: 4px;">
            <div class="tb-filter-bar">
              <span id="tb-advanced-toggle" class="tb-btn" style="margin-top:0px!important;">
                <?php echo esc_html_e('⚙️ Filters', 'taskbuilder'); ?>
              </span>

              <!-- ACTIVE FILTER CHIPS -->
              <div id="tb-active-filters" class="tb-chips"></div>

              <!-- POPOVER -->
              <div id="tb-advanced-panel" class="tb-popover">
                <div class="tb-mobile-header">
                  <span><?php echo esc_html_e('Filters', 'taskbuilder'); ?></span>
                  <button type="button" id="tb-close-filters">✕</button>
                </div>
                <div class="tb-arrow"></div>

                <div class="tb-section">
                  <h4> <?php echo esc_html_e('Created By', 'taskbuilder'); ?></h4>
                  <select id="tb-created-by" class="form-control" multiple>
                    <?php 
                      if(!empty($users)){
                        foreach($users as $user): ?>
                        <option value="<?php echo esc_attr($user->ID); ?>"><?php echo esc_html($user->display_name); ?></option>
                      <?php endforeach; ?>
                    <?php } ?>
                  </select>
                   <h4> <?php echo esc_html_e('Assigned To', 'taskbuilder'); ?></h4>
                  <select id="tb-assigned" multiple>
                  <?php 
                  if(!empty($all_assigned)){
                    foreach($all_assigned as $uid){ 
                      $user = get_userdata($uid);
                      if($user){ ?>
                      <option value="<?php echo esc_attr($uid); ?>">
                        <?php echo esc_html($user->display_name); ?>
                      </option>
                    <?php } 
                    } 
                  }
                  ?>
                </select>
                </div>
                <div class="tb-section">
                  <h4> <?php echo esc_html_e('Priority', 'taskbuilder'); ?></h4>
                  <select id="tb-priority" class="form-control" multiple>
                <?php if(!empty($priorities)) {
                  foreach($priorities as $priority){ ?>
                    <option value="<?php echo esc_attr($priority->id); ?>">
                      <?php echo esc_html($priority->name); ?>
                    </option>
                  <?php } } ?>
                  </select> 
                </div>
                <div class="tb-section">
                  <h4> <?php echo esc_html_e('Date', 'taskbuilder'); ?></h4>
                  <input type="date" class="form-control" id="tb-start-date">
                  <input type="date" class="form-control"id="tb-end-date">
                </div>
                <div id="tb-filter-actions">
                  <button class="wppm-submit-btn" id="tb-apply-filter" type="button"> <?php echo esc_html_e('Apply', 'taskbuilder'); ?></button>
                  <button class="wppm_reset_btn" id="tb-reset-filter" type="button"> <?php echo esc_html_e('Reset', 'taskbuilder'); ?></button>
                </div>
              </div>
            </div>
            <div id="tb-backdrop"></div>
          </div>
          <div class="wppm_display_submit" style="margin: 0 0 -5px 10px;">
            <div class="wppm-filter-actions">
                <span class="wppm-link" onclick="wppm_tl_reset_filter('<?php echo esc_attr($page); ?>')"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
            </div>
          </div>
          <div id="wppm_task_search" style="display:flex;justify-content:flex-end;margin-left: auto;">
            <img width="25px" height="15" class="wppm_task_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_task_search_filter" style="margin-right:10px;" name="wppm_task_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>
    </div>
  </div>
  <div style="display:flex;justify-content:flex-end;margin-right: 10px;">
    <span id="wppm_grid_view_btn" onclick="wppm_view_task_search_filter('<?php echo esc_attr($page_no)?>','<?php echo esc_attr($page)?>','<?php echo esc_attr($project_id)?>')"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/grid_view.svg'); ?>" alt="grid_view"><span><?php echo esc_html_e('Grid view','taskbuilder');?></span></span>
  </div>
  </div>
  <script>
    jQuery('#wppm-more-actions-btn, #wppm-task-bulk-actions-btn').gpopover({width: 200});
  </script>
    <div id="wppm_task_table_container" class="wppm_task_table_container table-responsive" style="padding: 0 15px 15px 15px;">
      <table id="wppm_task_table" class="wppm_table table">
        <thead>
          <tr>
            <th style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>" onchange="wppm_task_bulk_select_change()">
              <div class="checkbox-container">
                <input id="wppm_task_bulk_select_option" class="wppm-bulk-selector" type="checkbox" onchange="wppm_task_bulk_select_change();"/>
                <label for="wppm_task_bulk_select_option"></label>
              </div>
            </th>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
              <div id="wppm_task_name_container">
                <span id="wppm_task_name_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Task name','taskbuilder'); ?></span>
                <img width="16" height="16" style = "<?php echo ($sort_by == 'task_name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('task_name','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_task_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" style = "<?php echo ($sort_by == 'task_name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('task_name','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_task_name_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
              </div>
            </th>
            <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
              <span id="wppm_project_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" style = "<?php echo ($sort_by == 'proj.project_name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('project','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_list_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" style = "<?php echo ($sort_by == 'proj.project_name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('project','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_list_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_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" style = "<?php echo ($sort_by == 'task_statuses.name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('status','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_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" style = "<?php echo ($sort_by == 'task_statuses.name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('status','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_status_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_priority_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Priority','taskbuilder'); ?></span>
              <img width="16" height="16" style = "<?php echo ($sort_by == ('task_priorities.name') && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('priority','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_priority_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" style = "<?php echo ($sort_by == ('task_priorities.name') && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('priority','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_priority_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_task_date == 1 && $wppm_deafault_time_duration_task==0) { ?>
                    <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
                      <span id="wppm_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" style = "<?php echo ($sort_by == 'Task.start_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('start_date','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_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" style = "<?php echo ($sort_by == 'Task.start_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('start_date','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_start_date_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_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" style = "<?php echo ($sort_by == 'Task.end_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('end_date','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_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" style = "<?php echo ($sort_by == 'Task.end_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('end_date','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_end_date_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_task==1){ ?>
                  <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
                      <span id="wppm_task_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" style = "<?php echo ($sort_by == 'TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_task_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" style = "<?php echo ($sort_by == 'TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('TIMESTAMPDIFF(SECOND, Task.start_date, Task.end_date)','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_task_duration_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('Assign To','taskbuilder'); ?></span>
            </th>
            <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('Progress','taskbuilder'); ?></span>
            </th>
            <?php do_action('wppm_table_header');?>
          </tr>
        </thead>
        <tbody>
          <?php 
          $task_index = 0;
          $statuses = $wpdb->get_results(
              "SELECT * FROM {$wpdb->prefix}wppm_task_statuses",
              OBJECT_K
          );

          $priorities = $wpdb->get_results(
              "SELECT * FROM {$wpdb->prefix}wppm_task_priorities",
              OBJECT_K
          );
          $projects = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project", OBJECT_K) ;
          $task_ids = wp_list_pluck($wppm_task_fillter, 'id');
          $checklist_counts = [];
          if (!empty($task_ids)) {
              $task_ids_sql = implode(',', array_map('absint', $task_ids));
              $checklist_results = $wpdb->get_results(" SELECT checklist.task_id,
                      COUNT(Items.id) AS total_items,
                      SUM(CASE WHEN Items.checked = 1 THEN 1 ELSE 0 END) AS checked_items
                      FROM {$wpdb->prefix}wppm_checklist_items AS Items
                      LEFT JOIN {$wpdb->prefix}wppm_checklist AS checklist
                          ON Items.checklist_id = checklist.id
                      WHERE checklist.task_id IN ($task_ids_sql)
                      GROUP BY checklist.task_id"
              );
              foreach ($checklist_results as $row) {
                  $checklist_counts[$row->task_id] = [
                      'total'   => (int) $row->total_items,
                      'checked' => (int) $row->checked_items,
                  ];
              }
          }
          if(!empty($wppm_task_fillter)){
            foreach($wppm_task_fillter as $task) {
              $task_id = absint($task->id);
              $wppm_task_duration = $wppmfunction->wppm_get_duration($task->start_date,$task->end_date);
              $checklists = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_checklist where task_id = %d",$task_id) );
                if(!empty($task)){
                  $taskdata = $wppmfunction->get_task($task->id);
                  $project_data = $wppmfunction->get_project($task->project);
                  $task_index++;
                  $total = $checklist_counts[$task_id]['total'] ?? 0;
                  $total_checked_items = $checklist_counts[$task_id]['checked'] ?? 0;
                  if(isset($task->status)){
                    $tstatus = absint($task->status);
                    $status = $statuses[$task->status] ?? null;
                  }
                  if(!empty($task->priority)){
                    $tpriority = absint($task->priority);
                    $priority = $priorities[$task->priority] ?? null;
                  }
                  if(isset($task->project)){
                    $tproj = absint($task->project);
                    $project = $projects[$task->project] ?? null;
                  }
                  if($wppm_task_time == 1){
                    $tsDate = new DateTime($task->start_date);
                    $teDate = new DateTime($task->end_date);
                    if($task->start_date=='0000-00-00 00:00:00'){
                      if($wppm_date_setting=='Y-m-d H:i:s'){
                        $task_start_date = '0000-00-00 00:00:00';
                      }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                        $task_start_date = '00-00-0000 00:00:00';
                      }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                        $task_start_date = '00-00-0000 00:00:00';
                      }else{
                        $task_start_date = '0000-00-00 00:00:00';
                      }
                    }if($task->end_date=='0000-00-00 00:00:00'){
                      if($wppm_date_setting=='Y-m-d H:i:s'){
                        $task_end_date = '0000-00-00 00:00:00';
                      }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                        $task_end_date = '00-00-0000 00:00:00';
                      }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                        $task_end_date = '00-00-0000 00:00:00';
                      }else{
                        $task_end_date = '0000-00-00 00:00:00';
                      }
                    }if($task->start_date!='0000-00-00 00:00:00'){
                      if(!empty($wppm_date_setting)){
                        $task_start_date = $tsDate->format($wppm_date_setting);
                      } else {
                        $task_start_date = isset($task->start_date)? $task->start_date:"";
                      }
                    }if($task->end_date!='0000-00-00 00:00:00'){
                      if(!empty($wppm_date_setting)){
                        $task_end_date = $teDate->format($wppm_date_setting);
                      }else{
                        $task_end_date = isset($task->end_date) ? $task->end_date: "" ;
                      }
                    }
                  } elseif($wppm_task_time == 0){
                      $tsDate = new DateTime($task->start_date);
                      $teDate = new DateTime($task->end_date);
                      $task_start_date = $tsDate->format('Y-m-d');
                      $task_end_date = $teDate->format('Y-m-d');
                      if($task->start_date=='0000-00-00 00:00:00'){
                        if($wppm_date_setting=='Y-m-d H:i:s'){
                          $task_start_date = '0000-00-00';
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $task_start_date = '00-00-0000';
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $task_start_date = '00-00-0000';
                        }else{
                          $task_start_date = '0000-00-00';
                        }
                      }
                      if($task->end_date=='0000-00-00 00:00:00'){
                        if($wppm_date_setting=='Y-m-d H:i:s'){
                          $task_end_date = '0000-00-00';
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $task_end_date = '00-00-0000';
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $task_end_date = '00-00-0000';
                        }else{
                          $task_end_date = '0000-00-00';
                        }
                      }
                      if($task->start_date!='0000-00-00 00:00:00'){
                        if($wppm_date_setting=='Y-m-d H:i:s'){
                          $task_start_date = $tsDate->format('Y-m-d');
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $task_start_date = $tsDate->format('d-m-Y');                       
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $task_start_date = $tsDate->format('m-d-Y');
                        }else{
                          $task_start_date = $tsDate->format('Y-m-d');
                        }
                      }
                      if($task->end_date!='0000-00-00 00:00:00'){
                        if($wppm_date_setting=='Y-m-d H:i:s'){
                          $task_end_date = $teDate->format('Y-m-d');
                        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
                          $task_end_date = $teDate->format('d-m-Y');
                        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
                          $task_end_date = $teDate->format('m-d-Y');
                        }else{
                          $task_end_date = $teDate->format('Y-m-d');
                        }
                      }
                  }
                  $url = $wppmfunction->get_task_url( $task->id, $is_frontend );
                  ?>
                  <tr onclick= "if(link)wppm_tl_handle_click(event, <?php echo esc_attr($task->id) ?>, '<?php echo esc_url( $url ); ?>',<?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($task->id) ?>" class="wppm-task-bulk-select" type="checkbox" onchange="wppm_bulk_task_item_select_change();" value="<?php echo esc_attr( $task->id ); ?>"/>
                          <label for="wppm_bulk_select_<?php echo esc_attr($task->id) ?>"></label>
                        </div>
                      </div>
                    </td>
                    <td onmouseover="link=true;">
                      <?php echo esc_html($task->task_name) ?>
                      <?php $wppm_row_subtask_progress = $wppmfunction->get_subtask_progress($task->id);
                      if($wppm_row_subtask_progress['total'] > 0){ ?>
                        <span class="wppm_subtask_badge" title="<?php esc_attr_e('Subtasks','taskbuilder'); ?>"><?php echo esc_html($wppm_row_subtask_progress['completed'].'/'.$wppm_row_subtask_progress['total']); ?></span>
                      <?php } ?>
                    </td>
                    <td onmouseover="link=true;">
                      <?php if(!empty($project->project_name)){
                      echo esc_html($project->project_name);
                      }
                      ?>
                    </td>
                    <td onmouseover="link=true;">
                    <?php if(!empty($task->status)){ ?>
                              <span class="wppm_td_task_status" style="background-color:<?php echo (isset($status->bg_color))? esc_attr($status->bg_color):"";?>; color: <?php echo (isset($status->color))? esc_attr($status->color):""; ?>"><?php echo (isset($status->name))? esc_html($status->name):"" ?></span>
                    <?php } ?>
                    </td>
                    <td onmouseover="link=true;">
                      <?php if(!empty($task->priority)){ ?>
                              <span class ="wppm_td_task_priority" style="background-color:<?php echo (isset($priority->bg_color))? esc_attr($priority->bg_color):"" ;?>; color: <?php echo (isset($priority->color))? esc_attr($priority->color):""; ?>"><?php echo (isset($priority->name))? esc_html($priority->name):"" ?></span>
                      <?php } ?>
                    </td>
                    <?php if($wppm_default_task_date == 1 && $wppm_deafault_time_duration_task==0) { ?>
                            <td onmouseover="link=true;">
                            <?php if(!empty($task_start_date)){ ?>
                                      <?php echo esc_html($task_start_date);
                                  } ?>
                            </td>
                            <td onmouseover="link=true;"><?php
                            if(!empty($task_end_date) && ($task->status!=4 && $task_end_date < $current_date && $task_end_date != '0000-00-00 00:00:00' && $task_end_date != '00-00-0000 00:00:00' && $task_end_date != '00-00-0000' && $task_end_date != '0000-00-00')){ 
                                  $style =  "color:#FF0000";
                                  } else{
                                  $style = "color:#2C3E50";
                                  }?>
                                  <span style="<?php echo esc_attr($style); ?>"><?php echo esc_html($task_end_date);?></span>
                            </td>
                    <?php } ?>
                    <?php if($wppm_deafault_time_duration_task==1){ ?>
                            <?php
                            if(!empty($task_end_date) && ($task->status!=4 && $task_end_date < $current_date && $task_end_date != '0000-00-00 00:00:00' && $task_end_date != '00-00-0000 00:00:00' && $task_end_date != '00-00-0000' && $task_end_date != '0000-00-00')){ 
                              $style = "color:#FF2222";
                            } else {
                              $style = "color:#2C3E50";
                            } ?>
                            <td onmouseover="link=true;" class="wppm_table_td"><span style="<?php echo esc_attr($style); ?>"><?php echo isset($wppm_task_duration) ? esc_html($wppm_task_duration):"" ?></span></td>
                    <?php } ?>
                    </td>
                    <td onmouseover="link=true;" style="text-align:center;">
                      <?php 
                        $i=0;
                        if(!empty($project_data['users'])){
                          $proj_users = explode(',',$project_data['users']);
                        }
                        if(!empty($task->users)){
                          $users = explode(",",$task->users);
                          foreach($users as $user){ 
                            if( (!empty($proj_users)) && (in_array($user,$proj_users))){
                              $i++;
                              if( $i <= 4 ){
                                $userdata = get_userdata( $user ); 
                                if(!empty($userdata)){
                                  ?>
                                  <a href="#" title="<?php echo esc_attr($userdata->display_name); ?>">
                                    <?php echo get_avatar($userdata->ID, 25, "mysteryman")?>
                                  </a> <?php
                                }
                              }
                            }
                          }
                        } 
                        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 } ?>
                        <?php
                        if($i==0){
                          echo esc_html_e('None','taskbuilder');
                        } ?>
                    </td>
                    <td onmouseover="link=true;">
                      <?php
                      $completion = 0;
                      if ($total != 0 && $total != NULL) {
                        $completion = intval($total_checked_items/$total*100);
                      }
                      echo esc_html($completion).'%';
                      ?>
                    </td>
                    <?php do_action('wppm_table_column');?>
                  </tr>
        <?php   }
            } 
          }
          ?>
        </tbody>
      </table>
      <script>
      function wppm_tl_handle_click(event, id, url,project_id) {
        if ( ( event.ctrlKey || event.metaKey ) && url ) {
          window.open(url, '_blank');
        } else {
          wppm_open_task(id,project_id);
        }
      }
			</script>
      <?php
      $current_page=$page_no+1;
      $total_pages=ceil($totalrows/$task_per_page);
      $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="row" style="background-color:#ffffff;">
        <div class="col-sm-12">
          <div class="wppm_task_result" style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>"><?php esc_html_e('Your search request returned no results.','taskbuilder');?></div>
          <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
        </div>
      <div>
    </div>
  </div>
  <div class="row wppm_task_pagination_container">
    <div class="col-sm-4">
      <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_attr($task_index) ?>&nbsp;<?php echo esc_html_e('of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Tasks','taskbuilder')?>
    </div>
    <div class="wppm_task_pagination col-sm-4" 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_attr($prev_class) ?> 
        style="<?php echo (isset($prev_class) && esc_attr($prev_class)== 'disabled') ? 'display:none;':'display:block;'?>cursor:pointer;">
        <a class="wppm_pagination_prev" onclick="return wppm_load_prev_task_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) && esc_attr($next_class) == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
        <a class="wppm_pagination_next" onclick="return wppm_load_next_task_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>
</form>
<style>
	.select2-selection--single {
		height: 30px!important;
	}
  .select2-dropdown:hover {
    	color: #23527c!important;;
	}
	.select2-results__options{
		font:15px "Helvetica Neue",Arial,Helvetica,sans-serif !important;
		margin: 0!important;
		line-height: inherit!important;
	}
	.select2-selection__rendered{
		font:15px "Helvetica Neue",Arial,Helvetica,sans-serif !important;
		margin-top: 5px!important;
	}
	.select2-selection__rendered:hover{
		color: #2271b1 !important;
	}
	.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable{
		background-color: #e85f08!important;
		color: white !important;
	}
  .select2-container {
    max-width: 150px !important;
    min-width: 150px !important;
  }

  .select2-selection--multiple {
    max-width: 290px !important;
    min-width: 290px !important;
  }

  #wppm_task_filter{
		min-height: 30px !important;
    max-height: 35px !important;
	}
  #wppm_task_table tr:nth-child(even) td{
    background-color:<?php echo esc_attr($appearance_settings['list-item-even-background-color'])?>;
    color:<?php echo esc_attr($appearance_settings['list-item-even-text-color'])?>;
  }
  #wppm_task_table tr:nth-child(odd) td{
    background-color:<?php echo esc_attr($appearance_settings['list-item-odd-background-color'])?>;
    color:<?php echo esc_attr($appearance_settings['list-item-odd-text-color'])?>;
  }
  #wppm_task_table tr:hover td{
    background-color:<?php echo esc_attr($appearance_settings['list-item-hover-background-color'])?>;
  }
  #wppm_task_table tr:hover td{
    color: <?php echo esc_attr($appearance_settings['list-item-hover-text-color'])?>;
  }
  #wppm_add_new_task_btn_tl:hover{
    background-color:<?php echo esc_attr($appearance_settings['list-header-button-hover-color'])?>!important; 
  }
</style>
<script type="text/javascript">
    var link = true;
    window.listFilters = window.listFilters || {
    created_by: [],
    assigned: [],
    priority: [],
    start_date: "",
    end_date: ""
  };

  var listFilters = window.listFilters;
    jQuery( document ).ready( function( jQuery ) {
        // SET VALUES AFTER INIT
        let createdBy = <?php echo wp_json_encode(array_map('strval', $advanced_filter['created_by'] ?? [])); ?>;

        let assigned = <?php echo wp_json_encode(array_map('strval', $advanced_filter['assigned'] ?? [])); ?>;

        let priority = <?php echo wp_json_encode(array_map('strval', $advanced_filter['priority'] ?? [])); ?>;
        jQuery('#tb-created-by').val(createdBy).trigger('change');
        jQuery('#tb-assigned').val(assigned).trigger('change');
        jQuery('#tb-priority').val(priority).trigger('change');
        jQuery('#tb-start-date').val('<?php echo esc_attr($advanced_filter['start_date'] ?? ''); ?>');
        jQuery('#tb-end-date').val('<?php echo esc_attr($advanced_filter['end_date'] ?? ''); ?>');
        jQuery(document).off("click", "#tb-apply-filter").on("click", "#tb-apply-filter", function (e) {
          e.preventDefault();
        listFilters.created_by = jQuery("#tb-created-by").val() || [];
        listFilters.assigned   = jQuery("#tb-assigned").val() || [];
        listFilters.priority   = jQuery("#tb-priority").val() || [];
        listFilters.start_date = jQuery("#tb-start-date").val() || "";
        listFilters.end_date   = jQuery("#tb-end-date").val() || "";
        listFilters.id = "<?php echo esc_attr($project_id); ?>";
          renderActiveFilters(listFilters);
          setListFilterCookie(listFilters);
          triggerFilter(1, listFilters,'list');
        });
        jQuery(document).on("click", ".tb-remove", function () {
          let key = jQuery(this).attr("data-key");
          let value = jQuery(this).attr("data-value");
          // DATE REMOVE
          if (key === "date") {
            listFilters.start_date = "";
            listFilters.end_date = "";
            jQuery("#tb-start-date").val("");
            jQuery("#tb-end-date").val("");
          } else {
            listFilters[key] = (listFilters[key] || [])
            .map(String)
            .filter(v => v !== String(value));
            jQuery(`#tb-${key}`).val(listFilters[key]).trigger("change");
          }
          // REMOVE CHIP UI
          jQuery(this).closest(".tb-chip").remove();
          syncUIWithFilters(listFilters);
            // save cookie
          setListFilterCookie(listFilters);
            // reload data
          triggerFilter(1,listFilters,'list');
        });
        jQuery(document)
          .off("click", "#tb-reset-filter").on("click", "#tb-reset-filter", function () {
            resetFilters('list');
        });
        let saved = getListFilterCookie();
        if (saved && typeof saved === "object") {
          window.listFilters = {
            created_by: saved.created_by || [],
            assigned: saved.assigned || [],
            priority: saved.priority || [],
            start_date: saved.start_date || "",
            end_date: saved.end_date || ""
          };
          listFilters = window.listFilters;
        }
        setTimeout(function () {
          syncUIWithFilters(listFilters);
          renderActiveFilters(listFilters);
        }, 100);
      jQuery("input[name='wppm_task_search_filter']").keypress(function(e) {
            //Enter key
        if (e.which == 13) {
          wppm_task_search_filter('<?php echo esc_attr($page); ?>');
        }
      });
    jQuery("#wppm_task_name_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_task_name_img').show();
      jQuery('#wppm_chevron_sort_down_task_name_img').hide();
    });
    jQuery("#wppm_project_name_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_project_list_img').show();
      jQuery('#wppm_chevron_sort_down_project_list_img').hide();
    });
    jQuery("#wppm_status_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_status_img').show();
      jQuery('#wppm_chevron_sort_down_status_img').hide();
    });
    jQuery("#wppm_priority_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_priority_img').show();
      jQuery('#wppm_chevron_sort_down_priority_img').hide();
    });
    jQuery("#wppm_start_date_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_start_date_img').show();
      jQuery('#wppm_chevron_sort_down_start_date_img').hide();
    });
    jQuery("#wppm_end_date_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_end_date_img').show();
      jQuery('#wppm_chevron_sort_down_end_date_img').hide();
    });
     jQuery("#wppm_task_duration_th").hover(function(){
      jQuery('#wppm_chevron_sort_up_task_duration_img').show();
      jQuery('#wppm_chevron_sort_down_task_duration_img').hide();
    });
    
  })
  jQuery('#wppm_task_list_proj_filter').select2({ dropdownAutoWidth: true, width: 'auto' });
  jQuery('#wppm_task_list_proj_filter').val(<?php echo esc_attr($proj_filter) ?>);
  jQuery('#tb-created-by').select2({ dropdownAutoWidth: true, width: '100%'});
  jQuery('#tb-created-by').val(<?php echo wp_json_encode($advanced_filter['created_by'] ?? []); ?>).trigger('change');  
  jQuery('#tb-assigned').select2({ dropdownAutoWidth: true, width: '100%' });
  jQuery('#tb-assigned').val(<?php echo wp_json_encode($advanced_filter['assigned'] ?? []); ?>).trigger('change');
  jQuery('#tb-priority').select2({dropdownAutoWidth: true, width: '100%'});
  jQuery('#tb-priority').val(<?php echo wp_json_encode($advanced_filter['priority'] ?? []); ?>).trigger('change');
    /**
 * Bulk item selector change
 */
  function wppm_bulk_task_item_select_change() {
    jQuery("#wppm-task-bulk-actions-btn").show();
    var items = jQuery(".wppm-task-bulk-select:checked");
    var checked = items.length === 0 ? false : true;
    if(checked){
      jQuery(".wppm-bulk-selector").prop("checked", checked);
    }else{
      jQuery("#wppm-task-bulk-actions-btn").hide();
      jQuery(".wppm-bulk-selector").prop("checked", false);
    }
  }
  jQuery(document).off("click", "#tb-advanced-toggle").on("click", "#tb-advanced-toggle", function (e) {
    e.stopPropagation();
    jQuery("#tb-advanced-panel").toggleClass("tb-open");
  });

  /* Close on backdrop click */
  jQuery(document).on("click", "#tb-backdrop", function () {
    jQuery("#tb-advanced-panel").removeClass("tb-open");
    jQuery(this).removeClass("active");
  });

  /* Close on outside (desktop only) */
  jQuery(document).on("click", function (e) {
    if (window.innerWidth > 768) {
      if (!jQuery(e.target).closest("#tb-advanced-panel, #tb-advanced-toggle").length) {
        jQuery("#tb-advanced-panel").removeClass("tb-open");
      }
    }
  });jQuery(document).on("click", "#tb-close-filters", function () {
    jQuery("#tb-advanced-panel").removeClass("tb-open");
    jQuery("#tb-backdrop").removeClass("active");
  });
</script>
```
