diff --git a/app/Classes/AttachmentsManager.php b/app/Classes/AttachmentsManager.php index a095177..fd99117 100644 --- a/app/Classes/AttachmentsManager.php +++ b/app/Classes/AttachmentsManager.php @@ -31,10 +31,12 @@ class AttachmentsManager private MetadataManager $manager; + private string $attachmentsDir = 'attachments'; + public function __construct(protected string $kind, protected string $root, protected FilesystemAdapter $disk) { $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); } @@ -66,7 +68,7 @@ public function add(array $data): string unset($data['contents']); $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; diff --git a/app/Classes/Bundle.php b/app/Classes/Bundle.php index cf026a0..8c91dc6 100644 --- a/app/Classes/Bundle.php +++ b/app/Classes/Bundle.php @@ -12,17 +12,12 @@ class Bundle { use ManagesAttachments, ManagesMarkdown, ManagesMetadata; - /** - * Return bundle's path - */ - public function getPath(): string - { - return $this->path; - } + protected string $dataDir; 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) { - $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)) { $filename .= $extension; } - return sprintf('%s%s', $this->path, $filename); + return sprintf('%s%s', $root, $filename); } /** diff --git a/app/Classes/Traits/ManagesAttachments.php b/app/Classes/Traits/ManagesAttachments.php index e598a53..56e28c9 100644 --- a/app/Classes/Traits/ManagesAttachments.php +++ b/app/Classes/Traits/ManagesAttachments.php @@ -14,7 +14,7 @@ trait ManagesAttachments private function registerAttachmentsManager(string $kind): AttachmentsManager { 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]; diff --git a/app/Classes/Traits/ManagesMetadata.php b/app/Classes/Traits/ManagesMetadata.php index 427c067..526035d 100644 --- a/app/Classes/Traits/ManagesMetadata.php +++ b/app/Classes/Traits/ManagesMetadata.php @@ -13,7 +13,7 @@ trait ManagesMetadata */ private function registerMetadataManager(string $filename): MetadataManager { - $filename = $this->getFilenameInBundle($filename, '.json'); + $filename = $this->getFilenameInDataBundle($filename, '.json'); if (!array_key_exists($filename, $this->metadataManagers)) { $this->metadataManagers[$filename] = new MetadataManager($filename, $this->disk); diff --git a/app/Services/BundleCreator/Creators/LinkBundleCreator.php b/app/Services/BundleCreator/Creators/LinkBundleCreator.php index 5b9347b..b46113b 100644 --- a/app/Services/BundleCreator/Creators/LinkBundleCreator.php +++ b/app/Services/BundleCreator/Creators/LinkBundleCreator.php @@ -46,7 +46,7 @@ public function createBundle(): string $ref = $bundle->attachments(AttachmentsManager::Images)->addToHistory('screenshot', [ 'contents' => $screenshot, - 'filename' => 'screenshot.jpg', + 'filename' => sprintf('screenshot-%s.jpg', now()->format('Y-m-d')), ]); $bundle->metadata()->set([