From 351c24dbddda1de7cac298d922a0f257948416d4 Mon Sep 17 00:00:00 2001 From: Jonathan Treffler Date: Thu, 22 Aug 2024 15:08:54 +0200 Subject: [PATCH 1/3] started describing function signatures of organization providers --- .../OrganisationProvider.php | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/OrganisationProvider/OrganisationProvider.php b/lib/OrganisationProvider/OrganisationProvider.php index f94726e..2455ba7 100644 --- a/lib/OrganisationProvider/OrganisationProvider.php +++ b/lib/OrganisationProvider/OrganisationProvider.php @@ -11,5 +11,37 @@ abstract class OrganizationProvider { return $this->id; } - // TODO: functions to access organisation structure + /* Return one level of the Organization Tree */ + /* + * ┌────────────────────────────┐ + * │ Root Node │ + * │ (of Organization Provider) │ + * └──┬──────────────────────┬──┘ + * │ │ + * │ │ + * ┌── ── ── │── ── ── ── ── ── ── ─│─ ── ── ─┐ + * │ │ + * │ ▼ ▼ │ + * ┌──────────────┐ ┌──────────────┐ + * │ │ │ │ │ │ + * │Organization 1│ │Organization 2│ ◄── ── ── getOrganizations(); + * │ │ │ │ │ │ + * └┬────────────┬┘ └┬────────────┬┘ + * │ │ │ │ │ │ + * │ │ │ │ + * └── ├─ ── ── ── ─┤ ── ── ─┼ ── ── ── ──│── ┘ + * │ │ │ │ + * ▼ ▼ │ │ + * ... ... ▼ ▼ + * ┌── ── ── ── ── ── ── ── ── ── ─┐ + * ┌────────────┐ ┌────────────┐ + * │ │ │ │ │ │ + * │ Suborg. 21 │ │ Suborg. 22 │ ◄── ── ── getOrganizations(2); + * │ │ │ │ │ │ + * └────────────┘ └────────────┘ + * └── ── ── ── ── ── ── ── ── ── ─┘ + */ + abstract public function getOrganizations(?int $parentOrganizationId); + + abstract public function getRolesOfOrganization(int $organizationId); } \ No newline at end of file -- 2.39.5 From 0e197d02cb71a0abbac986e81ede0c2559ac81ac Mon Sep 17 00:00:00 2001 From: Jonathan Treffler Date: Wed, 9 Oct 2024 22:36:39 +0200 Subject: [PATCH 2/3] enable nextcloud 30 support --- appinfo/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 8177160..6e4aa44 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -16,6 +16,6 @@ pgsql sqlite mysql - + \ No newline at end of file -- 2.39.5 From 92cef844d4de8ecec1e465cf7d65a189ef304e9c Mon Sep 17 00:00:00 2001 From: Jonathan Treffler Date: Sun, 13 Oct 2024 18:06:53 +0200 Subject: [PATCH 3/3] implemented Organization Provider models --- lib/Model/Organization.php | 19 +++++ lib/Model/OrganizationRole.php | 29 ++++++++ .../OrganisationProvider.php | 47 ------------ .../OrganizationProvider.php | 72 +++++++++++++++++++ ...er.php => OrganizationProviderManager.php} | 0 5 files changed, 120 insertions(+), 47 deletions(-) create mode 100644 lib/Model/Organization.php create mode 100644 lib/Model/OrganizationRole.php delete mode 100644 lib/OrganisationProvider/OrganisationProvider.php create mode 100644 lib/OrganisationProvider/OrganizationProvider.php rename lib/OrganisationProvider/{OrganisationProviderManager.php => OrganizationProviderManager.php} (100%) diff --git a/lib/Model/Organization.php b/lib/Model/Organization.php new file mode 100644 index 0000000..56729eb --- /dev/null +++ b/lib/Model/Organization.php @@ -0,0 +1,19 @@ +id; + } + + public function getMembersGroup(): string { + return $this->membersGroup; + } +} \ No newline at end of file diff --git a/lib/Model/OrganizationRole.php b/lib/Model/OrganizationRole.php new file mode 100644 index 0000000..3358bfb --- /dev/null +++ b/lib/Model/OrganizationRole.php @@ -0,0 +1,29 @@ +id; + } + + public function getOrganizationId(): int { + return $this->organizationId; + } + + public function getFriendlyName(): string { + return $this->friendlyName; + } + + public function getMembersGroup(): string { + return $this->membersGroup; + } +} \ No newline at end of file diff --git a/lib/OrganisationProvider/OrganisationProvider.php b/lib/OrganisationProvider/OrganisationProvider.php deleted file mode 100644 index 2455ba7..0000000 --- a/lib/OrganisationProvider/OrganisationProvider.php +++ /dev/null @@ -1,47 +0,0 @@ -id; - } - - /* Return one level of the Organization Tree */ - /* - * ┌────────────────────────────┐ - * │ Root Node │ - * │ (of Organization Provider) │ - * └──┬──────────────────────┬──┘ - * │ │ - * │ │ - * ┌── ── ── │── ── ── ── ── ── ── ─│─ ── ── ─┐ - * │ │ - * │ ▼ ▼ │ - * ┌──────────────┐ ┌──────────────┐ - * │ │ │ │ │ │ - * │Organization 1│ │Organization 2│ ◄── ── ── getOrganizations(); - * │ │ │ │ │ │ - * └┬────────────┬┘ └┬────────────┬┘ - * │ │ │ │ │ │ - * │ │ │ │ - * └── ├─ ── ── ── ─┤ ── ── ─┼ ── ── ── ──│── ┘ - * │ │ │ │ - * ▼ ▼ │ │ - * ... ... ▼ ▼ - * ┌── ── ── ── ── ── ── ── ── ── ─┐ - * ┌────────────┐ ┌────────────┐ - * │ │ │ │ │ │ - * │ Suborg. 21 │ │ Suborg. 22 │ ◄── ── ── getOrganizations(2); - * │ │ │ │ │ │ - * └────────────┘ └────────────┘ - * └── ── ── ── ── ── ── ── ── ── ─┘ - */ - abstract public function getOrganizations(?int $parentOrganizationId); - - abstract public function getRolesOfOrganization(int $organizationId); -} \ No newline at end of file diff --git a/lib/OrganisationProvider/OrganizationProvider.php b/lib/OrganisationProvider/OrganizationProvider.php new file mode 100644 index 0000000..9266a84 --- /dev/null +++ b/lib/OrganisationProvider/OrganizationProvider.php @@ -0,0 +1,72 @@ +id; + } + + /** + * Get specific role by its id (unique within OrganizationProvider) + * @return Organization + */ + abstract public function getOrganization(int $id): Organization; + + /** + * Return one level of the Organization Tree + * + * ┌────────────────────────────┐ + * │ Root Node │ + * │ (of Organization Provider) │ + * └──┬──────────────────────┬──┘ + * │ │ + * │ │ + * ┌── ── ── │── ── ── ── ── ── ── ─│─ ── ── ─┐ + * │ │ + * │ ▼ ▼ │ + * ┌──────────────┐ ┌──────────────┐ + * │ │ │ │ │ │ + * │Organization 1│ │Organization 2│ ◄── ── ── getSubOrganizations(); + * │ │ │ │ │ │ + * └┬────────────┬┘ └┬────────────┬┘ + * │ │ │ │ │ │ + * │ │ │ │ + * └── ├─ ── ── ── ─┤ ── ── ─┼ ── ── ── ──│── ┘ + * │ │ │ │ + * ▼ ▼ │ │ + * ... ... ▼ ▼ + * ┌── ── ── ── ── ── ── ── ── ── ─┐ + * ┌────────────┐ ┌────────────┐ + * │ │ │ │ │ │ + * │ Suborg. 21 │ │ Suborg. 22 │ ◄── ── ── getSubOrganizations(2); + * │ │ │ │ │ │ + * └────────────┘ └────────────┘ + * └── ── ── ── ── ── ── ── ── ── ─┘ + * + * @return Organization[] + */ + abstract public function getSubOrganizations(?int $parentOrganizationId): array; + + /** + * Get specific role by its id (unique within OrganizationProvider) + * + * @return OrganizationRole + */ + abstract public function getRole(int $id): OrganizationRole; + + /** + * Get all roles of a specific organization + * + * @return OrganizationRole[] + */ + abstract public function getRolesOfOrganization(int $organizationId): array; + +} \ No newline at end of file diff --git a/lib/OrganisationProvider/OrganisationProviderManager.php b/lib/OrganisationProvider/OrganizationProviderManager.php similarity index 100% rename from lib/OrganisationProvider/OrganisationProviderManager.php rename to lib/OrganisationProvider/OrganizationProviderManager.php -- 2.39.5