diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f1e7f2..3e5c5a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ --- develop --- +* issue#250: Fix date filter persistence by validating before shift_span detection * issue: Making changes to support Cacti 1.3 * issue: Don't use MyISAM for non-analytical tables * issue: The install advisor for Syslog was broken in current Cacti releases diff --git a/syslog.php b/syslog.php index 185e0cd..50bd2e1 100644 --- a/syslog.php +++ b/syslog.php @@ -779,7 +779,7 @@ function syslog_request_validation($current_tab, $force = false) { function set_shift_span($shift_span, $session_prefix) { global $graph_timeshifts; - if ($shift_span == 'span' || $shift_span === false) { + if ($shift_span == 'span' || ($shift_span === false && (!isset($_SESSION[$session_prefix . '_date1']) || !isset($_SESSION[$session_prefix . '_date2'])))) { $span = array(); // Calculate the timespan @@ -795,6 +795,21 @@ function set_shift_span($shift_span, $session_prefix) { kill_session_var($session_prefix . '_date2'); set_request_var('custom', false); + } elseif ($shift_span === false) { + // Page navigation: custom dates were set earlier; restore from session. + if (isset($_SESSION[$session_prefix . '_date1']) && isset($_SESSION[$session_prefix . '_date2'])) { + set_request_var('date1', $_SESSION[$session_prefix . '_date1']); + set_request_var('date2', $_SESSION[$session_prefix . '_date2']); + set_request_var('custom', true); + } else { + // Session keys missing; fall back to a fresh span calculation. + $first_weekdayid = read_user_setting('first_weekdayid'); + $span = array(); + get_timespan($span, time(), get_request_var('predefined_timespan'), $first_weekdayid); + set_request_var('date1', date('Y-m-d H:i:s', $span['begin_now'])); + set_request_var('date2', date('Y-m-d H:i:s', $span['end_now'])); + set_request_var('custom', false); + } } elseif ($shift_span == 'shift') { $span = array(); @@ -826,6 +841,9 @@ function set_shift_span($shift_span, $session_prefix) { set_request_var('custom', true); } elseif ($shift_span == 'custom') { + // Persist custom dates so page navigation preserves the filter. + $_SESSION[$session_prefix . '_date1'] = get_request_var('date1'); + $_SESSION[$session_prefix . '_date2'] = get_request_var('date2'); set_request_var('custom', true); } }