]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 149246: Allow use of relative time units in query screen.
authorjouni%heikniemi.net <>
Tue, 9 Jul 2002 17:58:10 +0000 (17:58 +0000)
committerjouni%heikniemi.net <>
Tue, 9 Jul 2002 17:58:10 +0000 (17:58 +0000)
Patch by Michael Schindler <michael@compressconsult.com>, 2xr=jouni

buglist.cgi

index 9638d9c0fb2e86fadf242583c113b5c3229d0101..46c26fd16e8d1b8a06f21af2db179f60d75e1ba9 100755 (executable)
@@ -23,6 +23,7 @@
 #                 Stephan Niemz  <st.n@gmx.net>
 #                 Andreas Franke <afranke@mathweb.org>
 #                 Myk Melez <myk@mozilla.org>
+#                 Michael Schindler <michael@compressconsult.com>
 
 ################################################################################
 # Script Initialization
@@ -158,6 +159,27 @@ if ($::FORM{'cmdtype'} eq 'runnamed') {
 sub SqlifyDate {
     my ($str) = @_;
     $str = "" if !defined $str;
+    if ($str =~ /^-?(\d+)([dDwWmMyY])$/) {   # relative date
+        my ($amount, $unit, $date) = ($1, lc $2, time);
+        my ($sec, $min, $hour, $mday, $month, $year, $wday)  = localtime($date);
+        if ($unit eq 'w') {                  # convert weeks to days
+            $amount = 7*$amount + $wday;
+            $unit = 'd';
+        }
+        if ($unit eq 'd') {
+            $date -= $sec + 60*$min + 3600*$hour + 24*3600*$amount;
+            return time2str("%Y-%m-%d %H:%M:%S", $date);
+        }
+        elsif ($unit eq 'y') {
+            return sprintf("%4d-01-01 00:00:00", $year+1900-$amount);
+        }
+        elsif ($unit eq 'm') {
+            $month -= $amount;
+            while ($month<0) { $year--; $month += 12; }
+            return sprintf("%4d-%02d-01 00:00:00", $year+1900, $month+1);
+        }
+        return undef;                      # should not happen due to regexp at top
+    }
     my $date = str2time($str);
     if (!defined($date)) {
         my $htmlstr = html_quote($str);