From b787a7757ea73b9d10c14cb21758feb07dfc5885 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Mon, 28 Mar 2016 16:43:33 +0200 Subject: Refacto wallabag import Use an abstract class to store all common action from wallabag vX import. Move specificity in v1 & v2 import. --- .../ImportBundle/Controller/WallabagController.php | 85 ++++++++++++++++++++++ .../Controller/WallabagV1Controller.php | 68 +++++------------ .../Controller/WallabagV2Controller.php | 68 +++++------------ 3 files changed, 121 insertions(+), 100 deletions(-) create mode 100644 src/Wallabag/ImportBundle/Controller/WallabagController.php (limited to 'src/Wallabag/ImportBundle/Controller') diff --git a/src/Wallabag/ImportBundle/Controller/WallabagController.php b/src/Wallabag/ImportBundle/Controller/WallabagController.php new file mode 100644 index 00000000..01883d4a --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/WallabagController.php @@ -0,0 +1,85 @@ +createForm(UploadImportType::class); + $form->handleRequest($request); + + $wallabag = $this->getImportService(); + + if ($form->isValid()) { + $file = $form->get('file')->getData(); + $markAsRead = $form->get('mark_as_read')->getData(); + $name = $this->getUser()->getId().'.json'; + + if (in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + $res = $wallabag + ->setUser($this->getUser()) + ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) + ->setMarkAsRead($markAsRead) + ->import(); + + $message = 'flashes.import.notice.failed'; + + if (true === $res) { + $summary = $wallabag->getSummary(); + $message = $this->get('translator')->trans('flashes.import.notice.summary', array( + '%imported%' => $summary['imported'], + '%skipped%' => $summary['skipped'], + )); + + unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); + } + + $this->get('session')->getFlashBag()->add( + 'notice', + $message + ); + + return $this->redirect($this->generateUrl('homepage')); + } else { + $this->get('session')->getFlashBag()->add( + 'notice', + 'flashes.import.notice.failed_on_file' + ); + } + } + + return $this->render($this->getImportTemplate(), [ + 'form' => $form->createView(), + 'import' => $wallabag, + ]); + } +} diff --git a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php b/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php index 1bc9696d..3e748d57 100644 --- a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php +++ b/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php @@ -2,64 +2,32 @@ namespace Wallabag\ImportBundle\Controller; -use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Request; -use Wallabag\ImportBundle\Form\Type\UploadImportType; -class WallabagV1Controller extends Controller +class WallabagV1Controller extends WallabagController { /** - * @Route("/wallabag-v1", name="import_wallabag_v1") + * {@inheritdoc} */ - public function indexAction(Request $request) + protected function getImportService() { - $form = $this->createForm(UploadImportType::class); - $form->handleRequest($request); - - $wallabag = $this->get('wallabag_import.wallabag_v1.import'); - - if ($form->isValid()) { - $file = $form->get('file')->getData(); - $markAsRead = $form->get('mark_as_read')->getData(); - $name = $this->getUser()->getId().'.json'; - - if (in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { - $res = $wallabag - ->setUser($this->getUser()) - ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) - ->setMarkAsRead($markAsRead) - ->import(); - - $message = 'flashes.import.notice.failed'; - - if (true === $res) { - $summary = $wallabag->getSummary(); - $message = $this->get('translator')->trans('flashes.import.notice.summary', array( - '%imported%' => $summary['imported'], - '%skipped%' => $summary['skipped'], - )); - - unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); - } - - $this->get('session')->getFlashBag()->add( - 'notice', - $message - ); + return $this->get('wallabag_import.wallabag_v1.import'); + } - return $this->redirect($this->generateUrl('homepage')); - } else { - $this->get('session')->getFlashBag()->add( - 'notice', - 'flashes.import.notice.failed_on_file' - ); - } - } + /** + * {@inheritdoc} + */ + protected function getImportTemplate() + { + return 'WallabagImportBundle:WallabagV1:index.html.twig'; + } - return $this->render('WallabagImportBundle:WallabagV1:index.html.twig', [ - 'form' => $form->createView(), - 'import' => $wallabag, - ]); + /** + * @Route("/wallabag-v1", name="import_wallabag_v1") + */ + public function indexAction(Request $request) + { + return parent::indexAction($request); } } diff --git a/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php b/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php index 3e6428a0..c2a42165 100644 --- a/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php +++ b/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php @@ -2,64 +2,32 @@ namespace Wallabag\ImportBundle\Controller; -use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Request; -use Wallabag\ImportBundle\Form\Type\UploadImportType; -class WallabagV2Controller extends Controller +class WallabagV2Controller extends WallabagController { /** - * @Route("/wallabag-v2", name="import_wallabag_v2") + * {@inheritdoc} */ - public function indexAction(Request $request) + protected function getImportService() { - $form = $this->createForm(UploadImportType::class); - $form->handleRequest($request); - - $wallabag = $this->get('wallabag_import.wallabag_v2.import'); - - if ($form->isValid()) { - $file = $form->get('file')->getData(); - $markAsRead = $form->get('mark_as_read')->getData(); - $name = $this->getUser()->getId().'.json'; - - if (in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { - $res = $wallabag - ->setUser($this->getUser()) - ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) - ->setMarkAsRead($markAsRead) - ->import(); - - $message = 'flashes.import.notice.failed'; - - if (true === $res) { - $summary = $wallabag->getSummary(); - $message = $this->get('translator')->trans('flashes.import.notice.summary', array( - '%imported%' => $summary['imported'], - '%skipped%' => $summary['skipped'], - )); - - unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); - } - - $this->get('session')->getFlashBag()->add( - 'notice', - $message - ); + return $this->get('wallabag_import.wallabag_v2.import'); + } - return $this->redirect($this->generateUrl('homepage')); - } else { - $this->get('session')->getFlashBag()->add( - 'notice', - 'flashes.import.notice.failed_on_file' - ); - } - } + /** + * {@inheritdoc} + */ + protected function getImportTemplate() + { + return 'WallabagImportBundle:WallabagV2:index.html.twig'; + } - return $this->render('WallabagImportBundle:WallabagV2:index.html.twig', [ - 'form' => $form->createView(), - 'import' => $wallabag, - ]); + /** + * @Route("/wallabag-v2", name="import_wallabag_v2") + */ + public function indexAction(Request $request) + { + return parent::indexAction($request); } } -- cgit v1.2.3