setName('wallabag:export') ->setDescription('Export all entries for an user') ->setHelp('This command helps you to export all entries for an user') ->addArgument( 'username', InputArgument::REQUIRED, 'User from which to export entries' ) ->addArgument( 'filepath', InputArgument::OPTIONAL, 'Path of the exported file' ) ; } protected function execute(InputInterface $input, OutputInterface $output) { try { $user = $this->getDoctrine()->getRepository('WallabagUserBundle:User')->findOneByUserName($input->getArgument('username')); } catch (NoResultException $e) { $output->writeln(sprintf('User "%s" not found.', $input->getArgument('username'))); return 1; } $entries = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') ->getBuilderForAllByUser($user->getId()) ->getQuery() ->getResult(); $output->write(sprintf('Exporting %d entrie(s) for user « %s »... ', count($entries), $user->getUserName())); $filePath = $input->getArgument('filepath'); if (!$filePath) { $filePath = $this->getContainer()->getParameter('kernel.root_dir').'/../'.sprintf('%s-export.json', $user->getUsername()); } try { $data = $this->getContainer()->get('wallabag_core.helper.entries_export') ->setEntries($entries) ->updateTitle('All') ->exportJsonData(); file_put_contents($filePath, $data); } catch (\InvalidArgumentException $e) { $output->writeln(sprintf('Error: "%s"', $e->getMessage())); return 1; } $output->writeln('Done.'); return 0; } private function getDoctrine() { return $this->getContainer()->get('doctrine'); } }