Avoid orphan tags

This commit is contained in:
Jeremy Benoist 2016-10-08 11:05:03 +02:00
parent 2f82e7f8e1
commit f71e55ac88
No known key found for this signature in database
GPG Key ID: BCA73962457ACC3C

View File

@ -251,9 +251,11 @@ class ConfigController extends Controller
// otherwise they won't be removed ...
if ($this->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver) {
$this->getDoctrine()->getRepository('WallabagAnnotationBundle:Annotation')->removeAllByUserId($this->getUser()->getId());
$this->removeAllTagsByUserId($this->getUser()->getId());
}
// manually remove tags first to avoid orphan tag
$this->removeAllTagsByUserId($this->getUser()->getId());
$this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->removeAllByUserId($this->getUser()->getId());
@ -268,7 +270,7 @@ class ConfigController extends Controller
}
/**
* Remove all tags for a given user.
* Remove all tags for a given user and cleanup orphan tags
*
* @param int $userId
*/
@ -283,6 +285,16 @@ class ConfigController extends Controller
$this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->removeTags($userId, $tags);
$em = $this->getDoctrine()->getManager();
foreach ($tags as $tag) {
if (count($tag->getEntries()) === 0) {
$em->remove($tag);
}
}
$em->flush();
}
/**