search for 'last month', RT#11057
authormark <mark>
Mon, 31 Jan 2011 23:59:16 +0000 (23:59 +0000)
committermark <mark>
Mon, 31 Jan 2011 23:59:16 +0000 (23:59 +0000)
rt/lib/RT/Tickets_Overlay.pm

index e3658fe..16e98ae 100644 (file)
@@ -539,16 +539,26 @@ sub _DateFieldLimit {
         # if we're specifying =, that means we want everything on a
         # particular single day.  in the database, we need to check for >
         # and < the edges of that day.
+        #
+        # Except if the value is 'this month' or 'last month', check 
+        # > and < the edges of the month.
        
         my ($daystart, $dayend);
         if ( lc($value) eq 'this month' ) { 
-            # special case: > and < the edges of this month
             $date->SetToNow;
-            $date->SetToStart('month');
+            $date->SetToStart('month', Timezone => 'server');
             $daystart = $date->ISO;
             $date->AddMonth;
             $dayend = $date->ISO;
         }
+        elsif ( lc($value) eq 'last month' ) {
+            $date->SetToNow;
+            $date->SetToStart('month', Timezone => 'server');
+            $dayend = $date->ISO;
+            $date->AddDays(-1);
+            $date->SetToStart('month', Timezone => 'server');
+            $daystart = $date->ISO;
+        }
         else {
             $date->SetToMidnight( Timezone => 'server' );
             $daystart = $date->ISO;