aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/ApiBundle
diff options
context:
space:
mode:
authorNicolas LÅ“uillet <nicolas@loeuillet.org>2016-10-08 13:31:08 +0200
committerGitHub <noreply@github.com>2016-10-08 13:31:08 +0200
commite07c25a1adb2f89c5f57656e24a054ddd3a45df7 (patch)
treece4e9757d816c5ecd5e7f1c2420b5301b7c8a137 /src/Wallabag/ApiBundle
parentd9b0673dbb1138e805e039610cef893e49abe3d8 (diff)
parentac8cf632bb3a225c1b69d16e714ff60a2e988c89 (diff)
downloadwallabag-e07c25a1adb2f89c5f57656e24a054ddd3a45df7.tar.gz
wallabag-e07c25a1adb2f89c5f57656e24a054ddd3a45df7.tar.zst
wallabag-e07c25a1adb2f89c5f57656e24a054ddd3a45df7.zip
Merge pull request #2397 from wallabag/api-orphan-tags
Ensure orphan tag are remove in API
Diffstat (limited to 'src/Wallabag/ApiBundle')
-rw-r--r--src/Wallabag/ApiBundle/Controller/WallabagRestController.php28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php
index a0d9d4f3..cc6923a0 100644
--- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php
+++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php
@@ -400,6 +400,8 @@ class WallabagRestController extends FOSRestController
400 ->getRepository('WallabagCoreBundle:Entry') 400 ->getRepository('WallabagCoreBundle:Entry')
401 ->removeTag($this->getUser()->getId(), $tag); 401 ->removeTag($this->getUser()->getId(), $tag);
402 402
403 $this->cleanOrphanTag($tag);
404
403 $json = $this->get('serializer')->serialize($tag, 'json'); 405 $json = $this->get('serializer')->serialize($tag, 'json');
404 406
405 return (new JsonResponse())->setJson($json); 407 return (new JsonResponse())->setJson($json);
@@ -440,6 +442,8 @@ class WallabagRestController extends FOSRestController
440 ->getRepository('WallabagCoreBundle:Entry') 442 ->getRepository('WallabagCoreBundle:Entry')
441 ->removeTags($this->getUser()->getId(), $tags); 443 ->removeTags($this->getUser()->getId(), $tags);
442 444
445 $this->cleanOrphanTag($tags);
446
443 $json = $this->get('serializer')->serialize($tags, 'json'); 447 $json = $this->get('serializer')->serialize($tags, 'json');
444 448
445 return (new JsonResponse())->setJson($json); 449 return (new JsonResponse())->setJson($json);
@@ -464,6 +468,8 @@ class WallabagRestController extends FOSRestController
464 ->getRepository('WallabagCoreBundle:Entry') 468 ->getRepository('WallabagCoreBundle:Entry')
465 ->removeTag($this->getUser()->getId(), $tag); 469 ->removeTag($this->getUser()->getId(), $tag);
466 470
471 $this->cleanOrphanTag($tag);
472
467 $json = $this->get('serializer')->serialize($tag, 'json'); 473 $json = $this->get('serializer')->serialize($tag, 'json');
468 474
469 return (new JsonResponse())->setJson($json); 475 return (new JsonResponse())->setJson($json);
@@ -486,6 +492,28 @@ class WallabagRestController extends FOSRestController
486 } 492 }
487 493
488 /** 494 /**
495 * Remove orphan tag in case no entries are associated to it.
496 *
497 * @param Tag|array $tags
498 */
499 private function cleanOrphanTag($tags)
500 {
501 if (!is_array($tags)) {
502 $tags = [$tags];
503 }
504
505 $em = $this->getDoctrine()->getManager();
506
507 foreach ($tags as $tag) {
508 if (count($tag->getEntries()) === 0) {
509 $em->remove($tag);
510 }
511 }
512
513 $em->flush();
514 }
515
516 /**
489 * Validate that the first id is equal to the second one. 517 * Validate that the first id is equal to the second one.
490 * If not, throw exception. It means a user try to access information from an other user. 518 * If not, throw exception. It means a user try to access information from an other user.
491 * 519 *