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

59 lines
1.3 KiB
PHP
Raw Normal View History

2024-04-17 11:41:10 +02:00
<?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);
}
2024-04-17 11:41:10 +02:00
/**
* Register a metadata manager for specified filename
*/
private function registerMetadataManager(string $filename): MetadataManager
{
$filename = $this->getFilenameInDataBundle($filename, '.json');
2024-04-17 11:41:10 +02:00
if (!array_key_exists($filename, $this->metadataManagers)) {
$this->metadataManagers[$filename] = new MetadataManager($filename, $this);
2024-04-17 11:41:10 +02:00
}
return $this->metadataManagers[$filename];
}
/**
* 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
*/
2024-04-26 23:05:49 +02:00
private function saveMetadata(): bool
2024-04-17 11:41:10 +02:00
{
2024-04-26 23:05:49 +02:00
$allSaved = true;
2024-04-17 11:41:10 +02:00
foreach ($this->metadataManagers as $manager) {
2024-04-26 23:05:49 +02:00
if (!$manager->save()) {
$allSaved = false;
}
2024-04-17 11:41:10 +02:00
}
2024-04-26 23:05:49 +02:00
return $allSaved;
2024-04-17 11:41:10 +02:00
}
}