PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.6
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.6
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 1.0.5 All 58 releases
← All changes | includes/admin/projects/open_project/wppm_view_project_tasks.php +26 -4 6.0.46.0.6 View file →
@@ -242,8 +242,21 @@
242 242 }elseif($filter_by == 'mine'){
243 243 $wppm_tl_filter = "(FIND_IN_SET('$current_user->ID',Task.users)>0)";
244 244 }elseif($filter_by == 'archived'){
245 245 $wppm_tl_filter = "Task.is_archived = 1";
246 +}elseif($filter_by == 'today'){
247 + $wppm_tl_filter = "DATE(Task.end_date) = CURDATE()";
248 +}elseif($filter_by == 'upcoming'){
249 + $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";
250 +}elseif ($filter_by == 'mytasks') {
251 + $wppm_tl_filter = "(
252 + FIND_IN_SET('$current_user->ID', Task.users)
253 + OR Task.created_by = '$current_user->ID'
254 + )
255 + AND Task.status != 4
256 + AND Task.active = 1
257 + AND Task.is_archived = 0";
258 +
246 259 }
247 260
248 261 if(!empty($tl_advanced_filters['created_by'])){
249 262 $created_by_ids = array_map('intval', $tl_advanced_filters['created_by']);
@@ -262,13 +275,13 @@
262 275 $wppm_tl_filter .= " AND Task.priority IN (" . implode(',', $priority) . ")";
263 276 }
264 277 if(!empty($tl_advanced_filters['start_date'])){
265 278 $start_date = sanitize_text_field($tl_advanced_filters['start_date']);
266 - $wppm_tl_filter .= " AND (CAST(Task.start_date AS DATE)) >= '$start_date'";
279 + $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.start_date AS DATE)) >= %s", $start_date);
267 280 }
268 281 if(!empty($tl_advanced_filters['end_date'])){
269 282 $end_date = sanitize_text_field($tl_advanced_filters['end_date']);
270 - $wppm_tl_filter .= " AND (CAST(Task.end_date AS DATE)) <= '$end_date'";
283 + $wppm_tl_filter .= $wpdb->prepare(" AND (CAST(Task.end_date AS DATE)) <= %s", $end_date);
271 284 }
272 285
273 286 $advanced_conditions = [];
274 287 // Created By
@@ -292,18 +305,20 @@
292 305 }
293 306 // Start Date
294 307 if (!empty($advanced_filter['start_date'])) {
295 308 $start_date = sanitize_text_field($advanced_filter['start_date']);
296 - $advanced_conditions[] = "(CAST(Task.start_date AS DATE)) >= '$start_date'";
309 + $advanced_conditions[] = $wpdb->prepare("(CAST(Task.start_date AS DATE)) >= %s", $start_date);
297 310 }
298 311 // End Date
299 312 if (!empty($advanced_filter['end_date'])) {
300 313 $end_date = sanitize_text_field($advanced_filter['end_date']);
301 - $advanced_conditions[] = "(CAST(Task.end_date AS DATE)) <= '$end_date'";
314 + $advanced_conditions[] = $wpdb->prepare("(CAST(Task.end_date AS DATE)) <= %s", $end_date);
302 315 }
303 316 if (!empty($advanced_conditions)) {
304 317 $wppm_tl_filter .= " AND " . implode(" AND ", $advanced_conditions);
305 318 }
319 +// Subtasks are shown only within their parent task, never as their own row/card in project views.
320 +$wppm_tl_filter .= " AND (Task.parent_task_id = 0 OR Task.parent_task_id IS NULL)";
306 321
307 322 if(!empty($wppm_hide_task_statuses_from_frontend) && is_array($wppm_hide_task_statuses_from_frontend) && (isset($_POST['is_frontend']) && sanitize_text_field($_POST['is_frontend'])==1)){
308 323 foreach($wppm_hide_task_statuses_from_frontend as $status){
309 324 $wppm_tl_filter .= " AND Task.status != '$status'";
@@ -1037,8 +1052,9 @@
1037 1052 window.filters.id = <?php echo esc_attr($id); ?>;
1038 1053 <?php } ?>
1039 1054
1040 1055 var filters = window.filters;
1056 +var wppm_task_filter = <?php echo wp_json_encode($filter_by); ?>;
1041 1057 jQuery( document ).ready( function( jQuery ) {
1042 1058 dragula([
1043 1059 <?php foreach($task_status as $status) { ?>
1044 1060 document.getElementById("wppm_card_body_container_<?php echo esc_attr($status->id) ?>"),
@@ -1249,8 +1265,14 @@
1249 1265 wppm_display_grid_view('<?php echo esc_js($page) ?>','<?php echo esc_js($id) ?>');
1250 1266 });
1251 1267 }
1252 1268 function wppm_tl_reset_grid_view_filter(page,id){
1269 + var url = new URL(window.location.href);
1270 + if (url.searchParams.has('wppm_task_filter')) {
1271 + url.searchParams.delete('wppm_task_filter');
1272 + window.location.href = url.toString();
1273 + return false;
1274 + }
1253 1275 jQuery('#wppm_task_container').html(wppm_admin.loading_html);
1254 1276 var data = {
1255 1277 action: 'wppm_view_project_tasks',
1256 1278 wppm_task_filter:'all',