- * @return Entry
- */
- public function postEntriesAction(Request $request)
- {
- $url = $request->request->get('url');
-
- $content = Extractor::extract($url);
- $entry = new Entry($this->getUser());
- $entry->setUrl($url);
- $entry->setTitle($request->request->get('title') ?: $content->getTitle());
- $entry->setContent($content->getBody());
-
- $tags = $request->request->get('tags', '');
- if (!empty($tags)) {
- $this->assignTagsToEntry($entry, $tags);
- }
-
- $em = $this->getDoctrine()->getManager();
- $em->persist($entry);
- $em->flush();
-
- $json = $this->get('serializer')->serialize($entry, 'json');
-
- return $this->renderJsonResponse($json);
- }
-
- /**
- * Change several properties of an entry.
- *
- * @ApiDoc(
- * requirements={
- * {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
- * },
- * parameters={
- * {"name"="title", "dataType"="string", "required"=false},
- * {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."},
- * {"name"="archive", "dataType"="boolean", "required"=false, "format"="true or false", "description"="archived the entry."},
- * {"name"="star", "dataType"="boolean", "required"=false, "format"="true or false", "description"="starred the entry."},
- * }
- * )
- *
- * @return Entry
- */
- public function patchEntriesAction(Entry $entry, Request $request)
- {
- $this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
-
- $title = $request->request->get('title');
- $isArchived = $request->request->get('archive');
- $isStarred = $request->request->get('star');
-
- if (!is_null($title)) {
- $entry->setTitle($title);
- }
-
- if (!is_null($isArchived)) {
- $entry->setArchived($isArchived);
- }
-
- if (!is_null($isStarred)) {
- $entry->setStarred($isStarred);
- }
-
- $tags = $request->request->get('tags', '');
- if (!empty($tags)) {
- $this->assignTagsToEntry($entry, $tags);
- }
-
- $em = $this->getDoctrine()->getManager();
- $em->flush();
-
- $json = $this->get('serializer')->serialize($entry, 'json');
-
- return $this->renderJsonResponse($json);
- }
-
- /**
- * Delete **permanently** an entry.
- *
- * @ApiDoc(
- * requirements={
- * {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
- * }
- * )
- *
- * @return Entry
- */
- public function deleteEntriesAction(Entry $entry)
- {
- $this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
-
- $em = $this->getDoctrine()->getManager();
- $em->remove($entry);
- $em->flush();
-
- $json = $this->get('serializer')->serialize($entry, 'json');
-
- return $this->renderJsonResponse($json);
- }
-
- /**
- * Retrieve all tags for an entry.