From cc65638ed9a4a8a7b4bb0b2e44b69796b493b82a Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 6 Aug 2009 21:41:49 +0000 Subject: [PATCH] BUGFIX Using standard SQL and SSDatetime::now() in SideReport_RecentlyEdited (see #4052) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@83970 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- code/SideReport.php | 3 ++- tests/SideReportTest.php | 40 ++++++++++++++++++++++++++++++++++++++++ tests/SideReportTest.yml | 5 +++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 tests/SideReportTest.php create mode 100644 tests/SideReportTest.yml diff --git a/code/SideReport.php b/code/SideReport.php index a327c76e..087f51ae 100755 --- a/code/SideReport.php +++ b/code/SideReport.php @@ -96,7 +96,8 @@ class SideReport_RecentlyEdited extends SideReport { return _t('SideReport.LAST2WEEKS',"Pages edited in the last 2 weeks"); } function records() { - return DataObject::get("SiteTree", "\"SiteTree\".\"LastEdited\" > " . DB::getConn()->now() . " - INTERVAL '14 DAY'", "\"SiteTree\".\"LastEdited\" DESC"); + $threshold = strtotime('-14 days', SSDatetime::now()->Format('U')); + return DataObject::get("SiteTree", "\"SiteTree\".\"LastEdited\" > '".date("Y-m-d H:i:s", $threshold)."'", "\"SiteTree\".\"LastEdited\" DESC"); } function fieldsToShow() { return array( diff --git a/tests/SideReportTest.php b/tests/SideReportTest.php new file mode 100644 index 00000000..2165ca4b --- /dev/null +++ b/tests/SideReportTest.php @@ -0,0 +1,40 @@ +objFromFixture('SiteTree', 'after'); + $before = $this->objFromFixture('SiteTree', 'before'); + + DB::query("UPDATE \"SiteTree\" SET \"Created\"='2009-01-01 00:00:00', \"LastEdited\"='".date('Y-m-d H:i:s', $afterThreshold)."' WHERE \"ID\"='".$after->ID."'"); + DB::query("UPDATE \"SiteTree\" SET \"Created\"='2009-01-01 00:00:00', \"LastEdited\"='".date('Y-m-d H:i:s', $beforeThreshold)."' WHERE \"ID\"='".$before->ID."'"); + } + + function testRecentlyEdited() { + SSDateTime::set_mock_now('31-06-2009 00:00:00'); + + $after = $this->objFromFixture('SiteTree', 'after'); + $before = $this->objFromFixture('SiteTree', 'before'); + + $r = new SideReport_RecentlyEdited(); + + // check if contains only elements not older than $daysAgo days + $this->assertNotNull($r->records()); + $this->assertContains($after->ID, $r->records()->column('ID')); + $this->assertNotContains($before->ID, $r->records()->column('ID')); + + SSDateTime::clear_mock_now(); + } +} \ No newline at end of file diff --git a/tests/SideReportTest.yml b/tests/SideReportTest.yml new file mode 100644 index 00000000..dd6d73d7 --- /dev/null +++ b/tests/SideReportTest.yml @@ -0,0 +1,5 @@ +SiteTree: + after: + Title: after + before: + Title: before \ No newline at end of file