diff --git a/app/Classes/Bundle.php b/app/Classes/Bundle.php index 50d3769..5c902d6 100644 --- a/app/Classes/Bundle.php +++ b/app/Classes/Bundle.php @@ -10,6 +10,7 @@ use Carbon\Carbon; use Exception; use Illuminate\Filesystem\FilesystemAdapter; +use Illuminate\Support\Collection; use Illuminate\Support\Str; use League\Flysystem\StorageAttributes; @@ -134,6 +135,23 @@ public function getSiteTitle(): string return $title; } + /** + * Return "virtual" metadata, which is a Collection of extended metadata, + * with additions and corrections from the "metadata.json" file + */ + public function virtualMetadata(): Collection + { + $mergedData = []; + + foreach ($this->metadata()->get('virtualMetadata', []) as $additionalFile) { + $mergedData = array_merge_recursive($mergedData, $this->metadata($additionalFile)->all() ?? []); + } + + $replacedData = array_replace_recursive($mergedData, $this->metadata('metadata')->all() ?? []); + + return collect($replacedData); + } + /** * Return a boolean value indicating if there already is a bundle in * specified path diff --git a/app/Services/BundleUpdaters/Updaters/CriticUpdater.php b/app/Services/BundleUpdaters/Updaters/CriticUpdater.php index 82e69a9..ffea2dd 100644 --- a/app/Services/BundleUpdaters/Updaters/CriticUpdater.php +++ b/app/Services/BundleUpdaters/Updaters/CriticUpdater.php @@ -82,7 +82,10 @@ public function update() } } + $this->bundle->metadata()->set('virtualMetadata', ['wikidata/included']); + $this->bundle->save(); + $this->bundle->repair(); } /**