PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.7
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.7
6.0.7 6.0.6 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 All 59 releases
← All changes | includes/admin/tasks/wppm_tasks_list.php +27 -8 6.0.2 → 6.0.7 View file →
@@ -231,8 +231,21 @@
231 231 }elseif($filter_by == 'mine'){
232 232 $wppm_tl_filter = "(FIND_IN_SET('$current_user->ID',Task.users)>0)";
233 233 }elseif($filter_by == 'archived'){
234 234 $wppm_tl_filter = "Task.is_archived = 1";
235 +} elseif($filter_by == 'today'){
236 + $wppm_tl_filter = "DATE(Task.end_date) = CURDATE()";
237 +}elseif($filter_by == 'upcoming'){
238 + $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";
239 +}elseif ($filter_by == 'mytasks') {
240 + $wppm_tl_filter = "(
241 + FIND_IN_SET('$current_user->ID', Task.users)
242 + OR Task.created_by = '$current_user->ID'
243 + )
244 + AND Task.status != 4
245 + AND Task.active = 1
246 + AND Task.is_archived = 0";
247 +
235 248 }
236 249
237 250 if(!empty($tl_advanced_filters['created_by'])){
238 251 $created_by_ids = array_map('intval', $tl_advanced_filters['created_by']);
@@ -251,13 +264,13 @@
251 264 $wppm_tl_filter .= " AND Task.priority IN (" . implode(',', $priority) . ")";
252 265 }
253 266 if(!empty($tl_advanced_filters['start_date'])){
254 267 $start_date = sanitize_text_field($tl_advanced_filters['start_date']);
255 - $wppm_tl_filter .= " AND (CAST(Task.start_date AS DATE)) >= '$start_date'";
268 + $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.start_date AS DATE)) >= %s", $start_date);
256 269 }
257 270 if(!empty($tl_advanced_filters['end_date'])){
258 271 $end_date = sanitize_text_field($tl_advanced_filters['end_date']);
259 - $wppm_tl_filter .= " AND (CAST(Task.end_date AS DATE)) <= '$end_date'";
272 + $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.end_date AS DATE)) <= %s", $end_date);
260 273 }
261 274
262 275 $advanced_conditions = [];
263 276 // Created By
@@ -281,18 +294,20 @@
281 294 }
282 295 // Start Date
283 296 if (!empty($advanced_filter['start_date'])) {
284 297 $start_date = sanitize_text_field($advanced_filter['start_date']);
285 - $advanced_conditions[] = "(CAST(Task.start_date AS DATE)) >= '$start_date'";
298 + $advanced_conditions[] = $wpdb->prepare("(CAST(Task.start_date AS DATE)) >= %s", $start_date);
286 299 }
287 300 // End Date
288 301 if (!empty($advanced_filter['end_date'])) {
289 302 $end_date = sanitize_text_field($advanced_filter['end_date']);
290 - $advanced_conditions[] = "(CAST(Task.end_date AS DATE)) <= '$end_date'";
303 + $advanced_conditions[] = $wpdb->prepare("(CAST(Task.end_date AS DATE)) <= %s", $end_date);
291 304 }
292 305 if (!empty($advanced_conditions)) {
293 306 $wppm_tl_filter .= " AND " . implode(" AND ", $advanced_conditions);
294 307 }
308 +// Subtasks are shown only within their parent task, never as their own row in the task list.
309 +$wppm_tl_filter .= " AND (Task.parent_task_id = 0 OR Task.parent_task_id IS NULL)";
295 310 //setcookie('wppm_advanced_filters',wp_json_encode( $advanced_filter ),time() + 3600);
296 311 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))){
297 312 foreach($wppm_hide_task_statuses_from_frontend as $status){
298 313 $wppm_tl_filter .= " AND Task.status != '$status'";
@@ -636,9 +651,9 @@
636 651 </span>
637 652 </div>
638 653 </div>
639 654 <div>
640 - <div style="display:flex;flex-wrap: wrap;min-width: 0; max-width: 100%;margin-top: 20px;">
655 + <div style="display:flex;flex-wrap: wrap;align-items:center;min-width: 0; max-width: 100%;margin-top: 20px;">
641 656 <div id="wppm_task_filter_container">
642 657 <div class="wppm-bulk-actions"style="margin-left: -14px !important;">
643 658 <button
644 659 id="wppm-task-bulk-actions-btn"
@@ -674,12 +689,12 @@
674 689 </select>
675 690 </div>
676 691 </div>
677 692 </div>
678 - <div class="wppm-filter-item wppm_project_autocomplete_container" style="margin: 0 0 0 20px;">
693 + <div class="wppm-filter-item wppm_project_autocomplete_container" style="margin: 0 0 38px 20px;">
679 694 <label for="wppm_task_list_proj_filter">
680 695 <?php echo esc_html_e('Project','taskbuilder');?>
681 - </label><br>
696 + </label>
682 697 <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;">
683 698 <option value="0" <?php echo ($proj_filter == 0)? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
684 699 <?php
685 700 if(!empty($projects)){
@@ -990,8 +1005,12 @@
990 1005 </div>
991 1006 </td>
992 1007 <td onmouseover="link=true;">
993 1008 <?php echo esc_html($task->task_name) ?>
1009 + <?php $wppm_row_subtask_progress = $wppmfunction->get_subtask_progress($task->id);
1010 + if($wppm_row_subtask_progress['total'] > 0){ ?>
1011 + <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>
1012 + <?php } ?>
994 1013 </td>
995 1014 <td onmouseover="link=true;">
996 1015 <?php if(!empty($project->project_name)){
997 1016 echo esc_html($project->project_name);
@@ -1075,9 +1094,9 @@
1075 1094 }
1076 1095 echo esc_html($completion).'%';
1077 1096 ?>
1078 1097 </td>
1079 - <?php do_action('wppm_table_column');?>
1098 + <?php do_action('wppm_table_column',$task); ?>
1080 1099 </tr>
1081 1100 <?php }
1082 1101 }
1083 1102 }