X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FEntryController.php;h=9b2954e7d5d0525711ac4a61dec9cbae3f6eeda1;hb=8a8a78a64c116caf81aaa4339906298bdc0e32e0;hp=ba5bfbe2916540ca7f2564d2f06891b6acd96ead;hpb=8668796106b856ca041512af27268ce6e49d2caf;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index ba5bfbe2..9b2954e7 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -20,6 +20,48 @@ use Wallabag\CoreBundle\Form\Type\SearchEntryType; class EntryController extends Controller { + /** + * @Route("/mass", name="mass_action") + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function massAction(Request $request) + { + $em = $this->getDoctrine()->getManager(); + $values = $request->request->all(); + + $action = 'toggle-read'; + if (isset($values['toggle-star'])) { + $action = 'toggle-star'; + } elseif (isset($values['delete'])) { + $action = 'delete'; + } + + if (isset($values['entry-checkbox'])) { + foreach ($values['entry-checkbox'] as $id) { + /** @var Entry * */ + $entry = $this->get('wallabag_core.entry_repository')->findById((int) $id)[0]; + + $this->checkUserAction($entry); + + if ('toggle-read' === $action) { + $entry->toggleArchive(); + } elseif ('toggle-star' === $action) { + $entry->toggleStar(); + } elseif ('delete' === $action) { + $this->get('event_dispatcher')->dispatch(EntryDeletedEvent::NAME, new EntryDeletedEvent($entry)); + $em->remove($entry); + } + } + + $em->flush(); + } + + $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer')); + + return $this->redirect($redirectUrl); + } + /** * @param int $page *