← All changes
|
includes/admin/projects/open_project/wppm_view_project_tasks.php
+26
-4
6.0.3
→
6.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', |