PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 4.0.3
Taskbuilder – Project Management & Task Management Tool With Kanban Board v4.0.3
6.0.5 6.0.2 6.0.3 6.0.4 6.0.1 6.0.0 5.0.8 5.0.9 4.0.9 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 All 57 releases
taskbuilder / includes / admin / projects / projects_list.php

projects_list.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 4.0.3, at includes/admin/projects/projects_list.php

469 lines 32.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit; // Exit if accessed directly
4 }
5 global $wpdb,$wppmfunction,$current_user;
6 $status = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses" );
7 $categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories" );
8 $appearance_settings = get_option("wppm-ap-project-list");
9 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
10 $proj_per_page = 20;
11 $page_no = (isset($_POST['page_no'])) ? intval(sanitize_text_field($_POST['page_no'])): '0';
12 $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : '';
13 $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :"ASC";
14 $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):"project_name";
15 $filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : "all";
16 $current_date = date('Y-m-d');
17 $wppm_pl_filter = "1=1";
18 $cu_id = esc_sql($current_user->ID);
19 $filters = array(
20 'sort_by' => $sort_by,
21 'order' => $order,
22 'search' => $search_tag,
23 'filter'=>$filter_by
24 );
25 $pl_filters = isset( $_COOKIE['wppm_proj_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_proj_filters'] ) ) : $filters;
26 if(!is_array($pl_filters)){
27 $pl_filters = json_decode($pl_filters);
28 $pl_filters_arr = (array) $pl_filters;
29 } else{
30 $pl_filters_arr = $filters;
31 }
32 $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : $pl_filters_arr['search'];
33 $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :$pl_filters_arr['order'];
34 $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):$pl_filters_arr['sort_by'];
35 $filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : $pl_filters_arr['filter'];
36 if($sort_by == ""){
37 $sort_by = 'project_name';
38 }
39 $filters = array(
40 'sort_by' => $sort_by,
41 'order' => $order,
42 'search'=>$search_tag,
43 'filter'=>$filter_by
44 );
45 setcookie('wppm_proj_filters',wp_json_encode( $filters ),time() + 3600);
46 if($pl_filters_arr['sort_by']=='status'){
47 $sort_by = 'proj_statuses.name';
48 }
49 if($pl_filters_arr['sort_by']=='category'){
50 $sort_by = 'proj_categories.name';
51 }
52 if($pl_filters_arr['sort_by']=='start_date'){
53 $sort_by = 'start_date';
54 }
55 if($pl_filters_arr['sort_by']=='end_date'){
56 $sort_by = 'end_date';
57 }
58 if($sort_by=='category'){
59 $sort_by = 'proj_categories.name';
60 }
61 if($filter_by=='4'){
62 $wppm_pl_filter = "status='4'";
63 }elseif($filter_by=='overdue'){
64 $wppm_pl_filter = "status!='4' AND (CAST(end_date AS DATE)) < '$current_date'";
65 }elseif($filter_by == 'unassigned'){
66 $wppm_pl_filter = "users=''";
67 }elseif($filter_by == '1'){
68 $wppm_pl_filter = "status='1'";
69 }elseif($filter_by == '2'){
70 $wppm_pl_filter = "status='2'";
71 }elseif($filter_by == '3'){
72 $wppm_pl_filter = "status='3'";
73 }elseif($filter_by == 'mine'){
74 $wppm_pl_filter = "(FIND_IN_SET('$current_user->ID',users)>0)";
75 }
76 $wppm_project_time = get_option('wppm_project_time');
77 $wppm_default_project_date = get_option('wppm_default_project_date');
78 $sort_by = apply_filters('wppm_project_list_sort_by_query',$sort_by);
79 $order = apply_filters('wppm_project_list_order_query',$order);
80 $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%';
81 if(!empty($search_tag)){
82 $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%';
83 $query = ("SELECT Project.*
84 FROM {$wpdb->prefix}wppm_project AS Project
85 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
86 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
87 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
88 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
89 ");
90 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
91 $where = " where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text'))";
92 }else{
93 $where = " where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')) AND ((FIND_IN_SET('$current_user->ID',Project.users)>0) OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR Project.created_by='$cu_id')";
94 }
95 }else{
96 if($sort_by=='project_name'|| $sort_by=='start_date' || $sort_by=='end_date'){
97 $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
98 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
99 ");
100 } else{
101 $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
102 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
103 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
104 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
105 ");
106 }
107 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
108 $where = " where $wppm_pl_filter";
109 }else{
110 $where = " where ($wppm_pl_filter AND (FIND_IN_SET('$current_user->ID',Project.users)>0 OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1)) OR Project.created_by='$cu_id')";
111 }
112 }
113 $no_of_rows = ( "SELECT count(*) FROM ($query");
114 $no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows,$wppm_pl_filter,$search_tag);
115 $where = apply_filters('wppm_project_list_query_where',$where, $wppm_pl_filter,$search_tag);
116 $sort_by = esc_sql($sort_by);
117 $order = esc_sql($order);
118 $query .= $where." Group by Project.id ORDER BY $sort_by $order";
119 $no_of_rows .= $where." Group by Project.id) AS Project";
120 $totalrows = $wpdb->get_var( $no_of_rows );
121 $query = apply_filters('wppm_project_list_query',$query);
122 $limit_start=$page_no*$proj_per_page;
123 $limit="\n LIMIT ".$limit_start.",".$proj_per_page." ";
124 $query = $query.$limit;
125 $wppm_fillter = $wpdb->get_results($query);
126 $new_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(1)."'" );
127 $inp_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(2)."'" );
128 $hold_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(3)."'" );
129 $completed_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(4)."'" );
130 $new_style = (!empty($new_status_name))? "display:inline" :"display:none;";
131 $inp_status_style = (!empty($inp_status_name))? "display:inline" :"display:none;";
132 $hold_status_style = (!empty($hold_status_name))? "display:inline" :"display:none;";
133 $complete_status_style = (!empty($completed_status_name))? "display:inline" :"display:none;";
134 ?>
135 <form id="wppm_project_list_frm">
136 <div id="wppm-container">
137 <div id="wppm_project_list_container" class="wppm_bootstrap">
138 <div class="row">
139 <div class="col-sm-6" id="wppm_heading_inline">
140 <span class="wppm-heading-inline">
141 <?php echo esc_html_e('Projects','taskbuilder');?>
142 </span>
143 <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin' ){ ?>
144 <img width="25" height="30" id="wppm_add_new_project_btn" class="wppm_add_new_project_btn" onclick="wppm_add_new_project()" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/add.svg'); ?>" alt="add">
145 <?php } ?>
146 </div>
147 <div id="wppm_project_and_task_search" class="col-sm-6">
148 <img width="25px" id="wppm_project_search_filter_img" height="15px" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/search.svg'); ?>" alt="search">
149 <input type="search" id="wppm_project_search_filter" 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) : "" ?>">
150 </div>
151 </div>
152 <div class="row">
153 <div class="col-sm-6" id="wppm_project_filter_container">
154 <div class="wppm-filter-item">
155 <label for="wppm_project_filter"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
156 <select id="wppm_project_filter" name="wppm_project_filter" onchange="wppm_apply_project_filter()">
157 <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
158 <option style="<?php echo $new_style ?>" value="1" <?php echo ($filter_by == "1")? 'selected':""?>><?php echo esc_html_e($new_status_name,'taskbuilder');?></option>
159 <option style="<?php echo $inp_status_style ?>" value="2" <?php echo ($filter_by == "2")? 'selected':""?>><?php echo esc_html_e($inp_status_name,'taskbuilder');?></option>
160 <option style="<?php echo $hold_status_style ?>" value="3" <?php echo ($filter_by == "3")? 'selected':""?>><?php echo esc_html_e($hold_status_name,'taskbuilder');?></option>
161 <option style="<?php echo $complete_status_style ?>" value="4" <?php echo ($filter_by == "4")? 'selected':""?>><?php echo esc_html_e($completed_status_name,'taskbuilder');?></option>
162 <option value="mine" <?php echo ($filter_by == "mine")? 'selected':""?>><?php echo esc_html_e('Mine','taskbuilder');?></option>
163 <option value="unassigned" <?php echo ($filter_by == "unassigned")? 'selected':""?>><?php echo esc_html_e('Unassigned','taskbuilder');?></option>
164 <option value="overdue" <?php echo ($filter_by == "overdue")? 'selected':""?>><?php echo esc_html_e('Overdue','taskbuilder');?></option>
165 </select>
166 </div>
167 <div class="wppm_display_submit">
168 <div class="wppm-filter-actions">
169 <span class="wppm-link" onclick="wppm_pl_reset_filter()"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
170 </div>
171 </div>
172 </div>
173 </div>
174 <div class="row">
175 <div class="col-sm-12">
176 <div class="wppm-bulk-actions">
177 <button
178 id="wppm-bulk-actions-btn"
179 class="wppm-button small secondary"
180 type="button"
181 style="display:none"
182 data-popover="wppm-bulk-actions">
183 <?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">
184 </button>
185 <div id="wppm-bulk-actions" class="gpopover wppm-popover-menu wppm-proj-bulk-actions">
186 <div class="wppm-popover-menu-item" onclick="wppm_bulk_change_status('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_status' ) ); ?>');">
187 <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>
188 </div>
189 <div class="wppm-popover-menu-item" onclick="wppm_bulk_change_category('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_category' ) ); ?>');">
190 <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>
191 </div>
192 <div class="wppm-popover-menu-item" onclick="wppm_bulk_assign_users('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_assign_users' ) ); ?>');">
193 <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>
194 </div>
195 <div class="wppm-popover-menu-item" onclick="wppm_bulk_delete_project('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_assign_users' ) ); ?>');">
196 <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>
197 </div>
198 </div>
199 </div>
200 </div>
201 </div>
202 <script>
203 jQuery('#wppm-more-actions-btn, #wppm-bulk-actions-btn').gpopover({width: 200});
204 </script>
205 <div class="table-responsive">
206 <table id="wppm_project_table" class="wppm_table table">
207 <tr>
208 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>" onchange="wppm_bulk_select_change()">
209 <div class="checkbox-container">
210 <input id="wppm_bulk_select_option" class="wppm-bulk-selector" type="checkbox" onchange="wppm_bulk_select_change();"/>
211 <label for="wppm_bulk_select_option"></label>
212 </div>
213 </th>
214 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
215 <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>
216 <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">
217 <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">
218 </th>
219 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
220 <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>
221 <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">
222 <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">
223 </th>
224 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
225 <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>
226 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
227 <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>
228 <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">
229 <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">
230 </th>
231 <?php if($wppm_default_project_date==1){ ?>
232 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
233 <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>
234 <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">
235 <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">
236 </th>
237 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
238 <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>
239 <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">
240 <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">
241 </th>
242 <?php } ?>
243 <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>
244 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>"></th>
245 </tr>
246 <tbody>
247 <?php
248 $total_projects=0;
249 $users = array();
250 if(!empty($wppm_fillter)){
251 foreach( $wppm_fillter as $project ){
252 $total_projects++;
253 $proejctdata = $wppmfunction->get_project($project->id);
254 $pstatus= esc_sql($project->status);
255 $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id='$pstatus'" );
256 $users = explode(",",$project->users);
257 $pid= esc_sql($project->id);
258 if(isset($project->cat_id)){
259 $pcat_id = esc_sql($project->cat_id);
260 $category = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_categories where id='$pcat_id'" );
261 }
262 if(isset($project->id)){
263 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
264 $no_of_tasks = $wpdb->get_var("SELECT count(*) FROM {$wpdb->prefix}wppm_task WHERE project='$pid' ");
265 }else{
266 $query =("SELECT count(*) FROM
267 ( SELECT Task.*
268 FROM {$wpdb->prefix}wppm_task AS Task
269 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
270 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
271 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON proj.id = proj_meta.project_id
272 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");
273 $no_of_tasks = $wpdb->get_var($query);
274 }
275 $no_of_tasks = apply_filters('wppm_no_of_task_proj_list_query',$no_of_tasks,$project->id);
276 }
277 if($wppm_project_time == 1){
278 $proj_start_date = $project->start_date;
279 $proj_end_date = $project->end_date;
280 } elseif($wppm_project_time == 0){
281 $psDate = new DateTime($project->start_date);
282 $peDate = new DateTime($project->end_date);
283 $proj_start_date = $psDate->format('Y-m-d');
284 $proj_end_date = $peDate->format('Y-m-d');
285 }
286 ?>
287 <tr onclick="if(link)wppm_open_project(<?php echo esc_attr($project->id) ?>)">
288 <td class="bulk-selector" onmouseover="link=false;" onmouseout="link=true;">
289 <div class="wppm-pl-item-selector">
290 <div class="checkbox-container">
291 <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 ); ?>"/>
292 <label for="wppm_bulk_select_<?php echo esc_attr($project->id) ?>"></label>
293 </div>
294 </div>
295 </td>
296 <td onmouseover="link=true;"><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
297 <td onmouseover="link=true;"><span class="wppm_td_project_status" style="background-color:<?php echo esc_attr($status->bg_color);?>; color: <?php echo esc_attr($status->color); ?>"><?php echo esc_html_e($status->name,'taskbuilder') ?></span></td>
298 <td onmouseover="link=true;">
299 <?php
300 $i=0;
301 if(!empty(array_filter($users))){
302 foreach($users as $user){
303 $i++;
304 if( $i <= 4 ){
305 $user_info = get_user_by('id', $user );
306 if(!empty($user_info)){
307 ?>
308 <a href="#" title="<?php echo esc_html_e($user_info->display_name) ?>">
309 <?php echo get_avatar($user_info->ID, 25, "mysteryman");?>
310 </a> <?php
311 }
312 }
313 }
314 } else{
315 _e('None','wp_projects');
316 }
317 if($i > 4){
318 ?>
319 <a href="#" class="wppm_avatar">
320 <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
321 </a>
322 <?php } ?>
323 </td>
324 <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></td>
325 <?php if($wppm_default_project_date==1){ ?>
326 <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
327 <?php $style = ($project->status!=4 && $proj_end_date < $current_date) ? "color:#FF0000":"color:#2C3E50"; ?>
328 <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):"" ?></td></span>
329 <?php } ?>
330 <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
331 <td onmouseover="link=true;" class="wppm_delete_action">
332 <?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"; ?>
333 <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>
334 <?php ?>
335 </td>
336 </tr>
337 <?php
338 }
339 }
340 ?>
341 </tbody>
342 </table>
343 <?php
344 $total_pages=ceil($totalrows/$proj_per_page);
345 $current_page=$page_no+1;
346 $prev_page_no=$current_page-1;
347 $prev_class=($prev_page_no==0)?'disabled':'';
348 $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
349 $next_class=($total_pages==$current_page)?'disabled':'';
350 ?>
351 <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>
352 <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
353 </div>
354 <div class="row wppm_proj_pagination_container">
355 <div class="col-sm-4">
356 <?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')?>
357 </div>
358 <div class="col-sm-4">
359 <div class="wppm_proj_pagination" style="<?php echo esc_attr($total_pages==0)? "display:none;":"display:flex;"?>">
360 <span class="wppm-pagination-txt">
361 <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>
362 </span>
363 <span
364 <?php echo esc_html($prev_class) ?>
365 style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
366 <a class="wppm_pagination_prev" onclick="return wppm_load_prev_page(<?php echo esc_attr($prev_page_no) ?>,<?php echo esc_attr($page_no) ?>,'<?php echo esc_attr($sort_by)?>','<?php echo esc_attr($order) ?>');"><?php echo esc_html_e('PREV','taskbuilder');?></a>
367 </span>
368 <span
369 <?php echo esc_attr($next_class) ?>
370 style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
371 <a class="wppm_pagination_next" onclick="return wppm_load_next_page('<?php echo esc_attr($next_page_no) ?>','<?php echo esc_attr($page_no) ?>','<?php echo esc_attr($sort_by)?>','<?php echo esc_attr($order) ?>');"><?php echo esc_html_e('NEXT','taskbuilder');?></a>
372 </span>
373 </div>
374 </div>
375 </div>
376 </div>
377 </div>
378 </form>
379 <style>
380 #wppm_project_table tr:nth-child(even) td{
381 background-color:<?php echo esc_attr($appearance_settings['list-item-even-background-color'])?>!important;
382 color:<?php echo esc_attr($appearance_settings['list-item-even-text-color'])?>!important;
383 }
384 #wppm_project_table tr:nth-child(odd) td{
385 background-color:<?php echo esc_attr($appearance_settings['list-item-odd-background-color'])?>!important;
386 color:<?php echo esc_attr($appearance_settings['list-item-odd-text-color'])?>!important;
387 }
388 #wppm_project_table tr:hover td{
389 background-color:<?php echo esc_attr($appearance_settings['list-item-hover-background-color'])?>!important;
390 }
391 #wppm_project_table tr:hover td{
392 color: <?php echo esc_attr($appearance_settings['list-item-hover-text-color'])?>!important;
393 }
394 </style>
395 <script type="text/javascript">
396 jQuery( document ).ready( function( jQuery ) {
397 jQuery("input[name='wppm_project_search_filter']").keypress(function(e) {
398 //Enter key
399 if (e.which == 13) {
400 wppm_project_search_filter();
401 }
402 });
403 jQuery("#wppm_proj_name_th").hover(function(){
404 jQuery('#wppm_chevron_sort_up_project_name_img').show();
405 jQuery('#wppm_chevron_sort_down_project_name_img').hide();
406 });
407 jQuery("#wppm_project_status_th").hover(function(){
408 jQuery('#wppm_chevron_sort_up_project_status_img').show();
409 jQuery('#wppm_chevron_sort_down_project_status_img').hide();
410 });
411 jQuery("#wppm_project_category_th").hover(function(){
412 jQuery('#wppm_chevron_sort_up_project_cat_img').show();
413 jQuery('#wppm_chevron_sort_down_project_cat_img').hide();
414 });
415 jQuery("#wppm_project_start_date_th").hover(function(){
416 jQuery('#wppm_chevron_sort_up_project_start_date_img').show();
417 jQuery('#wppm_chevron_sort_down_project_start_date_img').hide();
418 });
419 jQuery("#wppm_project_end_date_th").hover(function(){
420 jQuery('#wppm_chevron_sort_up_project_end_date_img').show();
421 jQuery('#wppm_chevron_sort_down_project_end_date_img').hide();
422 });
423 jQuery(".wppm_delete_action").on("click", function(e){
424 e.preventDefault();
425 return false;
426 });
427
428 jQuery('#wppm_project_list_frm').on('submit', function (e) {
429 var dataform = new FormData(jQuery('#wppm_project_list_frm')[0]);
430 jQuery.ajax({
431 url: wppm_admin.ajax_url,
432 type: 'POST',
433 data: dataform,
434 processData: false,
435 contentType: false,
436 success: function () {
437 alert('form was submitted');
438 }
439 });
440 });
441 });
442 /**
443 * Bulk item selector change
444 */
445 function wppm_bulk_item_select_change() {
446 jQuery("#wppm-bulk-actions-btn").show();
447 var items = jQuery(".wppm-bulk-select:checked");
448 var checked = items.length === 0 ? false : true;
449 if(checked){
450 jQuery(".wppm-bulk-selector").prop("checked", checked);
451 }else{
452 jQuery("#wppm-bulk-actions-btn").hide();
453 jQuery(".wppm-bulk-selector").prop("checked", false);
454 }
455 }
456 </script>
457 <?php
458 add_action('wp_footer', 'wppm_page_inline_script', 999999999999999999);
459 do_action('wppm_after_shortcode_loaded');
460 if(!function_exists('wppm_page_inline_script')) {
461 function wppm_page_inline_script() { ?>
462 <script type="text/javascript">
463 jQuery( document ).ready( function( jQuery ) {
464 wppm_get_project_list();
465 });
466 </script>
467 <?php }
468 }
469 ?>