diff options
Diffstat (limited to 'src/Wallabag/ImportBundle/Command')
-rw-r--r-- | src/Wallabag/ImportBundle/Command/ImportCommand.php | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/Wallabag/ImportBundle/Command/ImportCommand.php b/src/Wallabag/ImportBundle/Command/ImportCommand.php new file mode 100644 index 00000000..dfbfc2f7 --- /dev/null +++ b/src/Wallabag/ImportBundle/Command/ImportCommand.php | |||
@@ -0,0 +1,53 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Command; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; | ||
6 | use Symfony\Component\Config\Definition\Exception\Exception; | ||
7 | use Symfony\Component\Console\Input\InputArgument; | ||
8 | use Symfony\Component\Console\Input\InputInterface; | ||
9 | use Symfony\Component\Console\Output\OutputInterface; | ||
10 | |||
11 | class ImportCommand extends ContainerAwareCommand | ||
12 | { | ||
13 | protected function configure() | ||
14 | { | ||
15 | $this | ||
16 | ->setName('wallabag:import-v1') | ||
17 | ->setDescription('Import entries from a JSON export from a wallabag v1 instance') | ||
18 | ->addArgument('userId', InputArgument::REQUIRED, 'User ID to populate') | ||
19 | ->addArgument('filepath', InputArgument::REQUIRED, 'Path to the JSON file') | ||
20 | ; | ||
21 | } | ||
22 | |||
23 | protected function execute(InputInterface $input, OutputInterface $output) | ||
24 | { | ||
25 | $output->writeln('Start : '.(new \DateTime())->format('d-m-Y G:i:s').' ---'); | ||
26 | |||
27 | $em = $this->getContainer()->get('doctrine')->getManager(); | ||
28 | // Turning off doctrine default logs queries for saving memory | ||
29 | $em->getConnection()->getConfiguration()->setSQLLogger(null); | ||
30 | |||
31 | $user = $em->getRepository('WallabagUserBundle:User')->findOneById($input->getArgument('userId')); | ||
32 | |||
33 | if (!is_object($user)) { | ||
34 | throw new Exception(sprintf('User with id "%s" not found', $input->getArgument('userId'))); | ||
35 | } | ||
36 | |||
37 | $wallabag = $this->getContainer()->get('wallabag_import.wallabag_v1.import'); | ||
38 | $res = $wallabag | ||
39 | ->setUser($user) | ||
40 | ->setFilepath($input->getArgument('filepath')) | ||
41 | ->import(); | ||
42 | |||
43 | if (true === $res) { | ||
44 | $summary = $wallabag->getSummary(); | ||
45 | $output->writeln('<info>'.$summary['imported'].' imported</info>'); | ||
46 | $output->writeln('<comment>'.$summary['skipped'].' already saved</comment>'); | ||
47 | } | ||
48 | |||
49 | $em->clear(); | ||
50 | |||
51 | $output->writeln('End : '.(new \DateTime())->format('d-m-Y G:i:s').' ---'); | ||
52 | } | ||
53 | } | ||