1
0
cms11/app/Classes/Traits/ManagesMetadata.php

53 lines
1.2 KiB
PHP

<?php
namespace App\Classes\Traits;
use App\Classes\MetadataManager;
trait ManagesMetadata
{
private array $metadataManagers = [];
/**
* Return an instance of metadata manager for specified filename
*/
public function metadata(?string $filename = 'index'): MetadataManager
{
return $this->registerMetadataManager($filename);
}
/**
* Register a metadata manager for specified filename
*/
private function registerMetadataManager(string $filename): MetadataManager
{
$filename = $this->getFilenameInDataBundle($filename, '.json');
if (!array_key_exists($filename, $this->metadataManagers)) {
$this->metadataManagers[$filename] = new MetadataManager($filename, $this);
}
return $this->metadataManagers[$filename];
}
/**
* Load all metadata files at once
*/
private function loadMetadata()
{
foreach ($this->metadataManagers as $manager) {
$manager->load();
}
}
/**
* Save all metadata files that needs to be
*/
private function saveMetadata()
{
foreach ($this->metadataManagers as $manager) {
$manager->save();
}
}
}