From 09382b007a62ae6a945dfdcf0d33f00b896a3c3a Fri, 4 Jan 2013 23:58:38 +0200 From: Robert Munteanu Date: Fri, 4 Jan 2013 23:57:59 +0200 Subject: [PATCH] filter_api: apply all project_where_clauses first where_clauses and project_where_clauses must not be mixed, since the where_params are expected to be held in order - first for the project_where_clauses and then for the where_clauses. Fixes #15320: Date filters broken since 1.2.12 diff --git a/core/filter_api.php b/core/filter_api.php index 71254ac..2286ff0 100644 --- a/core/filter_api.php +++ b/core/filter_api.php @@ -1239,6 +1239,17 @@ log_event( LOG_FILTERING, 'project query = ' . $t_project_query ); array_push( $t_project_where_clauses, $t_project_query ); } + + # date filter + if(( 'on' == $t_filter[FILTER_PROPERTY_FILTER_BY_DATE] ) && is_numeric( $t_filter[FILTER_PROPERTY_START_MONTH] ) && is_numeric( $t_filter[FILTER_PROPERTY_START_DAY] ) && is_numeric( $t_filter[FILTER_PROPERTY_START_YEAR] ) && is_numeric( $t_filter[FILTER_PROPERTY_END_MONTH] ) && is_numeric( $t_filter[FILTER_PROPERTY_END_DAY] ) && is_numeric( $t_filter[FILTER_PROPERTY_END_YEAR] ) ) { + + $t_start_string = $t_filter[FILTER_PROPERTY_START_YEAR] . "-" . $t_filter[FILTER_PROPERTY_START_MONTH] . "-" . $t_filter[FILTER_PROPERTY_START_DAY] . " 00:00:00"; + $t_end_string = $t_filter[FILTER_PROPERTY_END_YEAR] . "-" . $t_filter[FILTER_PROPERTY_END_MONTH] . "-" . $t_filter[FILTER_PROPERTY_END_DAY] . " 23:59:59"; + + $t_where_params[] = strtotime( $t_start_string ); + $t_where_params[] = strtotime( $t_end_string ); + array_push( $t_project_where_clauses, "($t_bug_table.date_submitted BETWEEN " . db_param() . " AND " . db_param() . " )" ); + } # view state $t_view_state = db_prepare_int( $t_filter[FILTER_PROPERTY_VIEW_STATE_ID] ); @@ -1616,17 +1627,6 @@ $t_where_params[] = $t_clauses[0]; array_push( $t_where_clauses, "( $t_bug_table.os_build = " . db_param() . " )" ); } - } - - # date filter - if(( 'on' == $t_filter[FILTER_PROPERTY_FILTER_BY_DATE] ) && is_numeric( $t_filter[FILTER_PROPERTY_START_MONTH] ) && is_numeric( $t_filter[FILTER_PROPERTY_START_DAY] ) && is_numeric( $t_filter[FILTER_PROPERTY_START_YEAR] ) && is_numeric( $t_filter[FILTER_PROPERTY_END_MONTH] ) && is_numeric( $t_filter[FILTER_PROPERTY_END_DAY] ) && is_numeric( $t_filter[FILTER_PROPERTY_END_YEAR] ) ) { - - $t_start_string = $t_filter[FILTER_PROPERTY_START_YEAR] . "-" . $t_filter[FILTER_PROPERTY_START_MONTH] . "-" . $t_filter[FILTER_PROPERTY_START_DAY] . " 00:00:00"; - $t_end_string = $t_filter[FILTER_PROPERTY_END_YEAR] . "-" . $t_filter[FILTER_PROPERTY_END_MONTH] . "-" . $t_filter[FILTER_PROPERTY_END_DAY] . " 23:59:59"; - - $t_where_params[] = strtotime( $t_start_string ); - $t_where_params[] = strtotime( $t_end_string ); - array_push( $t_project_where_clauses, "($t_bug_table.date_submitted BETWEEN " . db_param() . " AND " . db_param() . " )" ); } # fixed in version