]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Command/ExportCommand.php
php-cs-fixer
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Command / ExportCommand.php
index 9c3c3fefea4a575feb0796e84daf5156a83126bb..128f9d65bc7949c758b0305725b38bff0d5df43b 100644 (file)
@@ -7,7 +7,7 @@ use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Output\StreamOutput;
+use Symfony\Component\Console\Style\SymfonyStyle;
 
 class ExportCommand extends ContainerAwareCommand
 {
@@ -23,7 +23,7 @@ class ExportCommand extends ContainerAwareCommand
                 'User from which to export entries'
             )
             ->addArgument(
-                'filename',
+                'filepath',
                 InputArgument::OPTIONAL,
                 'Path of the exported file'
             )
@@ -32,51 +32,44 @@ class ExportCommand extends ContainerAwareCommand
 
     protected function execute(InputInterface $input, OutputInterface $output)
     {
+        $io = new SymfonyStyle($input, $output);
+
         try {
-            $user = $this->getUser($input->getArgument('username'));
+            $user = $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($input->getArgument('username'));
         } catch (NoResultException $e) {
-            $output->writeln(sprintf('<error>User "%s" not found.</error>', $input->getArgument('username')));
+            $io->error(sprintf('User "%s" not found.', $input->getArgument('username')));
+
             return 1;
         }
-        $entries = $this->getDoctrine()
-            ->getRepository('WallabagCoreBundle:Entry')
+
+        $entries = $this->getContainer()->get('wallabag_core.entry_repository')
             ->getBuilderForAllByUser($user->getId())
             ->getQuery()
             ->getResult();
 
-        $output->write(sprintf('Exporting %d entrie(s) for user « <comment>%s</comment> »... ', count($entries), $user->getUserName()));
+        $io->text(sprintf('Exporting <info>%d</info> entrie(s) for user <info>%s</info>...', \count($entries), $user->getUserName()));
+
+        $filePath = $input->getArgument('filepath');
 
-        $filePath = $input->getArgument('filename');
         if (!$filePath) {
-            $filePath = $this->getContainer()->getParameter('kernel.root_dir') . '/../' . sprintf('%s-export', $user->getUsername());
+            $filePath = $this->getContainer()->getParameter('kernel.project_dir') . '/' . sprintf('%s-export.json', $user->getUsername());
         }
+
         try {
             $data = $this->getContainer()->get('wallabag_core.helper.entries_export')
                 ->setEntries($entries)
                 ->updateTitle('All')
+                ->updateAuthor('All')
                 ->exportJsonData();
             file_put_contents($filePath, $data);
         } catch (\InvalidArgumentException $e) {
-            $output->writeln(sprintf('<error>Error: "%s"</error>', $e->getMessage()));
-        }
+            $io->error(sprintf('Error: "%s"', $e->getMessage()));
 
-        $output->writeln('<info>Done.</info>');
-    }
+            return 1;
+        }
 
-    /**
-     * 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);
-    }
+        $io->success('Done.');
 
-    private function getDoctrine()
-    {
-        return $this->getContainer()->get('doctrine');
+        return 0;
     }
 }