43 lines
1.0 KiB
PHP
43 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Classes\Traits;
|
||
|
|
||
|
use App\Classes\AttachmentsManager;
|
||
|
|
||
|
trait ManagesAttachments
|
||
|
{
|
||
|
private array $attachmentsManagers = [];
|
||
|
|
||
|
/**
|
||
|
* Register an attachments manager for specified filename
|
||
|
*/
|
||
|
private function registerAttachmentsManager(string $root): AttachmentsManager
|
||
|
{
|
||
|
$root = $this->getFilenameInBundle($root);
|
||
|
|
||
|
if (!array_key_exists($root, $this->attachmentsManagers)) {
|
||
|
$this->attachmentsManagers[$root] = new AttachmentsManager($root, $this->disk);
|
||
|
}
|
||
|
|
||
|
return $this->attachmentsManagers[$root];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Save all attachments files that needs to be
|
||
|
*/
|
||
|
private function saveAttachments()
|
||
|
{
|
||
|
foreach ($this->attachmentsManagers as $manager) {
|
||
|
$manager->save();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return an instance of attachments manager for specified filename
|
||
|
*/
|
||
|
public function attachments(string $root): AttachmentsManager
|
||
|
{
|
||
|
return $this->registerAttachmentsManager($root);
|
||
|
}
|
||
|
}
|