From 42a9064620eb73eaa42928a22eeec86299d4a883 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolas=20L=C5=93uillet?= Date: Wed, 4 Feb 2015 17:54:23 +0100 Subject: [PATCH] implement delete method --- .../CoreBundle/Controller/EntryController.php | 3 ++- .../Controller/WallabagRestController.php | 13 +++++++++++ src/Wallabag/CoreBundle/Entity/Entries.php | 23 +++++++++++++++++++ .../Repository/EntriesRepository.php | 4 ++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 377a45ae..eb5b43ad 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -177,7 +177,8 @@ class EntryController extends Controller public function deleteEntryAction(Request $request, Entries $entry) { $em = $this->getDoctrine()->getManager(); - $em->remove($entry); + $entry->setDeleted(1); + $em->persist($entry); $em->flush(); $this->get('session')->getFlashBag()->add( diff --git a/src/Wallabag/CoreBundle/Controller/WallabagRestController.php b/src/Wallabag/CoreBundle/Controller/WallabagRestController.php index 5668d934..fc13b1a8 100644 --- a/src/Wallabag/CoreBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/CoreBundle/Controller/WallabagRestController.php @@ -5,6 +5,7 @@ namespace Wallabag\CoreBundle\Controller; use Nelmio\ApiDocBundle\Annotation\ApiDoc; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Wallabag\CoreBundle\Entity\Entries; use Wallabag\CoreBundle\Entity\Tags; use Wallabag\CoreBundle\Service\Extractor; @@ -30,6 +31,8 @@ class WallabagRestController extends Controller */ public function getEntriesAction(Request $request) { + // TODO isArchived, isStarred et isDeleted ne doivent pas avoir de valeur par défaut + // TODO Si on ne passe rien, on ne filtre pas sur le statut. $isArchived = $request->query->get('archive', 0); $isStarred = $request->query->get('star', 0); $isDeleted = $request->query->get('delete', 0); @@ -129,6 +132,16 @@ class WallabagRestController extends Controller */ public function deleteEntriesAction(Entries $entry) { + if ($entry->isDeleted()) { + throw new NotFoundHttpException('This entry is already deleted'); + } + + $em = $this->getDoctrine()->getManager(); + $entry->setDeleted(1); + $em->persist($entry); + $em->flush(); + + return $entry; } /** diff --git a/src/Wallabag/CoreBundle/Entity/Entries.php b/src/Wallabag/CoreBundle/Entity/Entries.php index 9da5102c..32e928d2 100644 --- a/src/Wallabag/CoreBundle/Entity/Entries.php +++ b/src/Wallabag/CoreBundle/Entity/Entries.php @@ -66,6 +66,13 @@ class Entries */ private $userId; + /** + * @var string + * + * @ORM\Column(name="is_deleted", type="decimal", precision=10, scale=0, nullable=true) + */ + private $isDeleted = '0'; + /** * Get id * @@ -227,4 +234,20 @@ class Entries { return $this->userId; } + + /** + * @return string + */ + public function isDeleted() + { + return $this->isDeleted; + } + + /** + * @param string $isDeleted + */ + public function setDeleted($isDeleted) + { + $this->isDeleted = $isDeleted; + } } diff --git a/src/Wallabag/CoreBundle/Repository/EntriesRepository.php b/src/Wallabag/CoreBundle/Repository/EntriesRepository.php index d87eb373..c76b4215 100644 --- a/src/Wallabag/CoreBundle/Repository/EntriesRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntriesRepository.php @@ -25,6 +25,7 @@ class EntriesRepository extends EntityRepository ->setMaxResults($maxResults) ->where('e.isRead = 0') ->andWhere('e.userId =:userId')->setParameter('userId', $userId) + ->andWhere('e.isDeleted=0') ->getQuery(); $paginator = new Paginator($qb); @@ -48,6 +49,7 @@ class EntriesRepository extends EntityRepository ->setMaxResults($maxResults) ->where('e.isRead = 1') ->andWhere('e.userId =:userId')->setParameter('userId', $userId) + ->andWhere('e.isDeleted=0') ->getQuery(); $paginator = new Paginator($qb); @@ -71,6 +73,7 @@ class EntriesRepository extends EntityRepository ->setMaxResults($maxResults) ->where('e.isFav = 1') ->andWhere('e.userId =:userId')->setParameter('userId', $userId) + ->andWhere('e.isDeleted=0') ->getQuery(); $paginator = new Paginator($qb); @@ -86,6 +89,7 @@ class EntriesRepository extends EntityRepository ->where('e.isFav =:isStarred')->setParameter('isStarred', $isStarred) ->andWhere('e.isRead =:isArchived')->setParameter('isArchived', $isArchived) ->andWhere('e.userId =:userId')->setParameter('userId', $userId) + ->andWhere('e.isDeleted=0') ->getQuery() ->getResult(Query::HYDRATE_ARRAY); -- 2.41.0