'token' => $config->getRssToken(),
],
'twofactor_auth' => $this->getParameter('twofactor_auth'),
- 'wallabag_url' => $this->get('craue_config')->get('wallabag_url'),
+ 'wallabag_url' => $this->getParameter('domain_name'),
'enabled_users' => $this->getDoctrine()
->getRepository('WallabagUserBundle:User')
->getSumEnabledUsers(),
break;
case 'entries':
- // SQLite doesn't care about cascading remove, so we need to manually remove associated stuf
+ // SQLite doesn't care about cascading remove, so we need to manually remove associated stuff
// otherwise they won't be removed ...
- if ($this->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver) {
+ if ($this->get('doctrine')->getConnection()->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\SqlitePlatform) {
$this->getDoctrine()->getRepository('WallabagAnnotationBundle:Annotation')->removeAllByUserId($this->getUser()->getId());
}
$this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->removeAllByUserId($this->getUser()->getId());
+ break;
+ case 'archived':
+ if ($this->get('doctrine')->getConnection()->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\SqlitePlatform) {
+ $this->removeAnnotationsForArchivedByUserId($this->getUser()->getId());
+ }
+
+ // manually remove tags to avoid orphan tag
+ $this->removeTagsForArchivedByUserId($this->getUser()->getId());
+
+ $this->getDoctrine()
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->removeArchivedByUserId($this->getUser()->getId());
+ break;
}
$this->get('session')->getFlashBag()->add(
}
/**
- * Remove all tags for a given user and cleanup orphan tags.
+ * Remove all tags for given tags and a given user and cleanup orphan tags.
*
- * @param int $userId
+ * @param array $tags
+ * @param int $userId
*/
- private function removeAllTagsByUserId($userId)
+ private function removeAllTagsByStatusAndUserId($tags, $userId)
{
- $tags = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findAllTags($userId);
-
if (empty($tags)) {
return;
}
$em->flush();
}
+ /**
+ * Remove all tags for a given user and cleanup orphan tags.
+ *
+ * @param int $userId
+ */
+ private function removeAllTagsByUserId($userId)
+ {
+ $tags = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findAllTags($userId);
+ $this->removeAllTagsByStatusAndUserId($tags, $userId);
+ }
+
+ /**
+ * Remove all tags for a given user and cleanup orphan tags.
+ *
+ * @param int $userId
+ */
+ private function removeTagsForArchivedByUserId($userId)
+ {
+ $tags = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findForArchivedArticlesByUser($userId);
+ $this->removeAllTagsByStatusAndUserId($tags, $userId);
+ }
+
+ private function removeAnnotationsForArchivedByUserId($userId)
+ {
+ $em = $this->getDoctrine()->getManager();
+
+ $archivedEntriesAnnotations = $this->getDoctrine()
+ ->getRepository('WallabagAnnotationBundle:Annotation')
+ ->findAllArchivedEntriesByUser($userId);
+
+ foreach ($archivedEntriesAnnotations as $archivedEntriesAnnotation) {
+ $em->remove($archivedEntriesAnnotation);
+ }
+
+ $em->flush();
+ }
+
/**
* Validate that a rule can be edited/deleted by the current user.
*