X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FApiBundle%2FController%2FWallabagRestController.php;h=03eb9b0848272381bfbc3dd550c476068d55dcd3;hb=9c545fe028013b30417c1a932cd6b9027bff752d;hp=a590dda1f9479bc1ae13c62d67b49ad12fa14a07;hpb=0cd0d6eb8c5a7a6ba04f1086b16f9612acbc9b68;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php index a590dda1..03eb9b08 100644 --- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php @@ -34,6 +34,7 @@ class WallabagRestController extends FOSRestController * {"name"="page", "dataType"="integer", "required"=false, "format"="default '1'", "description"="what page you want."}, * {"name"="perPage", "dataType"="integer", "required"=false, "format"="default'30'", "description"="results per page."}, * {"name"="tags", "dataType"="string", "required"=false, "format"="api,rest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."}, + * {"name"="since", "dataType"="integer", "required"=false, "format"="default '0'", "description"="The timestamp since when you want entries updated."}, * } * ) * @@ -43,16 +44,18 @@ class WallabagRestController extends FOSRestController { $this->validateAuthentication(); - $isArchived = (int) $request->query->get('archive'); - $isStarred = (int) $request->query->get('starred'); + $isArchived = (null === $request->query->get('archive')) ? null : (bool) $request->query->get('archive'); + $isStarred = (null === $request->query->get('starred')) ? null : (bool) $request->query->get('starred'); $sort = $request->query->get('sort', 'created'); $order = $request->query->get('order', 'desc'); $page = (int) $request->query->get('page', 1); $perPage = (int) $request->query->get('perPage', 30); + $since = $request->query->get('since', 0); + $tags = $request->query->get('tags', ''); $pager = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') - ->findEntries($this->getUser()->getId(), (bool) $isArchived, (bool) $isStarred, $sort, $order); + ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order, $since, $tags); $pager->setCurrentPage($page); $pager->setMaxPerPage($perPage); @@ -109,8 +112,9 @@ class WallabagRestController extends FOSRestController $this->validateAuthentication(); $url = $request->request->get('url'); - $isArchived = (int) $request->request->get('archive'); - $isStarred = (int) $request->request->get('starred'); + $title = $request->request->get('title'); + $isArchived = $request->request->get('archive'); + $isStarred = $request->request->get('starred'); $entry = $this->get('wallabag_core.entry_repository')->findByUrlAndUserId($url, $this->getUser()->getId()); @@ -121,14 +125,22 @@ class WallabagRestController extends FOSRestController ); } + if (!is_null($title)) { + $entry->setTitle($title); + } + $tags = $request->request->get('tags', ''); if (!empty($tags)) { $this->get('wallabag_core.content_proxy')->assignTagsToEntry($entry, $tags); } - $entry->setStarred((bool) $isStarred); + if (!is_null($isStarred)) { + $entry->setStarred((bool) $isStarred); + } - $entry->setArchived((bool) $isArchived); + if (!is_null($isArchived)) { + $entry->setArchived((bool) $isArchived); + } $em = $this->getDoctrine()->getManager(); $em->persist($entry); @@ -163,8 +175,8 @@ class WallabagRestController extends FOSRestController $this->validateUserAccess($entry->getUser()->getId()); $title = $request->request->get('title'); - $isArchived = (int) $request->request->get('archive'); - $isStarred = (int) $request->request->get('starred'); + $isArchived = $request->request->get('archive'); + $isStarred = $request->request->get('starred'); if (!is_null($title)) { $entry->setTitle($title); @@ -380,6 +392,6 @@ class WallabagRestController extends FOSRestController */ private function renderJsonResponse($json) { - return new Response($json, 200, array('application/json')); + return new Response($json, 200, ['application/json']); } }