From 2521a35b2a31045de8ce3b3bce0bcf903d95b9ca Mon Sep 17 00:00:00 2001 From: Jonathan Treffler Date: Sun, 13 Oct 2024 23:04:20 +0200 Subject: [PATCH] added not found errors to be used by organization providers --- lib/Errors/NotFoundException.php | 14 ++++++++++++++ lib/Errors/OrganizationNotFound.php | 9 +++++++++ lib/Errors/OrganizationRoleNotFound.php | 9 +++++++++ ...t.php => RegisterOrganizationProviderEvent.php} | 2 +- .../OrganizationProvider.php | 7 ++++++- .../OrganizationProviderManager.php | 7 +++++++ 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 lib/Errors/NotFoundException.php create mode 100644 lib/Errors/OrganizationNotFound.php create mode 100644 lib/Errors/OrganizationRoleNotFound.php rename lib/Events/{RegisterOrganisationProviderEvent.php => RegisterOrganizationProviderEvent.php} (89%) rename lib/{OrganisationProvider => OrganizationProvider}/OrganizationProvider.php (92%) rename lib/{OrganisationProvider => OrganizationProvider}/OrganizationProviderManager.php (86%) diff --git a/lib/Errors/NotFoundException.php b/lib/Errors/NotFoundException.php new file mode 100644 index 0000000..8a41e65 --- /dev/null +++ b/lib/Errors/NotFoundException.php @@ -0,0 +1,14 @@ + $provider, "id" => $id]); + } +} \ No newline at end of file diff --git a/lib/Errors/OrganizationRoleNotFound.php b/lib/Errors/OrganizationRoleNotFound.php new file mode 100644 index 0000000..baa3021 --- /dev/null +++ b/lib/Errors/OrganizationRoleNotFound.php @@ -0,0 +1,9 @@ + $provider, "id" => $id]); + } +} \ No newline at end of file diff --git a/lib/Events/RegisterOrganisationProviderEvent.php b/lib/Events/RegisterOrganizationProviderEvent.php similarity index 89% rename from lib/Events/RegisterOrganisationProviderEvent.php rename to lib/Events/RegisterOrganizationProviderEvent.php index 3675050..b3e6bb2 100644 --- a/lib/Events/RegisterOrganisationProviderEvent.php +++ b/lib/Events/RegisterOrganizationProviderEvent.php @@ -6,7 +6,7 @@ namespace OCA\OrganizationFolders\Events; use OCP\EventDispatcher\Event; -use OCA\OrganizationFolders\Transport\OrganizationProviderManager; +use OCA\OrganizationFolders\OrganizationProvider\OrganizationProviderManager; /** * This event is triggered during the initialization of Organization Folders. diff --git a/lib/OrganisationProvider/OrganizationProvider.php b/lib/OrganizationProvider/OrganizationProvider.php similarity index 92% rename from lib/OrganisationProvider/OrganizationProvider.php rename to lib/OrganizationProvider/OrganizationProvider.php index 9266a84..0f8f8b7 100644 --- a/lib/OrganisationProvider/OrganizationProvider.php +++ b/lib/OrganizationProvider/OrganizationProvider.php @@ -7,6 +7,9 @@ namespace OCA\OrganizationFolders\OrganizationProvider; use OCA\OrganizationFolders\Model\Organization; use OCA\OrganizationFolders\Model\OrganizationRole; +use OCA\OrganizationFolders\Errors\OrganizationNotFound; +use OCA\OrganizationFolders\Errors\OrganizationRoleNotFound; + abstract class OrganizationProvider { protected $id; @@ -17,6 +20,7 @@ abstract class OrganizationProvider { /** * Get specific role by its id (unique within OrganizationProvider) * @return Organization + * @throws OrganizationNotFound */ abstract public function getOrganization(int $id): Organization; @@ -56,9 +60,10 @@ abstract class OrganizationProvider { abstract public function getSubOrganizations(?int $parentOrganizationId): array; /** - * Get specific role by its id (unique within OrganizationProvider) + * Get a specific role by its id (must be unique within organization provider, not just within parent organization) * * @return OrganizationRole + * @throws OrganizationRoleNotFound */ abstract public function getRole(int $id): OrganizationRole; diff --git a/lib/OrganisationProvider/OrganizationProviderManager.php b/lib/OrganizationProvider/OrganizationProviderManager.php similarity index 86% rename from lib/OrganisationProvider/OrganizationProviderManager.php rename to lib/OrganizationProvider/OrganizationProviderManager.php index f33af90..91cbb42 100644 --- a/lib/OrganisationProvider/OrganizationProviderManager.php +++ b/lib/OrganizationProvider/OrganizationProviderManager.php @@ -26,6 +26,13 @@ class OrganizationProviderManager { return $this->organizationProviders; } + /** + * @return bool + */ + public function hasOrganizationProvider($id): bool { + return array_key_exists($id, $this->organizationProviders); + } + /** * @return OrganizationProvider */