| @@ -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'"; |
| @@ -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); |