2024-04-17 11:41:10 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Classes\Traits;
|
|
|
|
|
|
|
|
use App\Classes\MetadataManager;
|
|
|
|
|
|
|
|
trait ManagesMetadata
|
|
|
|
{
|
|
|
|
private array $metadataManagers = [];
|
|
|
|
|
2024-04-20 23:27:47 +02:00
|
|
|
/**
|
|
|
|
* Return an instance of metadata manager for specified filename
|
|
|
|
*/
|
|
|
|
public function metadata(?string $filename = 'index'): MetadataManager
|
|
|
|
{
|
|
|
|
return $this->registerMetadataManager($filename);
|
|
|
|
}
|
|
|
|
|
2024-04-17 11:41:10 +02:00
|
|
|
/**
|
|
|
|
* Register a metadata manager for specified filename
|
|
|
|
*/
|
|
|
|
private function registerMetadataManager(string $filename): MetadataManager
|
|
|
|
{
|
2024-04-17 16:54:37 +02:00
|
|
|
$filename = $this->getFilenameInDataBundle($filename, '.json');
|
2024-04-17 11:41:10 +02:00
|
|
|
|
|
|
|
if (!array_key_exists($filename, $this->metadataManagers)) {
|
2024-04-20 23:27:47 +02:00
|
|
|
$this->metadataManagers[$filename] = new MetadataManager($filename, $this);
|
2024-04-17 11:41:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return $this->metadataManagers[$filename];
|
|
|
|
}
|
|
|
|
|
2024-04-18 00:24:45 +02:00
|
|
|
/**
|
|
|
|
* Load all metadata files at once
|
|
|
|
*/
|
|
|
|
private function loadMetadata()
|
|
|
|
{
|
|
|
|
foreach ($this->metadataManagers as $manager) {
|
|
|
|
$manager->load();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-17 11:41:10 +02:00
|
|
|
/**
|
|
|
|
* Save all metadata files that needs to be
|
|
|
|
*/
|
|
|
|
private function saveMetadata()
|
|
|
|
{
|
|
|
|
foreach ($this->metadataManagers as $manager) {
|
|
|
|
$manager->save();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|