From ccd88952373f2003887cf40c86a8e5f3e3e2b281 Mon Sep 17 00:00:00 2001 From: Philipp Date: Tue, 5 Oct 2021 19:06:13 +0200 Subject: [PATCH] Adress feedback :) --- doc/AddonStorageBackend.md | 8 ++++---- doc/Addons.md | 16 ++++++++++++++++ src/Model/Storage/Filesystem.php | 6 ++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/doc/AddonStorageBackend.md b/doc/AddonStorageBackend.md index a10d5b000..f4773acb8 100644 --- a/doc/AddonStorageBackend.md +++ b/doc/AddonStorageBackend.md @@ -336,20 +336,20 @@ function samplestorage_install() DI::storageManager()->register(SampleStorageBackend::class); } -function webdav_storage_uninstall() +function samplestorage_storage_uninstall() { DI::storageManager()->unregister(SampleStorageBackend::class); } -function webdav_storage_instance(App $a, array &$data) +function samplestorage_storage_instance(App $a, array &$data) { $config = new SampleStorageBackendConfig(DI::l10n(), DI::config()); $data['storage'] = new SampleStorageBackendConfig($config->getFileName()); } -function webdav_storage_config(App $a, array &$data) +function samplestorage_storage_config(App $a, array &$data) { - $data['storage_config'] = new WebDavConfig(DI::l10n(), DI::config()); + $data['storage_config'] = new SampleStorageBackendConfig(DI::l10n(), DI::config()); } ``` diff --git a/doc/Addons.md b/doc/Addons.md index 0d38b6392..debdc89dd 100644 --- a/doc/Addons.md +++ b/doc/Addons.md @@ -538,6 +538,22 @@ Hook data: - **uid** (input): the user id to revoke the block for. - **result** (output): a boolean value indicating wether the operation was successful or not. +### storage_instance + +Called when a custom storage is used (e.g. webdav_storage) + +Hook data: +- **name** (input): the name of the used storage backend +- **data['storage']** (output): the storage instance to use (**must** implement `\Friendica\Model\Storage\IWritableStorage`) + +### storage_config + +Called when the admin of the node wants to configure a custom storage (e.g. webdav_storage) + +Hook data: +- **name** (input): the name of the used storage backend +- **data['storage_config']** (output): the storage configuration instance to use (**must** implement `\Friendica\Model\Storage\IStorageConfiguration`) + ## Complete list of hook callbacks Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above. diff --git a/src/Model/Storage/Filesystem.php b/src/Model/Storage/Filesystem.php index 5a4ea1f0d..3165565b0 100644 --- a/src/Model/Storage/Filesystem.php +++ b/src/Model/Storage/Filesystem.php @@ -45,11 +45,17 @@ class Filesystem implements IWritableStorage * Filesystem constructor. * * @param string $filesystemPath + * + * @throws StorageException in case the path doesn't exist or isn't writeable */ public function __construct(string $filesystemPath = FilesystemConfig::DEFAULT_BASE_FOLDER) { $path = $filesystemPath; $this->basePath = rtrim($path, '/'); + + if (!is_dir($this->basePath) || !is_writable($this->basePath)) { + throw new StorageException(sprintf('Path %s does not exist or is not writeable', $this->basePath)); + } } /**