]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/ImportBundle/Controller/ImportController.php
Update after previous merge
[github/wallabag/wallabag.git] / src / Wallabag / ImportBundle / Controller / ImportController.php
index 3569793b2e3472ac5eab14f4d773bc4ba15462f6..6ebd6a0a936670eb417d84800797e6549dccc310 100644 (file)
@@ -4,14 +4,58 @@ namespace Wallabag\ImportBundle\Controller;
 
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Component\Console\Input\ArrayInput;
+use Symfony\Component\Console\Output\NullOutput;
+use Symfony\Component\HttpFoundation\Request;
+use Wallabag\ImportBundle\Command\ImportCommand;
+use Wallabag\ImportBundle\Form\Type\UploadImportType;
 
 class ImportController extends Controller
 {
     /**
      * @Route("/import", name="import")
      */
-    public function importAction()
+    public function importAction(Request $request)
     {
-        return $this->render('WallabagImportBundle:Import:index.html.twig', array());
+        $importForm = $this->createForm(new UploadImportType());
+        $importForm->handleRequest($request);
+        $user = $this->getUser();
+
+        if ($importForm->isValid()) {
+            $file = $importForm->get('file')->getData();
+            $name = $user->getId().'.json';
+            $dir = __DIR__.'/../../../../web/uploads/import';
+
+            if (in_array($file->getMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($dir, $name)) {
+                $command = new ImportCommand();
+                $command->setContainer($this->container);
+                $input = new ArrayInput(array('userId' => $user->getId()));
+                $return = $command->run($input, new NullOutput());
+
+                if ($return == 0) {
+                    $this->get('session')->getFlashBag()->add(
+                        'notice',
+                        'Import successful'
+                    );
+                } else {
+                    $this->get('session')->getFlashBag()->add(
+                        'notice',
+                        'Import failed'
+                    );
+                }
+
+                return $this->redirect('/');
+            } else {
+                $this->get('session')->getFlashBag()->add(
+                    'notice',
+                    'Error while processing import. Please verify your import file.'
+                );
+            }
+        }
+
+        return $this->render('WallabagImportBundle:Import:index.html.twig', array(
+            'form' => array(
+                'import' => $importForm->createView(), ),
+        ));
     }
 }