protected function execute(InputInterface $input, OutputInterface $output)
 {
     $entityManager = $this->getContainer()->get('doctrine')->getManager();
     $books = $entityManager->getRepository('eTextBookLoungeBundle:Book')->findAll();
     foreach ($books as $book) {
         $oldSlug = $book->getSlug();
         $package = new BookPackage($book);
         $package->setTmpFolderPath($this->getContainer()->getParameter('book_tmp_dir'));
         $package->setBooksFolderPath($this->getContainer()->getParameter('books_dir'));
         $package->setTemplateFolderPath($this->getContainer()->getParameter('book_template_dir'));
         $package->updateBookSlug();
         $package->unpack($this->getContainer()->getParameter('books_dir') . $oldSlug . '.etb');
         $package->pack();
         if ($book->getIsPublic()) {
             $package->setBooksFolderPath($this->getContainer()->getParameter('public_dir'));
             $package->updateBookSlug();
             $package->pack();
             $package->setTmpFolderPath($this->getContainer()->getParameter('public_dir'));
             $package->updateBookSlug();
             $package->unpack();
         }
         $entityManager->persist($book);
         echo $book->getTitle() . " - " . $oldSlug . " | " . $book->getSlug() . "\n";
     }
     $entityManager->flush();
 }
 public function testBookUnpack()
 {
     $package = new BookPackage($this->createFixtureBook());
     $package->updateBookSlug();
     $package->setTmpFolderPath($this->bookTmpFolderPath);
     $package->setTemplateFolderPath($this->bookTemplateFolderPath);
     $package->setBooksFolderPath($this->bookPrivateBooksFolderPath);
     $package->createBootstrapFiles();
     $package->pack();
     $package->unpack();
     $this->assertEquals(true, file_exists($this->bookPrivateBooksFolderPath . $package->getBook()->getSlug() . '.etb'));
 }
 /**
  * @Route("/book/update/module", name="book-update-module")
  */
 public function updateModule(Request $request)
 {
     $content = $request->get('content');
     $bookSlug = $request->get('book');
     $moduleSlug = $request->get('module');
     $indexTasks = $request->get('blocks');
     $book = $this->getDoctrine()->getManager()->getRepository('eTextBookLoungeBundle:Book')->findOneBySlug($bookSlug);
     $package = new BookPackage($book);
     $package->setTmpFolderPath($this->container->getParameter('book_tmp_dir'));
     $package->setBooksFolderPath($this->container->getParameter('books_dir'));
     $package->setTemplateFolderPath($this->container->getParameter('book_template_dir'));
     $package->updateBookSlug();
     $package->createBootstrapFiles();
     $package->updateModuleContent($moduleSlug, $content);
     $package->updateBookInfoSummary($moduleSlug, $indexTasks);
     $package->updateBookSummary();
     $package->pack();
     return new JsonResponse(array('status' => 'success'));
 }