74 lines
1.8 KiB
PHP
74 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Traits;
|
|
|
|
use App\Classes\AttachmentsManager;
|
|
|
|
trait ManagesAttachments
|
|
{
|
|
private array $attachmentsManagers = [];
|
|
|
|
/**
|
|
* Iterates over attached manager to replace attachments in specified
|
|
* markdown with appropriate Blade components
|
|
*/
|
|
public function replaceAttachmentsInMarkdown(string $markdown)
|
|
{
|
|
foreach ($this->attachmentsManagers as $manager) {
|
|
$markdown = $manager->replaceAttachmentsInMarkdown($markdown);
|
|
}
|
|
|
|
return $markdown;
|
|
}
|
|
|
|
/**
|
|
* Return an instance of attachments manager for specified kind of files
|
|
*/
|
|
public function attachments(string $kind): AttachmentsManager
|
|
{
|
|
return $this->registerAttachmentsManager($kind);
|
|
}
|
|
|
|
/**
|
|
* Register an attachments manager for specified filename
|
|
*/
|
|
private function registerAttachmentsManager(string $kind): AttachmentsManager
|
|
{
|
|
if (!array_key_exists($kind, $this->attachmentsManagers)) {
|
|
$this->attachmentsManagers[$kind] = new AttachmentsManager($kind, $this);
|
|
}
|
|
|
|
return $this->attachmentsManagers[$kind];
|
|
}
|
|
|
|
/**
|
|
* Load all attachments files
|
|
*/
|
|
private function loadAttachments()
|
|
{
|
|
foreach ($this->attachmentsManagers as $manager) {
|
|
$manager->load();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Save all attachments files that needs to be
|
|
*/
|
|
private function saveAttachments()
|
|
{
|
|
foreach ($this->attachmentsManagers as $manager) {
|
|
$manager->save();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Repair all attachments files that needs to be
|
|
*/
|
|
private function repairAttachments()
|
|
{
|
|
foreach ($this->attachmentsManagers as $manager) {
|
|
$manager->repair();
|
|
}
|
|
}
|
|
}
|