diff --git a/src/Extensions/SiteTreeContentReview.php b/src/Extensions/SiteTreeContentReview.php index 42741d1..a1ede54 100644 --- a/src/Extensions/SiteTreeContentReview.php +++ b/src/Extensions/SiteTreeContentReview.php @@ -211,7 +211,7 @@ class SiteTreeContentReview extends DataExtension implements PermissionProvider } // Failover to check on ReviewPeriodDays + LastEdited - $nextReviewUnixSec = strtotime('now + ' . $options->ReviewPeriodDays . ' days'); + $nextReviewUnixSec = strtotime(' + ' . $options->ReviewPeriodDays . ' days', DBDatetime::now()->getTimestamp()); $date = DBDate::create('NextReviewDate'); $date->setValue($nextReviewUnixSec); @@ -457,17 +457,20 @@ class SiteTreeContentReview extends DataExtension implements PermissionProvider */ public function advanceReviewDate() { - $nextDate = false; + $nextDateTimestamp = false; $options = $this->getOptions(); if ($options && $options->ReviewPeriodDays) { - $nextDateTimestamp = strtotime('now + ' . $options->ReviewPeriodDays . ' days'); + $nextDateTimestamp = strtotime( + ' + ' . $options->ReviewPeriodDays . ' days', + DBDatetime::now()->getTimestamp() + ); $this->owner->NextReviewDate = DBDate::create()->setValue($nextDateTimestamp)->Format('y-MM-dd'); $this->owner->write(); } - return (bool) $nextDate; + return (bool) $nextDateTimestamp; } /** @@ -554,7 +557,10 @@ class SiteTreeContentReview extends DataExtension implements PermissionProvider // parent page change its review period // && !$this->owner->isChanged('ContentReviewType', 2) if ($this->owner->isChanged('ReviewPeriodDays', 2)) { - $nextReviewUnixSec = strtotime('now + ' . $this->owner->ReviewPeriodDays . ' days'); + $nextReviewUnixSec = strtotime( + ' + ' . $this->owner->ReviewPeriodDays . ' days', + DBDatetime::now()->getTimestamp() + ); $this->owner->NextReviewDate = DBDate::create()->setValue($nextReviewUnixSec)->Format('y-MM-dd'); } } diff --git a/src/Reports/PagesDueForReviewReport.php b/src/Reports/PagesDueForReviewReport.php index 57b27d1..52d109f 100644 --- a/src/Reports/PagesDueForReviewReport.php +++ b/src/Reports/PagesDueForReviewReport.php @@ -161,21 +161,36 @@ class PagesDueForReviewReport extends Report if (empty($params['ReviewDateBefore']) && empty($params['ReviewDateAfter'])) { // If there's no review dates set, default to all pages due for review now - $nextReviewUnixSec = strtotime(' + 1 day', DBDatetime::now()->format('U')); - $records = $records->where(sprintf('"NextReviewDate" < \'%s\'', date('Y-m-d', $nextReviewUnixSec))); + $records = $records->where( + sprintf( + '"NextReviewDate" < \'%s\'', + DBDatetime::now()->Format('y-MM-dd') + ) + ); } else { // Review date before if (!empty($params['ReviewDateBefore'])) { // TODO Get value from DateField->dataValue() once we have access to form elements here - $nextReviewUnixSec = strtotime(' + 1 day', strtotime($params['ReviewDateBefore'])); - $records = $records->where(sprintf("\"NextReviewDate\" < '%s'", date('Y-m-d', $nextReviewUnixSec))); + $nextReviewUnixSec = strtotime( + ' + 1 day', + strtotime($params['ReviewDateBefore']) + ); + $records = $records->where( + sprintf( + "\"NextReviewDate\" < '%s'", + DBDatetime::create()->setValue($nextReviewUnixSec)->Format('y-MM-dd') + ) + ); } // Review date after if (!empty($params['ReviewDateAfter'])) { // TODO Get value from DateField->dataValue() once we have access to form elements here $records = $records->where( - sprintf("\"NextReviewDate\" >= '%s'", date('Y-m-d', strtotime($params['ReviewDateAfter']))) + sprintf( + "\"NextReviewDate\" >= '%s'", + DBDatetime::create()->setValue(strtotime($params['ReviewDateAfter']))->Format('y-MM-dd') + ) ); } } diff --git a/templates/SilverStripe/ContentReview/ContentReviewEmail.ss b/templates/SilverStripe/ContentReview/ContentReviewEmail.ss index 4ce69f2..bdfb389 100644 --- a/templates/SilverStripe/ContentReview/ContentReviewEmail.ss +++ b/templates/SilverStripe/ContentReview/ContentReviewEmail.ss @@ -9,11 +9,11 @@ $EmailBody - <% loop Pages %> + <% loop $Pages %>
There are $PagesCount pages that are due for review today by you, $ToFirstName.
This email was sent to $ToEmail
", - $email['htmlContent'] + $email['HtmlContent'] ); - $this->assertContains('Staff', $email['htmlContent']); - $this->assertContains('Contact Us', $email['htmlContent']); - $this->assertContains('Contact Us Child', $email['htmlContent']); + $this->assertContains('Staff', $email['HtmlContent']); + $this->assertContains('Contact Us', $email['HtmlContent']); + $this->assertContains('Contact Us Child', $email['HtmlContent']); DBDatetime::clear_mock_now(); } diff --git a/tests/ContentReviewReportTest.php b/tests/ContentReviewReportTest.php index 571c554..81c5d21 100644 --- a/tests/ContentReviewReportTest.php +++ b/tests/ContentReviewReportTest.php @@ -48,8 +48,8 @@ class ContentReviewReportTest extends FunctionalTest $report->title(); $results = $report->sourceRecords(array( - "ReviewDateAfter" => "01/01/2010", - "ReviewDateBefore" => "12/12/2010", + "ReviewDateAfter" => "2010-01-01", + "ReviewDateBefore" => "2010-12-12", )); $this->assertEquals(array( diff --git a/tests/ContentReviewSettingsTest.php b/tests/ContentReviewSettingsTest.php index 062d7f7..dd3c5eb 100644 --- a/tests/ContentReviewSettingsTest.php +++ b/tests/ContentReviewSettingsTest.php @@ -170,7 +170,7 @@ class ContentReviewSettingsTest extends SapphireTest $page = $this->objFromFixture(Page::class, "inherit"); $this->assertEquals("Inherit", $page->ContentReviewType); - $this->assertEquals($this->objFromFixture(SiteConfig::class, "default"), $page->getOptions()); + $this->assertEquals($this->objFromFixture(SiteConfig::class, "default")->ID, $page->getOptions()->ID); } public function testGetNextReviewDateFromCustomSettings()