]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Controller/ImportController.php
form to upload file
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / ImportController.php
index 53211eec4f8b783ddc66f995dd1b20bf9f9ab83f..330877108eda51a030df445917318bfc51c4d6ec 100644 (file)
@@ -8,6 +8,7 @@ use Symfony\Component\Console\Input\ArrayInput;
 use Symfony\Component\Console\Output\NullOutput;
 use Symfony\Component\HttpFoundation\Request;
 use Wallabag\CoreBundle\Command\ImportCommand;
+use Wallabag\CoreBundle\Form\Type\UploadImportType;
 
 class ImportController extends Controller
 {
@@ -18,23 +19,46 @@ class ImportController extends Controller
      */
     public function importAction(Request $request)
     {
-        $command = new ImportCommand();
-        $command->setContainer($this->container);
-        $input = new ArrayInput(array('userId' => $this->getUser()->getId()));
-        $return = $command->run($input, new NullOutput());
-
-        if ($return == 0) {
-            $this->get('session')->getFlashBag()->add(
-                'notice',
-                'Import successful'
-            );
-        } else {
-            $this->get('session')->getFlashBag()->add(
-                'warning',
-                'Import failed'
-            );
+        $importForm = $this->createForm(new UploadImportType());
+        $importForm->handleRequest($request);
+        $user = $this->getUser();
+        $importConfig = $this->container->getParameter('wallabag_core.import');
+
+        if ($importForm->isValid()) {
+            $file = $importForm->get('file')->getData();
+            $name = $user->getId().'.json';
+            $dir = __DIR__.'/../../../../web/uploads/import';
+
+            if (in_array($file->getMimeType(), $importConfig['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->redirect('/');
+        return $this->render('WallabagCoreBundle:Import:index.html.twig', array(
+            'form' => array(
+                'import' => $importForm->createView(), ),
+        ));
     }
 }