PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 2.0.5
Taskbuilder – Project Management & Task Management Tool With Kanban Board v2.0.5
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 / open_project / wppm_view_project_tasks.php

wppm_view_project_tasks.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 2.0.5, at includes/admin/projects/open_project/wppm_view_project_tasks.php

281 lines 16.9 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,$current_user, $wppmfunction;
6 $task_per_page = 20;
7 $page_no = isset($_POST['page_no']) ? intval(sanitize_text_field($_POST['page_no'])) : '0';
8 $task_status = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_statuses ORDER BY load_order ASC" );
9 $search_tag = isset($_POST['task_search']) ? sanitize_text_field($_POST['task_search']) : '';
10 $filters = array(
11 'search' => $search_tag
12 );
13 $grid_view_filter = $filters ;
14 $tl_filters = isset( $_COOKIE['wppm_grid_view_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_grid_view_filters'] ) ) : $grid_view_filter;
15 if(!is_array($tl_filters)){
16 $tl_filters = json_decode($tl_filters);
17 $tl_filters_arr = (array) $tl_filters;
18 } else{
19 $tl_filters_arr = $filters;
20 }
21 $search_tag = isset($_POST['task_search']) ? sanitize_text_field($_POST['task_search']) : $tl_filters_arr['search'];
22 $filters = array(
23 'search'=>$search_tag
24 );
25 setcookie('wppm_grid_view_filters',wp_json_encode( $filters ),time() + 3600);
26
27 if(!empty($search_tag)){
28 $search_tag_text = '%'.$search_tag.'%';
29 if($current_user->has_cap('manage_options')){
30 $query = ("SELECT Task.*
31 FROM {$wpdb->prefix}wppm_task AS Task
32 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
33 Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id
34 Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id
35 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.id,Task.users)>0) AND user.display_name LIKE '$search_tag_text'
36 where (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') Group by Task.id");
37 $no_of_rows = ("SELECT count(*) FROM
38 (SELECT Task.*
39 FROM {$wpdb->prefix}wppm_task AS Task
40 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
41 Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id
42 Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id
43 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.id,Task.users)>0) AND user.display_name LIKE '$search_tag_text'
44 where (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') Group by Task.id) AS Task");
45 } else{
46 $query = ("SELECT Task.*
47 FROM {$wpdb->prefix}wppm_task AS Task
48 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
49 Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id
50 Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id
51 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
52 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.id,Task.users)>0) AND user.display_name LIKE '$search_tag_text'
53 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id
54 where ((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$current_user->ID') OR (proj_users.user_id = '$current_user->ID' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',proj.users)>0)) OR (Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1)) 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') Group by Task.id");
55 $no_of_rows = ("SELECT count(*) FROM
56 (SELECT Task.*
57 FROM {$wpdb->prefix}wppm_task AS Task
58 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
59 Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id
60 Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id
61 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
62 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.id,Task.users)>0) AND user.display_name LIKE '$search_tag_text'
63 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id
64 where ((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$current_user->ID') OR (proj_users.user_id = '$current_user->ID' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',proj.users)>0)) OR (Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1)) 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') Group by Task.id) AS Task");
65 }
66 }else{
67 if($current_user->has_cap('manage_options')){
68 $query = ( "SELECT * FROM {$wpdb->prefix}wppm_task");
69 $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_task" );
70 }else{
71 $query = ( "SELECT Task.*
72 FROM {$wpdb->prefix}wppm_task AS Task
73 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
74 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
75 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id
76 where (FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by)= '$current_user->ID' OR (proj_users.user_id = '$current_user->ID' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',proj.users)>0)) OR (Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) Group by Task.id");
77 $no_of_rows = ( "SELECT count(*) FROM
78 ( SELECT Task.*
79 FROM {$wpdb->prefix}wppm_task AS Task
80 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
81 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
82 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id
83 where (FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by)= '$current_user->ID' OR (proj_users.user_id = '$current_user->ID' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',proj.users)>0)) OR (Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) Group by Task.id) AS Task");
84 }
85 }
86 $no_of_rows = apply_filters('wppm_task_list_no_of_rows_for_grid_view',$no_of_rows);
87 $totalrows = $wpdb->get_var($no_of_rows);
88 $limit_start=$page_no*$task_per_page;
89 $limit="\n LIMIT ".$limit_start.",".$task_per_page." ";
90 $current_page=$page_no+1;
91 $query = apply_filters('wppm_task_list_grid_view_query',$query);
92 $query = $query.$limit;
93 $wppm_task_fillter = $wpdb->get_results($query);
94 $total_pages=ceil($totalrows/$task_per_page);
95 $prev_page_no=$current_page-1;
96 $prev_class=(!$prev_page_no)?'disabled':'';
97 $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
98 $next_class=($total_pages==$current_page)?'disabled':'';
99 ?>
100 <form name="wppm_view_project_task" id="wppm_view_project_task">
101 <div class="row">
102 <div class="col-sm-6">
103 <span class="wppm-heading-inline"> <?php echo esc_html_e('Tasks','taskbuilder');?> </span>
104 <span class="wppm-add-new-btn btn-primary" 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"><?php echo esc_html_e('Add New','taskbuilder');?></span>
105 <span class="wppm-add-new-btn btn-primary" id="wppm_task_list" onclick="wppm_get_task_list()" ><span><img class="wppm_task_list_image" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list-symbol.svg'); ?>" alt="list"></span><span><?php echo esc_html_e('Task List','taskbuilder');?></span></span>
106 </div>
107 <div id="wppm_task_search" class="col-sm-6">
108 <input type="search" id="wppm_view_task_search_filter" name="wppm_view_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) : "" ?>">
109 <span><img width="25" height="15" class="wppm_task_search_filter_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/search.svg'); ?>" alt="search"></span>
110 </div>
111 </div>
112 <span id="wppm_list_view_btn" onclick="wppm_get_task_list()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/listv.svg'); ?>" alt="list"><span style="margin-left:5px;"><?php echo esc_html_e('List view','taskbuilder');?></span></span>
113 <div class="wppm_task_container" id="wppm_task_container">
114 <?php
115 if(!empty($task_status)){
116 foreach($task_status as $status) {
117 ?>
118 <div class="wppm_task_list" id="wppm_task_list_<?php echo esc_attr($status->id)?>">
119 <div class="row">
120 <div class="col-sm-12 wppm_card_header" style="background-color:<?php echo esc_attr($status->bg_color)?>;color:<?php echo esc_attr($status->color);?>;">
121 <span class="wppm_status_name"><?php echo esc_html_e($status->name,'taskbuilder');?></span>
122 <span class="wppm_add_new_icon" onclick="wppm_add_new_task()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/add_new1.svg'); ?>" alt="add"></span>
123 </div>
124 </div>
125 <div id="wppm_card_body_container_<?php echo esc_attr($status->id) ?>" style="height:100%;">
126 <?php
127 $total_checklist_items=0;
128 $total_checked_items=0;
129 $task_per_status = false;
130 $total_tasks = 0;
131 if(!empty($wppm_task_fillter)){
132 foreach($wppm_task_fillter as $task){
133 $total_tasks++;
134 if((!empty($task)) && $task->status==$status->id){
135 $task_per_status = true;
136 if(isset($task->priority)){
137 $task_priority = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id = $task->priority" );
138 }
139 if(!empty($task->id)){
140 $checklists = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist where task_id = $task->id" );
141 $total=$wpdb->get_var("SELECT COUNT(Items.id) AS check_id
142 FROM {$wpdb->prefix}wppm_checklist_items AS Items
143 Left join {$wpdb->prefix}wppm_checklist checklist ON Items.checklist_id = checklist.id
144 WHERE checklist.task_id = $task->id");
145 $total_checked_items=$wpdb->get_var("SELECT COUNT(Items.id) AS check_id
146 FROM {$wpdb->prefix}wppm_checklist_items AS Items
147 Left join {$wpdb->prefix}wppm_checklist checklist ON Items.checklist_id = checklist.id
148 WHERE checklist.task_id = $task->id AND Items.checked=1");
149 ?>
150 <div class="wppm_card_body" onclick="wppm_open_task(<?php echo esc_attr($task->id)?>)" id="wppm_draggable_card_<?php echo esc_attr($task->id)?>">
151 <div class="row">
152 <div class="col-sm-6">
153 <span class="wppm_td_task_priority" style="background-color:<?php echo (!empty($task_priority->bg_color))? esc_attr($task_priority->bg_color):"";?>;color:<?php echo (!empty($task_priority->color))? esc_attr($task_priority->color):"";?>"><?php echo (!empty($task_priority->name))? esc_html($task_priority->name):"" ?></span>
154 </div>
155 <div class="wppm_card_task_action col-sm-6">
156 <span class="wppm_checklist_total_checked_item"><?php echo esc_html($total_checked_items.'/'.$total)?></span><span class="wppm_total_checked_item"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/checked.svg'); ?>" alt="checked"></span>
157 <span class="wppm_show_dropdown_menu" onclick="wppm_show_dropdown_menu(<?php echo esc_attr($task->id);?>)" data-popover="wppm-dropdown-menu-<?php echo esc_attr($task->id);?>" id="wppm_task_action_<?php echo esc_attr($task->id);?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/vertical_dot.svg'); ?>" alt="vertical_dot"></span>
158 <div class="gpopover" id="wppm-dropdown-menu-<?php echo esc_attr($task->id);?>">
159 <a class="dropdown-item" href="#"><?php echo esc_html_e('Edit','taskbuilder');?></a>
160 <a class="dropdown-item" href="#"><?php echo esc_html_e('Delete','taskbuilder');?></a>
161 </div>
162 </div>
163 </div>
164 <div class="row">
165 <div class="col-sm-12">
166 <span class="wppm_task_name_grid_view"><?php echo esc_html_e($task->task_name,'taskbuilder');?></span>
167 </div>
168 </div>
169 <div class="row">
170 <div class="col-sm-6 wppm_task_due_date_grid_view">
171 <small><?php echo (isset($task->end_date))? esc_html_e($task->end_date,'taskbuilder') :"" ?></small>
172 </div>
173 <div class="col-sm-6" class="wppm_card_task_users" style="text-align:right;">
174 <?php
175 $task_users = explode(',',$task->users);
176 $i=0;
177 $project_data = $wppmfunction->get_project($task->project);
178 if(!empty($project_data['users'])){
179 $proj_users = explode(',',$project_data['users']);
180 }
181 if(!empty($task_users)){
182 foreach($task_users as $user){
183 if( (!empty($proj_users)) && (in_array($user,$proj_users))){
184 $i++;
185 if( $i <= 4 ){
186 if(!empty($user)){
187 $userdata = get_userdata( $user );
188 ?>
189 <a href="#" title="<?php echo esc_attr($userdata->display_name)?>">
190 <?php echo get_avatar($user, 25, "mysteryman");?>
191 </a>
192 <?php }
193 }
194 }
195 }
196 }
197 if($i > 4){
198 ?>
199 <a href="#" class="wppm_avatar">
200 <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
201 </a>
202 <?php } ?>
203 </div>
204 </div>
205 </div>
206 <?php
207 }
208 }
209 }
210 }
211 if($task_per_status==false){
212 ?>
213 <div class="row">
214 <div class="col-sm-12 wppm_empty_container">
215 <?php echo esc_html_e('Empty','taskbuilder'); ?>
216 </div>
217 </div>
218 <?php
219 }
220 ?>
221 </div>
222 </div>
223 <?php }
224 }
225 ?>
226 <input type="hidden" action="wppm_drag_and_drop_card">
227 </div>
228 <div class="row wppm_task_pagination_container">
229 <div class="col-sm-4">
230 <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_html($total_tasks); ?>&nbsp;<?php echo esc_html_e( 'of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Tasks','taskbuilder')?>
231 </div>
232 <div class="wppm_task_pagination col-sm-4" style="<?php echo (esc_attr($total_pages)==0)? "display:none;":"display:flex;"?>">
233 <span class="wppm-pagination-txt">
234 <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>
235 </span>
236 <span <?php echo esc_attr($prev_class) ?>
237 style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>cursor:pointer;">
238 <a class="wppm_pagination_prev" onclick="return wppm_load_prev_task_page_card_view(<?php echo esc_attr($prev_page_no) ?>,<?php echo esc_attr($page_no)?>);"><?php echo esc_html_e('PREV','taskbuilder');?></a>
239 </span>
240 <span <?php echo esc_attr($next_class) ?>
241 style="<?php echo (isset($next_class) && esc_attr($next_class) == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
242 <a class="wppm_pagination_next" onclick="return wppm_load_next_task_page_card_view(<?php echo esc_attr($next_page_no) ?>,<?php echo esc_attr($page_no) ?>);"><?php echo esc_html_e('NEXT','taskbuilder');?></a>
243 </span>
244 </div>
245 </div>
246 </form>
247 <script type="text/javascript">
248 jQuery( document ).ready( function( jQuery ) {
249 dragula([
250 <?php foreach($task_status as $status) { ?>
251 document.getElementById("wppm_card_body_container_<?php echo esc_attr($status->id) ?>"),
252 <?php } ?>
253 ], {removeOnSpill: false})
254 .on('drop', function (el,target,source) {
255 wppm_drag_drop_card(el,target,source);
256 });
257
258 jQuery("input[name='wppm_view_task_search_filter']").keypress(function(e) {
259 //Enter key
260 if (e.which == 13) {
261 e.preventDefault();
262 wppm_display_grid_view();
263 }
264 });
265 })
266 function wppm_show_dropdown_menu(task_id){
267 jQuery("#wppm_task_action_"+task_id).gpopover({width: 50});
268 }
269
270 function wppm_drag_drop_card(el,target,source){
271 var data = {
272 action: 'wppm_drag_and_drop_card',
273 el:el.id,
274 target: target.id,
275 source:source.id
276 };
277 jQuery.post(wppm_admin.ajax_url, data, function(response) {
278 wppm_display_grid_view();
279 });
280 }
281 </script>