- /**
- * Export a book as a zip file, made of markdown files.
- */
- public function zip(string $bookSlug)
- {
- $book = $this->bookRepo->getBySlug($bookSlug);
- $z = new ZipArchive();
- $z->open("book.zip", \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
- $bookTree = (new BookContents($book))->getTree(false, true);
- foreach ($bookTree as $bookChild) {
- if ($bookChild->isA('chapter')) {
- $z->addEmptyDir($bookChild->name);
- foreach ($bookChild->pages as $page) {
- $z->addFromString($bookChild->name . "/" . $page->name . ".md", $this->exportService->pageToMarkdown($page));
- }
- } else {
- $z->addFromString($bookChild->name . ".md", $this->exportService->pageToMarkdown($bookChild));
- }
- }
- return response()->download('book.zip');
- // TODO: Is not unlinking it a security issue?