|
17 | 17 |
|
18 | 18 | class ZipExportReferences |
19 | 19 | { |
20 | | - /** @var ZipExportPage[] */ |
| 20 | + /** @var array<int, ZipExportPage> */ |
21 | 21 | protected array $pages = []; |
22 | | - /** @var ZipExportChapter[] */ |
| 22 | + /** @var array<int, ZipExportChapter> */ |
23 | 23 | protected array $chapters = []; |
24 | | - /** @var ZipExportBook[] */ |
| 24 | + /** @var array<int, ZipExportBook> */ |
25 | 25 | protected array $books = []; |
26 | 26 |
|
27 | | - /** @var ZipExportAttachment[] */ |
| 27 | + /** @var array<int, ZipExportAttachment> */ |
28 | 28 | protected array $attachments = []; |
29 | 29 |
|
30 | | - /** @var ZipExportImage[] */ |
| 30 | + /** @var array<int, ZipExportImage> */ |
31 | 31 | protected array $images = []; |
32 | 32 |
|
33 | 33 | public function __construct( |
@@ -134,11 +134,12 @@ protected function handleModelReference(Model $model, ZipExportModel $exportMode |
134 | 134 |
|
135 | 135 | // Find and include images if in visibility |
136 | 136 | $page = $model->getPage(); |
137 | | - if ($page && userCan('view', $page) && $exportModel instanceof ZipExportPage) { |
| 137 | + $pageExportModel = $this->pages[$page->id] ?? ($exportModel instanceof ZipExportPage ? $exportModel : null); |
| 138 | + if (isset($this->images[$model->id]) || ($page && $pageExportModel && userCan('view', $page))) { |
138 | 139 | if (!isset($this->images[$model->id])) { |
139 | 140 | $exportImage = ZipExportImage::fromModel($model, $files); |
140 | 141 | $this->images[$model->id] = $exportImage; |
141 | | - $exportModel->images[] = $exportImage; |
| 142 | + $pageExportModel->images[] = $exportImage; |
142 | 143 | } |
143 | 144 | return "[[bsexport:image:{$model->id}]]"; |
144 | 145 | } |
|
0 commit comments