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