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 */