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 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 f94726e..0000000 --- a/lib/OrganisationProvider/OrganisationProvider.php +++ /dev/null @@ -1,15 +0,0 @@ -id; - } - - // TODO: functions to access organisation structure -} \ 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