aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMaxime LECLERCQ <maxime.leclercq@smile.fr>2016-02-19 14:22:27 +0100
committerMaxime LECLERCQ <maxime.leclercq@smile.fr>2016-02-19 16:02:31 +0100
commit671a2b887f3215366e8acc05fcfa4e57264d3e69 (patch)
treeef8aa9b96b9d9fa73c4340948d583c201494c0cb
parentfa64d861105bd0713acd7ac5d116353273524b4f (diff)
downloadwallabag-671a2b887f3215366e8acc05fcfa4e57264d3e69.tar.gz
wallabag-671a2b887f3215366e8acc05fcfa4e57264d3e69.tar.zst
wallabag-671a2b887f3215366e8acc05fcfa4e57264d3e69.zip
Fix #1551 - Redirect to the last page when current page is out of range
-rw-r--r--src/Wallabag/CoreBundle/Controller/EntryController.php9
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php11
2 files changed, 19 insertions, 1 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php
index ea77d138..0fae3a0f 100644
--- a/src/Wallabag/CoreBundle/Controller/EntryController.php
+++ b/src/Wallabag/CoreBundle/Controller/EntryController.php
@@ -3,6 +3,7 @@
3namespace Wallabag\CoreBundle\Controller; 3namespace Wallabag\CoreBundle\Controller;
4 4
5use Pagerfanta\Adapter\DoctrineORMAdapter; 5use Pagerfanta\Adapter\DoctrineORMAdapter;
6use Pagerfanta\Exception\OutOfRangeCurrentPageException;
6use Pagerfanta\Pagerfanta; 7use Pagerfanta\Pagerfanta;
7use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 8use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
8use Symfony\Bundle\FrameworkBundle\Controller\Controller; 9use Symfony\Bundle\FrameworkBundle\Controller\Controller;
@@ -252,7 +253,13 @@ class EntryController extends Controller
252 $entries = new Pagerfanta($pagerAdapter); 253 $entries = new Pagerfanta($pagerAdapter);
253 254
254 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); 255 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
255 $entries->setCurrentPage($page); 256 try {
257 $entries->setCurrentPage($page);
258 } catch (OutOfRangeCurrentPageException $e) {
259 if ($page > 1) {
260 return $this->redirect($this->generateUrl($type, array('page' => $entries->getNbPages())), 302);
261 }
262 }
256 263
257 return $this->render( 264 return $this->render(
258 'WallabagCoreBundle:Entry:entries.html.twig', 265 'WallabagCoreBundle:Entry:entries.html.twig',
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
index 32d6a575..5512d6e1 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
@@ -216,6 +216,17 @@ class EntryControllerTest extends WallabagCoreTestCase
216 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 216 $this->assertEquals(200, $client->getResponse()->getStatusCode());
217 } 217 }
218 218
219 public function testRangeException()
220 {
221 $this->logInAs('admin');
222 $client = $this->getClient();
223
224 $client->request('GET', '/all/list/900');
225
226 $this->assertEquals(302, $client->getResponse()->getStatusCode());
227 $this->assertEquals('/all/list', $client->getResponse()->getTargetUrl());
228 }
229
219 /** 230 /**
220 * @depends testPostNewOk 231 * @depends testPostNewOk
221 */ 232 */