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) { $io = new SymfonyStyle($input, $output); try { $user = $this->getUser($input->getArgument('username')); } catch (NoResultException $e) { $io->error(sprintf('User "%s" not found.', $input->getArgument('username'))); return 1; } $tagger = $this->getContainer()->get(RuleBasedTagger::class); $io->text(sprintf('Tagging entries for user %s...', $user->getUserName())); $entries = $tagger->tagAllForUser($user); $io->text('Persist ' . \count($entries) . ' entries... '); $em = $this->getContainer()->get('doctrine')->getManager(); foreach ($entries as $entry) { $em->persist($entry); } $em->flush(); $io->success('Done.'); return 0; } /** * Fetches a user from its username. * * @param string $username * * @return User */ private function getUser($username) { return $this->getContainer()->get(UserRepository::class)->findOneByUserName($username); } private function getDoctrine() { return $this->getContainer()->get(ManagerRegistry::class); } }