Group all secondary files to a data folder in bundle's directory
This commit is contained in:
parent
f17057cc36
commit
a1539ce35c
|
@ -31,10 +31,12 @@ class AttachmentsManager
|
||||||
|
|
||||||
private MetadataManager $manager;
|
private MetadataManager $manager;
|
||||||
|
|
||||||
|
private string $attachmentsDir = 'attachments';
|
||||||
|
|
||||||
public function __construct(protected string $kind, protected string $root, protected FilesystemAdapter $disk)
|
public function __construct(protected string $kind, protected string $root, protected FilesystemAdapter $disk)
|
||||||
{
|
{
|
||||||
$this->metadataFilePath = sprintf('%s%s.json', $root, $kind);
|
$this->metadataFilePath = sprintf('%s%s.json', $root, $kind);
|
||||||
$this->targetForFiles = sprintf('%s%s', $root, $kind);
|
$this->targetForFiles = sprintf('%s%s/%s', $root, $this->attachmentsDir, $kind);
|
||||||
$this->manager = new MetadataManager($this->metadataFilePath, $disk);
|
$this->manager = new MetadataManager($this->metadataFilePath, $disk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +68,7 @@ public function add(array $data): string
|
||||||
unset($data['contents']);
|
unset($data['contents']);
|
||||||
|
|
||||||
$fullPath = sprintf('%s/%s', $this->targetForFiles, $filename);
|
$fullPath = sprintf('%s/%s', $this->targetForFiles, $filename);
|
||||||
$relativePath = sprintf('%s/%s', $this->kind, $filename);
|
$relativePath = sprintf('%s/%s/%s', $this->attachmentsDir, $this->kind, $filename);
|
||||||
|
|
||||||
$data['filename'] = $relativePath;
|
$data['filename'] = $relativePath;
|
||||||
|
|
||||||
|
|
|
@ -12,17 +12,12 @@ class Bundle
|
||||||
{
|
{
|
||||||
use ManagesAttachments, ManagesMarkdown, ManagesMetadata;
|
use ManagesAttachments, ManagesMarkdown, ManagesMetadata;
|
||||||
|
|
||||||
/**
|
protected string $dataDir;
|
||||||
* Return bundle's path
|
|
||||||
*/
|
|
||||||
public function getPath(): string
|
|
||||||
{
|
|
||||||
return $this->path;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function __construct(protected string $path, protected FilesystemAdapter $disk)
|
public function __construct(protected string $path, protected FilesystemAdapter $disk)
|
||||||
{
|
{
|
||||||
$this->path = Str::start(Str::finish($this->path, '/'), '/');
|
$this->path = Str::start(Str::finish($this->path, '/'), '/');
|
||||||
|
$this->dataDir = $this->path . 'data/';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,17 +31,34 @@ public function save()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gte a complete filename prefixed with bundle's path
|
* Get a complete filename prefixed with bundle's path
|
||||||
*/
|
*/
|
||||||
private function getFilenameInBundle(string $filename, ?string $extension = null)
|
private function getFilenameInBundle(string $filename, ?string $extension = null)
|
||||||
{
|
{
|
||||||
$filename = Str::remove($this->path, $filename);
|
return $this->getFullpath($this->path, $filename, $extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a complete filename prefixed with bundle's data dir
|
||||||
|
*/
|
||||||
|
private function getFilenameInDataBundle(string $filename, ?string $extension = null)
|
||||||
|
{
|
||||||
|
return $this->getFullpath($this->dataDir, $filename, $extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return full path of specified filename in specified root directory, and
|
||||||
|
* optionally add specified extension
|
||||||
|
*/
|
||||||
|
private function getFullpath(string $root, string $filename, ?string $extension = null)
|
||||||
|
{
|
||||||
|
$filename = Str::remove($root, $filename);
|
||||||
|
|
||||||
if (!empty($extension) && !Str::endsWith($filename, $extension)) {
|
if (!empty($extension) && !Str::endsWith($filename, $extension)) {
|
||||||
$filename .= $extension;
|
$filename .= $extension;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprintf('%s%s', $this->path, $filename);
|
return sprintf('%s%s', $root, $filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -14,7 +14,7 @@ trait ManagesAttachments
|
||||||
private function registerAttachmentsManager(string $kind): AttachmentsManager
|
private function registerAttachmentsManager(string $kind): AttachmentsManager
|
||||||
{
|
{
|
||||||
if (!array_key_exists($kind, $this->attachmentsManagers)) {
|
if (!array_key_exists($kind, $this->attachmentsManagers)) {
|
||||||
$this->attachmentsManagers[$kind] = new AttachmentsManager($kind, $this->path, $this->disk);
|
$this->attachmentsManagers[$kind] = new AttachmentsManager($kind, $this->dataDir, $this->disk);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->attachmentsManagers[$kind];
|
return $this->attachmentsManagers[$kind];
|
||||||
|
|
|
@ -13,7 +13,7 @@ trait ManagesMetadata
|
||||||
*/
|
*/
|
||||||
private function registerMetadataManager(string $filename): MetadataManager
|
private function registerMetadataManager(string $filename): MetadataManager
|
||||||
{
|
{
|
||||||
$filename = $this->getFilenameInBundle($filename, '.json');
|
$filename = $this->getFilenameInDataBundle($filename, '.json');
|
||||||
|
|
||||||
if (!array_key_exists($filename, $this->metadataManagers)) {
|
if (!array_key_exists($filename, $this->metadataManagers)) {
|
||||||
$this->metadataManagers[$filename] = new MetadataManager($filename, $this->disk);
|
$this->metadataManagers[$filename] = new MetadataManager($filename, $this->disk);
|
||||||
|
|
|
@ -46,7 +46,7 @@ public function createBundle(): string
|
||||||
|
|
||||||
$ref = $bundle->attachments(AttachmentsManager::Images)->addToHistory('screenshot', [
|
$ref = $bundle->attachments(AttachmentsManager::Images)->addToHistory('screenshot', [
|
||||||
'contents' => $screenshot,
|
'contents' => $screenshot,
|
||||||
'filename' => 'screenshot.jpg',
|
'filename' => sprintf('screenshot-%s.jpg', now()->format('Y-m-d')),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$bundle->metadata()->set([
|
$bundle->metadata()->set([
|
||||||
|
|
Loading…
Reference in New Issue
Block a user