ENHANCEMENT Default archive year

If no year is passed, rather than 404 it should grab the latest years posts.
This commit is contained in:
Cam Findlay 2015-11-09 11:21:34 +13:00
parent 336a9b4d3a
commit 43bb2248a5
2 changed files with 11 additions and 6 deletions

View File

@ -727,13 +727,17 @@ class Blog_Controller extends Page_Controller {
/**
* Fetches the archive year from the url.
*
* @return null|int
* @return int
*/
public function getArchiveYear() {
$year = $this->request->param('Year');
if(preg_match('/^[0-9]{4}$/', $year)) {
return (int) $year;
if($this->request->param('Year')){
if(preg_match('/^[0-9]{4}$/', $year = $this->request->param('Year'))) {
return (int) $year;
}
} else {
return SS_Datetime::now()->Year();
}
return null;

View File

@ -109,8 +109,8 @@ class BlogTest extends SapphireTest {
$this->assertEquals(200, $this->getStatusOf($link), 'HTTP Status should be 200');
$link = Controller::join_links($blog->Link('archive'));
$this->assertEquals(404, $this->getStatusOf($link), 'HTTP Status should be 404');
$this->assertEquals(200, $this->getStatusOf($link), 'HTTP Status should be 200');
$this->assertEquals(SS_Datetime::now()->Year(), ModelAsController::controller_for($blog)->getArchiveYear(), 'Defaults to current year');
$link = Controller::join_links($blog->Link('archive'), 'invalid-year');
@ -123,6 +123,7 @@ class BlogTest extends SapphireTest {
$link = Controller::join_links($blog->Link('archive'), '2013', '10', '99');
$this->assertEquals(404, $this->getStatusOf($link), 'HTTP Status should be 404');
}
/**