3 namespace BookStack\Exports\ZipExports\Models;
5 use BookStack\Entities\Models\Book;
6 use BookStack\Entities\Models\Chapter;
7 use BookStack\Entities\Models\Page;
8 use BookStack\Exports\ZipExports\ZipExportFiles;
10 class ZipExportBook extends ZipExportModel
12 public ?int $id = null;
14 public ?string $description_html = null;
15 public ?string $cover = null;
16 /** @var ZipExportChapter[] */
17 public array $chapters = [];
18 /** @var ZipExportPage[] */
19 public array $pages = [];
20 /** @var ZipExportTag[] */
21 public array $tags = [];
23 public static function fromModel(Book $model, ZipExportFiles $files): self
25 $instance = new self();
26 $instance->id = $model->id;
27 $instance->name = $model->name;
28 $instance->description_html = $model->descriptionHtml();
31 $instance->cover = $files->referenceForImage($model->cover);
34 $instance->tags = ZipExportTag::fromModelArray($model->tags()->get()->all());
39 $children = $model->getDirectVisibleChildren()->all();
40 foreach ($children as $child) {
41 if ($child instanceof Chapter) {
43 } else if ($child instanceof Page) {
48 $instance->pages = ZipExportPage::fromModelArray($pages, $files);
49 $instance->chapters = ZipExportChapter::fromModelArray($chapters, $files);