X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FEntryController.php;h=b3ec7729e673f87a5d2435558842797933905c37;hb=e70e383378fc38f8154d482a247a0d2ca23a4925;hp=9b2954e7d5d0525711ac4a61dec9cbae3f6eeda1;hpb=8a8a78a64c116caf81aaa4339906298bdc0e32e0;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 9b2954e7..b3ec7729 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -532,24 +532,33 @@ class EntryController extends Controller $searchTerm = (isset($request->get('search_entry')['term']) ? $request->get('search_entry')['term'] : ''); $currentRoute = (null !== $request->query->get('currentRoute') ? $request->query->get('currentRoute') : ''); + // defined as null by default because each repository method have the right field as default value too + // like `getBuilderForStarredByUser` will have `starredAt` sort by default + $sortBy = null; + if (in_array($request->get('sort', 'createdAt'), ['id', 'title', 'createdAt', 'updatedAt', 'starredAt', 'archivedAt'], true)) { + $sortBy = $request->get('sort', null); + } + + $direction = 'DESC' === $request->get('direction') ? 'DESC' : 'ASC'; + switch ($type) { case 'search': $qb = $repository->getBuilderForSearchByUser($this->getUser()->getId(), $searchTerm, $currentRoute); break; case 'untagged': - $qb = $repository->getBuilderForUntaggedByUser($this->getUser()->getId()); + $qb = $repository->getBuilderForUntaggedByUser($this->getUser()->getId(), $sortBy, $direction); break; case 'starred': - $qb = $repository->getBuilderForStarredByUser($this->getUser()->getId()); + $qb = $repository->getBuilderForStarredByUser($this->getUser()->getId(), $sortBy, $direction); break; case 'archive': - $qb = $repository->getBuilderForArchiveByUser($this->getUser()->getId()); + $qb = $repository->getBuilderForArchiveByUser($this->getUser()->getId(), $sortBy, $direction); break; case 'unread': - $qb = $repository->getBuilderForUnreadByUser($this->getUser()->getId()); + $qb = $repository->getBuilderForUnreadByUser($this->getUser()->getId(), $sortBy, $direction); break; case 'all': - $qb = $repository->getBuilderForAllByUser($this->getUser()->getId()); + $qb = $repository->getBuilderForAllByUser($this->getUser()->getId(), $sortBy, $direction); break; default: throw new \InvalidArgumentException(sprintf('Type "%s" is not implemented.', $type));