diff options
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller/ConfigController.php')
-rw-r--r-- | src/Wallabag/CoreBundle/Controller/ConfigController.php | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php index 56efe82b..3efc7bb3 100644 --- a/src/Wallabag/CoreBundle/Controller/ConfigController.php +++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php | |||
@@ -14,10 +14,13 @@ use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; | |||
14 | use Symfony\Component\Routing\Annotation\Route; | 14 | use Symfony\Component\Routing\Annotation\Route; |
15 | use Symfony\Component\Validator\Constraints\Locale as LocaleConstraint; | 15 | use Symfony\Component\Validator\Constraints\Locale as LocaleConstraint; |
16 | use Wallabag\CoreBundle\Entity\Config; | 16 | use Wallabag\CoreBundle\Entity\Config; |
17 | use Wallabag\CoreBundle\Entity\IgnoreOriginUserRule; | ||
18 | use Wallabag\CoreBundle\Entity\RuleInterface; | ||
17 | use Wallabag\CoreBundle\Entity\TaggingRule; | 19 | use Wallabag\CoreBundle\Entity\TaggingRule; |
18 | use Wallabag\CoreBundle\Form\Type\ChangePasswordType; | 20 | use Wallabag\CoreBundle\Form\Type\ChangePasswordType; |
19 | use Wallabag\CoreBundle\Form\Type\ConfigType; | 21 | use Wallabag\CoreBundle\Form\Type\ConfigType; |
20 | use Wallabag\CoreBundle\Form\Type\FeedType; | 22 | use Wallabag\CoreBundle\Form\Type\FeedType; |
23 | use Wallabag\CoreBundle\Form\Type\IgnoreOriginUserRuleType; | ||
21 | use Wallabag\CoreBundle\Form\Type\TaggingRuleImportType; | 24 | use Wallabag\CoreBundle\Form\Type\TaggingRuleImportType; |
22 | use Wallabag\CoreBundle\Form\Type\TaggingRuleType; | 25 | use Wallabag\CoreBundle\Form\Type\TaggingRuleType; |
23 | use Wallabag\CoreBundle\Form\Type\UserInformationType; | 26 | use Wallabag\CoreBundle\Form\Type\UserInformationType; |
@@ -173,6 +176,40 @@ class ConfigController extends Controller | |||
173 | return $this->redirect($this->generateUrl('config') . '#set5'); | 176 | return $this->redirect($this->generateUrl('config') . '#set5'); |
174 | } | 177 | } |
175 | 178 | ||
179 | // handle ignore origin rules | ||
180 | $ignoreOriginUserRule = new IgnoreOriginUserRule(); | ||
181 | $action = $this->generateUrl('config') . '#set6'; | ||
182 | |||
183 | if ($request->query->has('ignore-origin-user-rule')) { | ||
184 | $ignoreOriginUserRule = $this->getDoctrine() | ||
185 | ->getRepository('WallabagCoreBundle:IgnoreOriginUserRule') | ||
186 | ->find($request->query->get('ignore-origin-user-rule')); | ||
187 | |||
188 | if ($this->getUser()->getId() !== $ignoreOriginUserRule->getConfig()->getUser()->getId()) { | ||
189 | return $this->redirect($action); | ||
190 | } | ||
191 | |||
192 | $action = $this->generateUrl('config', [ | ||
193 | 'ignore-origin-user-rule' => $ignoreOriginUserRule->getId(), | ||
194 | ]) . '#set6'; | ||
195 | } | ||
196 | |||
197 | $newIgnoreOriginUserRule = $this->createForm(IgnoreOriginUserRuleType::class, $ignoreOriginUserRule, ['action' => $action]); | ||
198 | $newIgnoreOriginUserRule->handleRequest($request); | ||
199 | |||
200 | if ($newIgnoreOriginUserRule->isSubmitted() && $newIgnoreOriginUserRule->isValid()) { | ||
201 | $ignoreOriginUserRule->setConfig($config); | ||
202 | $em->persist($ignoreOriginUserRule); | ||
203 | $em->flush(); | ||
204 | |||
205 | $this->addFlash( | ||
206 | 'notice', | ||
207 | 'flashes.config.notice.ignore_origin_rules_updated' | ||
208 | ); | ||
209 | |||
210 | return $this->redirect($this->generateUrl('config') . '#set6'); | ||
211 | } | ||
212 | |||
176 | return $this->render('WallabagCoreBundle:Config:index.html.twig', [ | 213 | return $this->render('WallabagCoreBundle:Config:index.html.twig', [ |
177 | 'form' => [ | 214 | 'form' => [ |
178 | 'config' => $configForm->createView(), | 215 | 'config' => $configForm->createView(), |
@@ -181,6 +218,7 @@ class ConfigController extends Controller | |||
181 | 'user' => $userForm->createView(), | 218 | 'user' => $userForm->createView(), |
182 | 'new_tagging_rule' => $newTaggingRule->createView(), | 219 | 'new_tagging_rule' => $newTaggingRule->createView(), |
183 | 'import_tagging_rule' => $taggingRulesImportform->createView(), | 220 | 'import_tagging_rule' => $taggingRulesImportform->createView(), |
221 | 'new_ignore_origin_user_rule' => $newIgnoreOriginUserRule->createView(), | ||
184 | ], | 222 | ], |
185 | 'feed' => [ | 223 | 'feed' => [ |
186 | 'username' => $user->getUsername(), | 224 | 'username' => $user->getUsername(), |
@@ -448,6 +486,43 @@ class ConfigController extends Controller | |||
448 | } | 486 | } |
449 | 487 | ||
450 | /** | 488 | /** |
489 | * Deletes an ignore origin rule and redirect to the config homepage. | ||
490 | * | ||
491 | * @Route("/ignore-origin-user-rule/delete/{id}", requirements={"id" = "\d+"}, name="delete_ignore_origin_rule") | ||
492 | * | ||
493 | * @return RedirectResponse | ||
494 | */ | ||
495 | public function deleteIgnoreOriginRuleAction(IgnoreOriginUserRule $rule) | ||
496 | { | ||
497 | $this->validateRuleAction($rule); | ||
498 | |||
499 | $em = $this->getDoctrine()->getManager(); | ||
500 | $em->remove($rule); | ||
501 | $em->flush(); | ||
502 | |||
503 | $this->addFlash( | ||
504 | 'notice', | ||
505 | 'flashes.config.notice.ignore_origin_rules_deleted' | ||
506 | ); | ||
507 | |||
508 | return $this->redirect($this->generateUrl('config') . '#set6'); | ||
509 | } | ||
510 | |||
511 | /** | ||
512 | * Edit an ignore origin rule. | ||
513 | * | ||
514 | * @Route("/ignore-origin-user-rule/edit/{id}", requirements={"id" = "\d+"}, name="edit_ignore_origin_rule") | ||
515 | * | ||
516 | * @return RedirectResponse | ||
517 | */ | ||
518 | public function editIgnoreOriginRuleAction(IgnoreOriginUserRule $rule) | ||
519 | { | ||
520 | $this->validateRuleAction($rule); | ||
521 | |||
522 | return $this->redirect($this->generateUrl('config') . '?ignore-origin-user-rule=' . $rule->getId() . '#set6'); | ||
523 | } | ||
524 | |||
525 | /** | ||
451 | * Remove all annotations OR tags OR entries for the current user. | 526 | * Remove all annotations OR tags OR entries for the current user. |
452 | * | 527 | * |
453 | * @Route("/reset/{type}", requirements={"id" = "annotations|tags|entries"}, name="config_reset") | 528 | * @Route("/reset/{type}", requirements={"id" = "annotations|tags|entries"}, name="config_reset") |
@@ -659,10 +734,10 @@ class ConfigController extends Controller | |||
659 | /** | 734 | /** |
660 | * Validate that a rule can be edited/deleted by the current user. | 735 | * Validate that a rule can be edited/deleted by the current user. |
661 | */ | 736 | */ |
662 | private function validateRuleAction(TaggingRule $rule) | 737 | private function validateRuleAction(RuleInterface $rule) |
663 | { | 738 | { |
664 | if ($this->getUser()->getId() !== $rule->getConfig()->getUser()->getId()) { | 739 | if ($this->getUser()->getId() !== $rule->getConfig()->getUser()->getId()) { |
665 | throw $this->createAccessDeniedException('You can not access this tagging rule.'); | 740 | throw $this->createAccessDeniedException('You can not access this rule.'); |
666 | } | 741 | } |
667 | } | 742 | } |
668 | 743 | ||