diff --git a/code/model/BlogPost.php b/code/model/BlogPost.php index 31a1173..567fa37 100644 --- a/code/model/BlogPost.php +++ b/code/model/BlogPost.php @@ -460,18 +460,19 @@ class BlogPost extends Page return false; } + if($this->canEdit($member)) { + return true; + } + /** * @var SS_Datetime $publishDate */ $publishDate = $this->dbObject('PublishDate'); - - // Show past posts - if (!$publishDate->exists() || !$publishDate->InFuture()) { - return true; + if(!$publishDate->exists()) { + return false; } - // Anyone that can edit this page can view it - return $this->canEdit($member); + return !$publishDate->InFuture(); } /** diff --git a/tests/BlogPostTest.php b/tests/BlogPostTest.php index a343176..37e66d5 100644 --- a/tests/BlogPostTest.php +++ b/tests/BlogPostTest.php @@ -83,4 +83,15 @@ class BlogPostTest extends SapphireTest $fields = $blogpost->getCMSFields(); $this->assertNotEmpty($fields->dataFieldByName('Authors')); } + + public function testCanViewFuturePost() + { + $blogPost = $this->objFromFixture('BlogPost', 'NullPublishDate'); + + $editor = $this->objFromFixture('Member', 'BlogEditor'); + $this->assertTrue($blogPost->canView($editor)); + + $visitor = $this->objFromFixture('Member', 'Visitor'); + $this->assertFalse($blogPost->canView($visitor)); + } } diff --git a/tests/blog.yml b/tests/blog.yml index 2392d60..e664f88 100755 --- a/tests/blog.yml +++ b/tests/blog.yml @@ -164,6 +164,11 @@ BlogPost: PublishDate: '2012-01-09 15:00:00' Parent: =>Blog.FourthBlog Authors: =>Member.BlogEditor,=>Member.Writer,=>Member.Contributor + NullPublishDate: + Title: 'No publish date' + PublishDate: 'NULL' + Parent: =>Blog.FourthBlog + Authors: =>Member.BlogEditor,=>Member.Writer,=>Member.Contributor #Posts for the tag cloud widget test TaggedPost1: