setName('wallabag:tag:all') ->setDescription('Tag all entries using the tagging rules.') ->addArgument( 'username', InputArgument::REQUIRED, 'User to tag entries for.' ) ; } protected function execute(InputInterface $input, OutputInterface $output) { try { $user = $this->getUser($input->getArgument('username')); } catch (NoResultException $e) { $output->writeln(sprintf('User "%s" not found.', $input->getArgument('username'))); return 1; } $tagger = $this->getContainer()->get('wallabag_core.rule_based_tagger'); $output->write(sprintf('Tagging entries for user « %s »... ', $user->getUserName())); $entries = $tagger->tagAllForUser($user); $em = $this->getDoctrine()->getManager(); foreach ($entries as $entry) { $em->persist($entry); } $em->flush(); $output->writeln('Done.'); } /** * Fetches a user from its username. * * @param string $username * * @return \Wallabag\UserBundle\Entity\User */ private function getUser($username) { return $this->getDoctrine()->getRepository('WallabagUserBundle:User')->findOneByUserName($username); } private function getDoctrine() { return $this->getContainer()->get('doctrine'); } }