Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/circles.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2021-08-23 14:35:29 +0300
committerMaxence Lange <maxence@artificial-owl.com>2021-08-23 14:35:29 +0300
commit5d7babfa6ddc7c987afdd292f345a0e044f68b91 (patch)
tree26716cdb5c748451f0faeebefc11be5e022ebb31
parent2359d30e0bea7ec89fa304a09e8d005cef745c20 (diff)
Signed-off-by: Maxence Lange <maxence@artificial-owl.com> todo Signed-off-by: Maxence Lange <maxence@artificial-owl.com> more Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
-rw-r--r--composer.lock113
-rw-r--r--lib/CirclesManager.php76
-rw-r--r--lib/CirclesQueryHelper.php5
-rw-r--r--lib/Command/CirclesMaintenance.php2
-rw-r--r--lib/Db/CircleRequest.php9
-rw-r--r--lib/Db/CoreQueryBuilder.php88
-rw-r--r--lib/Db/MemberRequest.php2
-rw-r--r--lib/Db/MemberRequestBuilder.php2
-rw-r--r--lib/Db/MembershipRequest.php2
-rw-r--r--lib/Db/MembershipRequestBuilder.php2
-rw-r--r--lib/Db/MountRequest.php2
-rw-r--r--lib/FederatedItems/CircleConfig.php6
-rw-r--r--lib/FederatedItems/CircleCreate.php8
-rw-r--r--lib/FederatedItems/CircleDestroy.php8
-rw-r--r--lib/FederatedItems/CircleEdit.php2
-rw-r--r--lib/FederatedItems/CircleJoin.php12
-rw-r--r--lib/FederatedItems/CircleLeave.php10
-rw-r--r--lib/FederatedItems/CircleSettings.php2
-rw-r--r--lib/FederatedItems/Files/FileShare.php8
-rw-r--r--lib/FederatedItems/Files/FileUnshare.php8
-rw-r--r--lib/FederatedItems/ItemLock.php4
-rw-r--r--lib/FederatedItems/LoopbackTest.php6
-rw-r--r--lib/FederatedItems/MassiveMemberAdd.php8
-rw-r--r--lib/FederatedItems/MemberDisplayName.php6
-rw-r--r--lib/FederatedItems/MemberLevel.php6
-rw-r--r--lib/FederatedItems/MemberRemove.php8
-rw-r--r--lib/FederatedItems/SharedItemsSync.php4
-rw-r--r--lib/FederatedItems/SingleMemberAdd.php10
-rw-r--r--lib/IBroadcaster.php76
-rw-r--r--lib/IEntity.php69
-rw-r--r--lib/IFederatedItem.php61
-rw-r--r--lib/IFederatedItemAsyncProcess.php40
-rw-r--r--lib/IFederatedItemCircleCheckNotRequired.php40
-rw-r--r--lib/IFederatedItemDataRequestOnly.php40
-rw-r--r--lib/IFederatedItemHighSeverity.php40
-rw-r--r--lib/IFederatedItemInitiatorCheckNotRequired.php40
-rw-r--r--lib/IFederatedItemInitiatorMembershipNotRequired.php40
-rw-r--r--lib/IFederatedItemLimitedToInstanceWithMembership.php40
-rw-r--r--lib/IFederatedItemLoopbackTest.php40
-rw-r--r--lib/IFederatedItemMemberCheckNotRequired.php40
-rw-r--r--lib/IFederatedItemMemberEmpty.php40
-rw-r--r--lib/IFederatedItemMemberOptional.php40
-rw-r--r--lib/IFederatedItemMemberRequired.php40
-rw-r--r--lib/IFederatedItemMustBeInitializedLocally.php40
-rw-r--r--lib/IFederatedItemShareManagement.php135
-rw-r--r--lib/IFederatedItemSharedItem.php42
-rw-r--r--lib/IFederatedModel.php50
-rw-r--r--lib/IFederatedSync.php54
-rw-r--r--lib/IFederatedUser.php67
-rw-r--r--lib/IQueryProbe.php102
-rw-r--r--lib/ISearch.php49
-rw-r--r--lib/Listeners/Files/RemovingMember.php2
-rw-r--r--lib/Model/Circle.php59
-rw-r--r--lib/Model/Federated/FederatedShare.php2
-rw-r--r--lib/Model/Federated/RemoteInstance.php7
-rw-r--r--lib/Model/FederatedUser.php53
-rw-r--r--lib/Model/ManagedModel.php2
-rw-r--r--lib/Model/Member.php16
-rw-r--r--lib/Model/Membership.php10
-rw-r--r--lib/Model/ModelManager.php11
-rw-r--r--lib/Model/Probes/CircleProbe.php6
-rw-r--r--lib/Model/Probes/MemberProbe.php31
-rw-r--r--lib/Model/Probes/Probe.php (renamed from lib/Model/Probes/BasicProbe.php)27
-rw-r--r--lib/Service/CircleService.php29
-rw-r--r--lib/Service/ConfigService.php4
-rw-r--r--lib/Service/FederatedEventService.php30
-rw-r--r--lib/Service/FederatedUserService.php9
-rw-r--r--lib/Service/MemberService.php4
-rw-r--r--lib/Service/MembershipService.php9
69 files changed, 475 insertions, 1480 deletions
diff --git a/composer.lock b/composer.lock
index 9b4cd1cb..f2443c9b 100644
--- a/composer.lock
+++ b/composer.lock
@@ -131,21 +131,21 @@
},
{
"name": "composer/xdebug-handler",
- "version": "2.0.1",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496"
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496",
- "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
+ "psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
"phpstan/phpstan": "^0.12.55",
@@ -175,7 +175,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/2.0.1"
+ "source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
},
"funding": [
{
@@ -191,20 +191,20 @@
"type": "tidelift"
}
],
- "time": "2021-05-05T19:37:51+00:00"
+ "time": "2021-07-31T17:03:58+00:00"
},
{
"name": "doctrine/annotations",
- "version": "1.13.1",
+ "version": "1.13.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
- "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f"
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f",
- "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08",
"shasum": ""
},
"require": {
@@ -261,9 +261,9 @@
],
"support": {
"issues": "https://github.com/doctrine/annotations/issues",
- "source": "https://github.com/doctrine/annotations/tree/1.13.1"
+ "source": "https://github.com/doctrine/annotations/tree/1.13.2"
},
- "time": "2021-05-16T18:07:53+00:00"
+ "time": "2021-08-05T19:00:23+00:00"
},
{
"name": "doctrine/instantiator",
@@ -416,16 +416,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v2.19.0",
+ "version": "v2.19.1",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
- "reference": "d5b8a9d852b292c2f8a035200fa6844b1f82300b"
+ "reference": "1fa4af92841f67362c053728989b262fba8eb1ec"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/d5b8a9d852b292c2f8a035200fa6844b1f82300b",
- "reference": "d5b8a9d852b292c2f8a035200fa6844b1f82300b",
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/1fa4af92841f67362c053728989b262fba8eb1ec",
+ "reference": "1fa4af92841f67362c053728989b262fba8eb1ec",
"shasum": ""
},
"require": {
@@ -513,7 +513,7 @@
"description": "A tool to automatically fix PHP code style",
"support": {
"issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues",
- "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.0"
+ "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.1"
},
"funding": [
{
@@ -521,7 +521,7 @@
"type": "github"
}
],
- "time": "2021-05-03T21:43:24+00:00"
+ "time": "2021-08-02T17:52:09+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -1389,16 +1389,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.7",
+ "version": "9.5.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5"
+ "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0dc8b6999c937616df4fb046792004b33fd31c5",
- "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/191768ccd5c85513b4068bdbe99bb6390c7d54fb",
+ "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb",
"shasum": ""
},
"require": {
@@ -1410,7 +1410,7 @@
"ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.1",
+ "phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
"phpspec/prophecy": "^1.12.1",
@@ -1476,7 +1476,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.7"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.8"
},
"funding": [
{
@@ -1488,7 +1488,7 @@
"type": "github"
}
],
- "time": "2021-07-19T06:14:47+00:00"
+ "time": "2021-07-31T15:17:34+00:00"
},
{
"name": "psr/cache",
@@ -2540,7 +2540,6 @@
"type": "github"
}
],
- "abandoned": true,
"time": "2020-09-28T06:45:17+00:00"
},
{
@@ -2654,16 +2653,16 @@
},
{
"name": "symfony/console",
- "version": "v5.3.4",
+ "version": "v5.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "ebd610dacd40d75b6a12bf64b5ccd494fc7d6ab1"
+ "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/ebd610dacd40d75b6a12bf64b5ccd494fc7d6ab1",
- "reference": "ebd610dacd40d75b6a12bf64b5ccd494fc7d6ab1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
+ "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
"shasum": ""
},
"require": {
@@ -2733,7 +2732,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.3.4"
+ "source": "https://github.com/symfony/console/tree/v5.3.6"
},
"funding": [
{
@@ -2749,7 +2748,7 @@
"type": "tidelift"
}
],
- "time": "2021-07-26T16:33:26+00:00"
+ "time": "2021-07-27T19:10:22+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -3257,16 +3256,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab"
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
"shasum": ""
},
"require": {
@@ -3318,7 +3317,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
},
"funding": [
{
@@ -3334,7 +3333,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
@@ -3422,16 +3421,16 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1"
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
"shasum": ""
},
"require": {
@@ -3482,7 +3481,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
},
"funding": [
{
@@ -3498,7 +3497,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:27:20+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-php70",
@@ -3725,16 +3724,16 @@
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
"shasum": ""
},
"require": {
@@ -3788,7 +3787,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
},
"funding": [
{
@@ -3804,7 +3803,7 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-07-28T13:41:28+00:00"
},
{
"name": "symfony/process",
@@ -4094,16 +4093,16 @@
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -4132,7 +4131,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/master"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
},
"funding": [
{
@@ -4140,7 +4139,7 @@
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
+ "time": "2021-07-28T10:34:58+00:00"
},
{
"name": "webmozart/assert",
diff --git a/lib/CirclesManager.php b/lib/CirclesManager.php
index 863bc7ae..468b7489 100644
--- a/lib/CirclesManager.php
+++ b/lib/CirclesManager.php
@@ -44,7 +44,6 @@ use OCA\Circles\Exceptions\InitiatorNotConfirmedException;
use OCA\Circles\Exceptions\InitiatorNotFoundException;
use OCA\Circles\Exceptions\InvalidIdException;
use OCA\Circles\Exceptions\MemberNotFoundException;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Exceptions\OwnerNotFoundException;
use OCA\Circles\Exceptions\RemoteInstanceException;
use OCA\Circles\Exceptions\RemoteNotFoundException;
@@ -62,6 +61,11 @@ use OCA\Circles\Service\CircleService;
use OCA\Circles\Service\FederatedUserService;
use OCA\Circles\Service\MemberService;
use OCA\Circles\Service\MembershipService;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\ICirclesManager;
+use OCP\Circles\Model\IEntity;
+use OCP\Circles\Model\IFederatedUser;
+use OCP\Circles\Model\IMember;
use OCP\IUserSession;
/**
@@ -69,7 +73,7 @@ use OCP\IUserSession;
*
* @package OCA\Circles
*/
-class CirclesManager {
+class CirclesManager implements ICirclesManager {
/** @var CirclesQueryHelper */
@@ -152,6 +156,29 @@ class CirclesManager {
}
}
+
+ /**
+ * @param string $userId
+ *
+ * @throws CircleNotFoundException
+ * @throws FederatedItemException
+ * @throws FederatedUserException
+ * @throws FederatedUserNotFoundException
+ * @throws InvalidIdException
+ * @throws MemberNotFoundException
+ * @throws OwnerNotFoundException
+ * @throws RemoteInstanceException
+ * @throws RemoteNotFoundException
+ * @throws RemoteResourceNotFoundException
+ * @throws RequestBuilderException
+ * @throws SingleCircleNotFoundException
+ * @throws UnknownRemoteException
+ * @throws UserTypeNotFoundException
+ */
+ public function startUserSession(string $userId): void {
+ $this->startSession($this->getFederatedUser($userId, Member::TYPE_USER));
+ }
+
/**
*
*/
@@ -204,12 +231,27 @@ class CirclesManager {
/**
- * @return IFederatedUser
+ * @return IFederatedUser|null
*/
- public function getCurrentFederatedUser(): IFederatedUser {
+ public function getCurrentFederatedUser(): ?IFederatedUser {
return $this->federatedUserService->getCurrentUser();
}
+ /**
+ * @return bool
+ */
+ public function hasCurrentFederatedUser(): bool {
+ return $this->federatedUserService->hasCurrentUser();
+ }
+
+ /**
+ * @return bool
+ */
+ public function isSessionInitiated(): bool {
+ return $this->federatedUserService->canBypassCurrentUserCondition()
+ || $this->federatedUserService->hasCurrentUser();
+ }
+
/**
* @return CirclesQueryHelper
@@ -397,12 +439,12 @@ class CirclesManager {
/**
- * @param Circle $circle
+ * @param IEntity $entity
*
* @return string
*/
- public function getDefinition(Circle $circle): string {
- return $this->circleService->getDefinition($circle);
+ public function getDefinition(IEntity $entity): string {
+ return $this->circleService->getDefinition($entity);
}
@@ -424,11 +466,21 @@ class CirclesManager {
/**
- * WIP
- *
- * @param string $memberId
+ * @param string $circleId
+ * @param string $singleId
*
- * @return Member
+ * @return IMember
+ */
+ public function getMember(string $circleId, string $singleId): Member {
+// $this->memberService->getMember($circleId, $singleId);
+ }
+
+ /**
+ * @throws RequestBuilderException
+ * @throws MemberNotFoundException
+ * @throws InitiatorNotFoundException
*/
-// public function getMemberById(string $memberId): Member {
+ public function getMemberById(string $memberId): Member {
+ $this->memberService->getMemberById($memberId);
+ }
}
diff --git a/lib/CirclesQueryHelper.php b/lib/CirclesQueryHelper.php
index 5dbf0cd4..7354b2a3 100644
--- a/lib/CirclesQueryHelper.php
+++ b/lib/CirclesQueryHelper.php
@@ -99,11 +99,12 @@ class CirclesQueryHelper {
string $field,
bool $fullDetails = false
): ICompositeExpression {
- $session = $this->federatedUserService->getCurrentUser();
- if (is_null($session)) {
+ if (!$this->federatedUserService->hasCurrentUser()) {
throw new FederatedUserNotFoundException('session not initiated');
}
+ $session = $this->federatedUserService->getCurrentUser();
+
$this->queryBuilder->setDefaultSelectAlias($alias);
$this->queryBuilder->setOptions(
[CoreQueryBuilder::HELPER],
diff --git a/lib/Command/CirclesMaintenance.php b/lib/Command/CirclesMaintenance.php
index d9e97fcc..0a0c703f 100644
--- a/lib/Command/CirclesMaintenance.php
+++ b/lib/Command/CirclesMaintenance.php
@@ -129,7 +129,7 @@ class CirclesMaintenance extends Base {
}
$output->writeln('');
- $output->writeln('<error>WARNING! This operation is not reversible.</error>');
+ $output->writeln('<error>WARNING! This operation is NOT reversible and might AFFECT OTHER APPS.</error>');
$question = new Question(
'<comment>Please confirm this destructive operation by typing \'' . $action
diff --git a/lib/Db/CircleRequest.php b/lib/Db/CircleRequest.php
index 70ad32ef..316c07c8 100644
--- a/lib/Db/CircleRequest.php
+++ b/lib/Db/CircleRequest.php
@@ -37,11 +37,11 @@ use OCA\Circles\Exceptions\InvalidIdException;
use OCA\Circles\Exceptions\OwnerNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\SingleCircleNotFoundException;
-use OCA\Circles\IFederatedUser;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\FederatedUser;
use OCA\Circles\Model\Member;
use OCA\Circles\Model\Probes\CircleProbe;
+use OCP\Circles\Model\IFederatedUser;
/**
* Class CircleRequest
@@ -355,7 +355,12 @@ class CircleRequest extends CircleRequestBuilder {
}
if (!is_null($initiator)) {
- $qb->setOptions([CoreQueryBuilder::CIRCLE], ['getData' => true]);
+ $qb->setOptions(
+ [CoreQueryBuilder::CIRCLE], [
+ 'getData' => true,
+ 'initiatorDirectMember' => true
+ ]
+ );
$qb->limitToInitiator(CoreQueryBuilder::CIRCLE, $initiator);
}
diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php
index 7122a38f..a5b7fcd3 100644
--- a/lib/Db/CoreQueryBuilder.php
+++ b/lib/Db/CoreQueryBuilder.php
@@ -36,14 +36,14 @@ use ArtificialOwl\MySmallPhpTools\Traits\TArrayTools;
use Doctrine\DBAL\Query\QueryBuilder;
use OC;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedModel;
-use OCA\Circles\IFederatedUser;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\RemoteInstance;
use OCA\Circles\Model\FederatedUser;
use OCA\Circles\Model\Member;
use OCA\Circles\Model\Probes\CircleProbe;
use OCA\Circles\Service\ConfigService;
+use OCP\Circles\Model\IFederatedModel;
+use OCP\Circles\Model\IFederatedUser;
use OCP\DB\QueryBuilder\ICompositeExpression;
use OCP\DB\QueryBuilder\IQueryBuilder;
@@ -126,6 +126,7 @@ class CoreQueryBuilder extends NC22ExtendedQueryBuilder {
self::MEMBERSHIPS => [
self::CONFIG
],
+ self::DIRECT_INITIATOR,
self::INITIATOR => [
self::OPTIONS => [
'minimumLevel' => Member::LEVEL_MEMBER
@@ -1156,13 +1157,36 @@ class CoreQueryBuilder extends NC22ExtendedQueryBuilder {
)
);
+
+ $listMembershipCircleAlias = [$aliasMembership];
+ if ($this->getBool('initiatorDirectMember', $options, false)) {
+ try {
+ $aliasDirectInitiator = $this->generateAlias($alias, self::DIRECT_INITIATOR, $options);
+ $listMembershipCircleAlias[] = $aliasDirectInitiator;
+ } catch (RequestBuilderException $e) {
+ }
+ }
+
try {
$aliasMembershipCircle = $this->generateAlias($aliasMembership, self::CONFIG, $options);
+ $orXMembershipCircle = $expr->orX();
+ array_map(
+ function (string $alias) use ($orXMembershipCircle, $aliasMembershipCircle) {
+ $orXMembershipCircle->add(
+ $this->expr()->eq(
+ $alias . '.circle_id',
+ $aliasMembershipCircle . '.unique_id'
+ )
+ );
+ },
+ $listMembershipCircleAlias
+ );
+
$this->leftJoin(
$aliasMembership,
CoreRequestBuilder::TABLE_CIRCLE,
$aliasMembershipCircle,
- $expr->eq($aliasMembership . '.circle_id', $aliasMembershipCircle . '.unique_id')
+ $orXMembershipCircle
);
} catch (RequestBuilderException $e) {
}
@@ -1264,13 +1288,35 @@ class CoreQueryBuilder extends NC22ExtendedQueryBuilder {
$minimumLevel = $this->getInt('minimumLevel', $options);
$andXMember = $expr->andX();
- $andXMember->add(
- $this->orXCheckLevel($levelCheck, $minimumLevel)
+ $orXLevelCheck = $expr->orX();
+// $andXMember->add($this->orXCheckLevel($levelCheck, $minimumLevel));
+// $expr = $this->expr();
+// $orX = $expr->orX();
+// foreach ($aliases as $alias) {
+// $orX->add($expr->gte($alias . '.level', $this->createNamedParameter($level)));
+// }
+//
+// return $orX;
+
+ array_map(
+ function (string $alias) use ($orXLevelCheck, $minimumLevel) {
+ $orXLevelCheck->add(
+ $this->expr()->gte(
+ $alias . '.level',
+ $this->createNamedParameter($minimumLevel)
+ )
+ );
+ },
+ $levelCheck
);
+ $andXMember->add($orXLevelCheck);
if (!$this->getBool('includePersonalCircles', $options, false)) {
$andXMember->add(
- $this->exprFilterBitwise('config', Circle::CFG_PERSONAL, $aliasMembershipCircle)
+ $this->exprFilterBitwise(
+ 'config', Circle::CFG_PERSONAL,
+ $aliasMembershipCircle
+ )
);
}
$orX->add($andXMember);
@@ -1627,19 +1673,19 @@ class CoreQueryBuilder extends NC22ExtendedQueryBuilder {
}
- /**
- * @param array $aliases
- * @param int $level
- *
- * @return ICompositeExpression
- */
- private function orXCheckLevel(array $aliases, int $level): ICompositeExpression {
- $expr = $this->expr();
- $orX = $expr->orX();
- foreach ($aliases as $alias) {
- $orX->add($expr->gte($alias . '.level', $this->createNamedParameter($level)));
- }
-
- return $orX;
- }
+// /**
+// * @param array $aliases
+// * @param int $level
+// *
+// * @return ICompositeExpression
+// */
+// private function orXCheckLevel(array $aliases, int $level): ICompositeExpression {
+// $expr = $this->expr();
+// $orX = $expr->orX();
+// foreach ($aliases as $alias) {
+// $orX->add($expr->gte($alias . '.level', $this->createNamedParameter($level)));
+// }
+//
+// return $orX;
+// }
}
diff --git a/lib/Db/MemberRequest.php b/lib/Db/MemberRequest.php
index 46372adf..3b80fed1 100644
--- a/lib/Db/MemberRequest.php
+++ b/lib/Db/MemberRequest.php
@@ -34,7 +34,7 @@ namespace OCA\Circles\Db;
use OCA\Circles\Exceptions\InvalidIdException;
use OCA\Circles\Exceptions\MemberNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedUser;
+use OCP\Circles\Model\IFederatedUser;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\FederatedUser;
use OCA\Circles\Model\Member;
diff --git a/lib/Db/MemberRequestBuilder.php b/lib/Db/MemberRequestBuilder.php
index f61d610c..a5e6ebc3 100644
--- a/lib/Db/MemberRequestBuilder.php
+++ b/lib/Db/MemberRequestBuilder.php
@@ -34,7 +34,7 @@ namespace OCA\Circles\Db;
use ArtificialOwl\MySmallPhpTools\Exceptions\RowNotFoundException;
use OCA\Circles\Exceptions\MemberNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedUser;
+use OCP\Circles\Model\IFederatedUser;
use OCA\Circles\Model\FederatedUser;
use OCA\Circles\Model\Member;
diff --git a/lib/Db/MembershipRequest.php b/lib/Db/MembershipRequest.php
index 0d1f5ccd..bb9d0735 100644
--- a/lib/Db/MembershipRequest.php
+++ b/lib/Db/MembershipRequest.php
@@ -31,7 +31,7 @@ declare(strict_types=1);
namespace OCA\Circles\Db;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Model\FederatedUser;
use OCA\Circles\Model\Membership;
use OCP\DB\QueryBuilder\IQueryBuilder;
diff --git a/lib/Db/MembershipRequestBuilder.php b/lib/Db/MembershipRequestBuilder.php
index 1363d692..7f7a71f8 100644
--- a/lib/Db/MembershipRequestBuilder.php
+++ b/lib/Db/MembershipRequestBuilder.php
@@ -32,7 +32,7 @@ declare(strict_types=1);
namespace OCA\Circles\Db;
use ArtificialOwl\MySmallPhpTools\Exceptions\RowNotFoundException;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Model\Membership;
/**
diff --git a/lib/Db/MountRequest.php b/lib/Db/MountRequest.php
index f0f064a2..5518f2c0 100644
--- a/lib/Db/MountRequest.php
+++ b/lib/Db/MountRequest.php
@@ -33,7 +33,7 @@ namespace OCA\Circles\Db;
use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedUser;
+use OCP\Circles\Model\IFederatedUser;
use OCA\Circles\Model\Mount;
/**
diff --git a/lib/FederatedItems/CircleConfig.php b/lib/FederatedItems/CircleConfig.php
index f850e1d3..a26bd31e 100644
--- a/lib/FederatedItems/CircleConfig.php
+++ b/lib/FederatedItems/CircleConfig.php
@@ -35,8 +35,8 @@ use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Deserialize;
use OCA\Circles\Db\CircleRequest;
use OCA\Circles\Exceptions\FederatedItemBadRequestException;
use OCA\Circles\Exceptions\FederatedItemException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Helpers\MemberHelper;
@@ -129,7 +129,7 @@ class CircleConfig implements
$event->getData()->sBool('_broadcastAsFederated', true);
}
- if (!$confirmed || $config > Circle::$DEF_CFG_MAX) {
+ if (!$confirmed || $config > Circle::CFG_MAX) {
throw new FederatedItemBadRequestException('Configuration value is not valid');
}
diff --git a/lib/FederatedItems/CircleCreate.php b/lib/FederatedItems/CircleCreate.php
index eab1d4bc..f2295167 100644
--- a/lib/FederatedItems/CircleCreate.php
+++ b/lib/FederatedItems/CircleCreate.php
@@ -39,10 +39,10 @@ use OCA\Circles\Exceptions\FederatedEventDSyncException;
use OCA\Circles\Exceptions\InvalidIdException;
use OCA\Circles\Exceptions\MemberNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemCircleCheckNotRequired;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMustBeInitializedLocally;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemCircleCheckNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMustBeInitializedLocally;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Service\CircleService;
use OCA\Circles\Service\EventService;
diff --git a/lib/FederatedItems/CircleDestroy.php b/lib/FederatedItems/CircleDestroy.php
index bc2d7616..1579f7d4 100644
--- a/lib/FederatedItems/CircleDestroy.php
+++ b/lib/FederatedItems/CircleDestroy.php
@@ -35,10 +35,10 @@ use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Deserialize;
use OCA\Circles\Db\CircleRequest;
use OCA\Circles\Db\MemberRequest;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberEmpty;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberEmpty;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Helpers\MemberHelper;
use OCA\Circles\Service\EventService;
diff --git a/lib/FederatedItems/CircleEdit.php b/lib/FederatedItems/CircleEdit.php
index 2a73b37b..b74f227d 100644
--- a/lib/FederatedItems/CircleEdit.php
+++ b/lib/FederatedItems/CircleEdit.php
@@ -35,7 +35,7 @@ use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Deserialize;
use OCA\Circles\Db\CircleRequest;
use OCA\Circles\Exceptions\CircleNameTooShortException;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItem;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Helpers\MemberHelper;
use OCA\Circles\Service\CircleService;
diff --git a/lib/FederatedItems/CircleJoin.php b/lib/FederatedItems/CircleJoin.php
index d98d2a9a..27a9598d 100644
--- a/lib/FederatedItems/CircleJoin.php
+++ b/lib/FederatedItems/CircleJoin.php
@@ -45,12 +45,12 @@ use OCA\Circles\Exceptions\MembersLimitException;
use OCA\Circles\Exceptions\RemoteNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\UnknownRemoteException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemInitiatorMembershipNotRequired;
-use OCA\Circles\IFederatedItemMemberCheckNotRequired;
-use OCA\Circles\IFederatedItemMemberOptional;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemInitiatorMembershipNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemMemberCheckNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemMemberOptional;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\ManagedModel;
diff --git a/lib/FederatedItems/CircleLeave.php b/lib/FederatedItems/CircleLeave.php
index 5b40d6df..7beb446b 100644
--- a/lib/FederatedItems/CircleLeave.php
+++ b/lib/FederatedItems/CircleLeave.php
@@ -39,11 +39,11 @@ use OCA\Circles\Db\MemberRequest;
use OCA\Circles\Exceptions\FederatedItemException;
use OCA\Circles\Exceptions\MemberNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemInitiatorMembershipNotRequired;
-use OCA\Circles\IFederatedItemMemberOptional;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemInitiatorMembershipNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemMemberOptional;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\FederatedUser;
diff --git a/lib/FederatedItems/CircleSettings.php b/lib/FederatedItems/CircleSettings.php
index 4f58f588..31ce629b 100644
--- a/lib/FederatedItems/CircleSettings.php
+++ b/lib/FederatedItems/CircleSettings.php
@@ -33,7 +33,7 @@ namespace OCA\Circles\FederatedItems;
use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Deserialize;
use OCA\Circles\Db\CircleRequest;
-use OCA\Circles\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItem;
use OCA\Circles\Model\Federated\FederatedEvent;
/**
diff --git a/lib/FederatedItems/Files/FileShare.php b/lib/FederatedItems/Files/FileShare.php
index 3e18e252..27b813f0 100644
--- a/lib/FederatedItems/Files/FileShare.php
+++ b/lib/FederatedItems/Files/FileShare.php
@@ -38,10 +38,10 @@ use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Logger;
use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
use OCA\Circles\Db\MountRequest;
use OCA\Circles\Exceptions\CircleNotFoundException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberEmpty;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberEmpty;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Mount;
use OCA\Circles\Model\ShareWrapper;
diff --git a/lib/FederatedItems/Files/FileUnshare.php b/lib/FederatedItems/Files/FileUnshare.php
index d9520651..f8907c6a 100644
--- a/lib/FederatedItems/Files/FileUnshare.php
+++ b/lib/FederatedItems/Files/FileUnshare.php
@@ -37,10 +37,10 @@ use ArtificialOwl\MySmallPhpTools\Exceptions\UnknownTypeException;
use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Logger;
use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
use OCA\Circles\Db\MountRequest;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberEmpty;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberEmpty;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\ShareWrapper;
use OCA\Circles\Service\ConfigService;
diff --git a/lib/FederatedItems/ItemLock.php b/lib/FederatedItems/ItemLock.php
index 0babe32b..c76a1273 100644
--- a/lib/FederatedItems/ItemLock.php
+++ b/lib/FederatedItems/ItemLock.php
@@ -35,8 +35,8 @@ use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
use OCA\Circles\Db\ShareLockRequest;
use OCA\Circles\Exceptions\FederatedShareNotFoundException;
use OCA\Circles\Exceptions\InvalidIdException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemDataRequestOnly;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemDataRequestOnly;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Federated\FederatedShare;
diff --git a/lib/FederatedItems/LoopbackTest.php b/lib/FederatedItems/LoopbackTest.php
index fce737a5..8c7f7281 100644
--- a/lib/FederatedItems/LoopbackTest.php
+++ b/lib/FederatedItems/LoopbackTest.php
@@ -32,9 +32,9 @@ declare(strict_types=1);
namespace OCA\Circles\FederatedItems;
use ArtificialOwl\MySmallPhpTools\Model\SimpleDataStore;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemLoopbackTest;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemLoopbackTest;
use OCA\Circles\Model\Federated\FederatedEvent;
/**
diff --git a/lib/FederatedItems/MassiveMemberAdd.php b/lib/FederatedItems/MassiveMemberAdd.php
index 38830e45..9799f7b1 100644
--- a/lib/FederatedItems/MassiveMemberAdd.php
+++ b/lib/FederatedItems/MassiveMemberAdd.php
@@ -34,10 +34,10 @@ namespace OCA\Circles\FederatedItems;
use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Logger;
use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
use Exception;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberEmpty;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberEmpty;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Helpers\MemberHelper;
use OCA\Circles\Model\Member;
diff --git a/lib/FederatedItems/MemberDisplayName.php b/lib/FederatedItems/MemberDisplayName.php
index 22807795..77d01f77 100644
--- a/lib/FederatedItems/MemberDisplayName.php
+++ b/lib/FederatedItems/MemberDisplayName.php
@@ -36,9 +36,9 @@ use OCA\Circles\Db\MemberRequest;
use OCA\Circles\Exceptions\FederatedItemBadRequestException;
use OCA\Circles\Exceptions\FederatedItemException;
use OCA\Circles\Exceptions\MemberLevelException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberEmpty;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberEmpty;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Service\ConfigService;
use OCA\Circles\Service\EventService;
diff --git a/lib/FederatedItems/MemberLevel.php b/lib/FederatedItems/MemberLevel.php
index 22ea6cc0..920a37f8 100644
--- a/lib/FederatedItems/MemberLevel.php
+++ b/lib/FederatedItems/MemberLevel.php
@@ -37,9 +37,9 @@ use OCA\Circles\Exceptions\FederatedItemBadRequestException;
use OCA\Circles\Exceptions\FederatedItemException;
use OCA\Circles\Exceptions\MemberLevelException;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberRequired;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberRequired;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Helpers\MemberHelper;
diff --git a/lib/FederatedItems/MemberRemove.php b/lib/FederatedItems/MemberRemove.php
index 2c730d8b..aaea007c 100644
--- a/lib/FederatedItems/MemberRemove.php
+++ b/lib/FederatedItems/MemberRemove.php
@@ -34,10 +34,10 @@ namespace OCA\Circles\FederatedItems;
use OCA\Circles\Db\MemberRequest;
use OCA\Circles\Exceptions\FederatedItemException;
use OCA\Circles\Exceptions\RequestBuilderException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberRequired;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberRequired;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Helpers\MemberHelper;
use OCA\Circles\Service\EventService;
diff --git a/lib/FederatedItems/SharedItemsSync.php b/lib/FederatedItems/SharedItemsSync.php
index c69323a5..f0232549 100644
--- a/lib/FederatedItems/SharedItemsSync.php
+++ b/lib/FederatedItems/SharedItemsSync.php
@@ -32,8 +32,8 @@ declare(strict_types=1);
namespace OCA\Circles\FederatedItems;
use ArtificialOwl\MySmallPhpTools\Model\SimpleDataStore;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemLimitedToInstanceWithMembership;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemLimitedToInstanceWithMembership;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Service\CircleEventService;
diff --git a/lib/FederatedItems/SingleMemberAdd.php b/lib/FederatedItems/SingleMemberAdd.php
index a690aab7..011e14b2 100644
--- a/lib/FederatedItems/SingleMemberAdd.php
+++ b/lib/FederatedItems/SingleMemberAdd.php
@@ -54,11 +54,11 @@ use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\SingleCircleNotFoundException;
use OCA\Circles\Exceptions\UnknownRemoteException;
use OCA\Circles\Exceptions\UserTypeNotFoundException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemMemberCheckNotRequired;
-use OCA\Circles\IFederatedItemMemberRequired;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemMemberCheckNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemMemberRequired;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Federated\RemoteInstance;
diff --git a/lib/IBroadcaster.php b/lib/IBroadcaster.php
deleted file mode 100644
index 8d2baf5a..00000000
--- a/lib/IBroadcaster.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-
-namespace OCA\Circles;
-
-use OCA\Circles\Model\DeprecatedCircle;
-use OCA\Circles\Model\DeprecatedMember;
-use OCA\Circles\Model\SharingFrame;
-
-interface IBroadcaster {
-
- /**
- * Init the broadcaster
- */
- public function init();
-
-
- /**
- * Init the broadcaster
- */
- public function end();
-
-
- /**
- * broadcast a creation of a Share to a circle.
- *
- * @param SharingFrame $frame
- * @param DeprecatedCircle $circle
- */
- public function createShareToCircle(SharingFrame $frame, DeprecatedCircle $circle);
-
-
- /**
- * broadcast an edition of $share to $circleId.
- *
- * @param SharingFrame $frame
- * @param DeprecatedCircle $circle
- */
- public function editShareToCircle(SharingFrame $frame, DeprecatedCircle $circle);
-
-
- /**
- * broadcast a destruction of $share to $circleId.
- *
- * @param SharingFrame $frame
- * @param DeprecatedCircle $circle
- */
- public function deleteShareToCircle(SharingFrame $frame, DeprecatedCircle $circle);
-
-
- /**
- * broadcast a creation of a Share to a $userId.
- *
- * @param SharingFrame $frame
- * @param DeprecatedMember $member
- */
- public function createShareToMember(SharingFrame $frame, DeprecatedMember $member);
-
-
- /**
- * broadcast an edition of $share to $userId.
- *
- * @param SharingFrame $frame
- * @param DeprecatedMember $member
- */
- public function editShareToMember(SharingFrame $frame, DeprecatedMember $member);
-
-
- /**
- * broadcast a destruction of $share to $userId.
- *
- * @param SharingFrame $frame
- * @param DeprecatedMember $member
- */
- public function deleteShareToMember(SharingFrame $frame, DeprecatedMember $member);
-}
diff --git a/lib/IEntity.php b/lib/IEntity.php
deleted file mode 100644
index 9826609f..00000000
--- a/lib/IEntity.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-use OCA\Circles\Exceptions\MembershipNotFoundException;
-use OCA\Circles\Model\Membership;
-
-/**
- * Interface IMemberships
- *
- * @package OCA\Circles
- */
-interface IEntity {
-
- /**
- * @return string
- */
- public function getSingleId(): string;
-
- /**
- * @param Membership[] $memberships
- *
- * @return $this
- */
- public function setMemberships(array $memberships): self;
-
- /**
- * @return Membership[]
- */
- public function getMemberships(): array;
-
- /**
- * @param string $singleId
- * @param bool $detailed
- *
- * @return Membership
- * @throws MembershipNotFoundException
- */
- public function getLink(string $singleId, bool $detailed = false): Membership;
-}
diff --git a/lib/IFederatedItem.php b/lib/IFederatedItem.php
deleted file mode 100644
index d611fcc9..00000000
--- a/lib/IFederatedItem.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-use OCA\Circles\Exceptions\FederatedItemException;
-use OCA\Circles\Model\Federated\FederatedEvent;
-
-/**
- * Interface IFederatedItem
- *
- * @package OCA\Circles
- */
-interface IFederatedItem {
-
- /**
- * @param FederatedEvent $event
- *
- * @throws FederatedItemException
- */
- public function verify(FederatedEvent $event): void;
-
- /**
- * @param FederatedEvent $event
- */
- public function manage(FederatedEvent $event): void;
-
- /**
- * @param FederatedEvent $event
- * @param array $results
- */
- public function result(FederatedEvent $event, array $results): void;
-}
diff --git a/lib/IFederatedItemAsyncProcess.php b/lib/IFederatedItemAsyncProcess.php
deleted file mode 100644
index b94a6fb2..00000000
--- a/lib/IFederatedItemAsyncProcess.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemAsyncProcess
- *
- * @package OCA\Circles
- */
-interface IFederatedItemAsyncProcess {
-}
diff --git a/lib/IFederatedItemCircleCheckNotRequired.php b/lib/IFederatedItemCircleCheckNotRequired.php
deleted file mode 100644
index d0a29d9f..00000000
--- a/lib/IFederatedItemCircleCheckNotRequired.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemBypassLocalCircleCheck
- *
- * @package OCA\Circles
- */
-interface IFederatedItemCircleCheckNotRequired {
-}
diff --git a/lib/IFederatedItemDataRequestOnly.php b/lib/IFederatedItemDataRequestOnly.php
deleted file mode 100644
index 23bab1c0..00000000
--- a/lib/IFederatedItemDataRequestOnly.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemRequestOnly
- *
- * @package OCA\Circles
- */
-interface IFederatedItemDataRequestOnly {
-}
diff --git a/lib/IFederatedItemHighSeverity.php b/lib/IFederatedItemHighSeverity.php
deleted file mode 100644
index a33b0bcf..00000000
--- a/lib/IFederatedItemHighSeverity.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemHighSeverity
- *
- * @package OCA\Circles
- */
-interface IFederatedItemHighSeverity {
-}
diff --git a/lib/IFederatedItemInitiatorCheckNotRequired.php b/lib/IFederatedItemInitiatorCheckNotRequired.php
deleted file mode 100644
index 51ea6ca4..00000000
--- a/lib/IFederatedItemInitiatorCheckNotRequired.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemBypassInitiatorCheck
- *
- * @package OCA\Circles
- */
-interface IFederatedItemInitiatorCheckNotRequired {
-}
diff --git a/lib/IFederatedItemInitiatorMembershipNotRequired.php b/lib/IFederatedItemInitiatorMembershipNotRequired.php
deleted file mode 100644
index b310dcf7..00000000
--- a/lib/IFederatedItemInitiatorMembershipNotRequired.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemInitiatorMembershipNotRequired
- *
- * @package OCA\Circles
- */
-interface IFederatedItemInitiatorMembershipNotRequired {
-}
diff --git a/lib/IFederatedItemLimitedToInstanceWithMembership.php b/lib/IFederatedItemLimitedToInstanceWithMembership.php
deleted file mode 100644
index 00333aa5..00000000
--- a/lib/IFederatedItemLimitedToInstanceWithMembership.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemInstanceMember
- *
- * @package OCA\Circles
- */
-interface IFederatedItemLimitedToInstanceWithMembership {
-}
diff --git a/lib/IFederatedItemLoopbackTest.php b/lib/IFederatedItemLoopbackTest.php
deleted file mode 100644
index a14e1081..00000000
--- a/lib/IFederatedItemLoopbackTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemLoopbackTest
- *
- * @package OCA\Circles
- */
-interface IFederatedItemLoopbackTest {
-}
diff --git a/lib/IFederatedItemMemberCheckNotRequired.php b/lib/IFederatedItemMemberCheckNotRequired.php
deleted file mode 100644
index 16add2bd..00000000
--- a/lib/IFederatedItemMemberCheckNotRequired.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemBypassLocalCircleCheck
- *
- * @package OCA\Circles
- */
-interface IFederatedItemMemberCheckNotRequired {
-}
diff --git a/lib/IFederatedItemMemberEmpty.php b/lib/IFederatedItemMemberEmpty.php
deleted file mode 100644
index a3bf8398..00000000
--- a/lib/IFederatedItemMemberEmpty.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemMustHaveMember
- *
- * @package OCA\Circles
- */
-interface IFederatedItemMemberEmpty {
-}
diff --git a/lib/IFederatedItemMemberOptional.php b/lib/IFederatedItemMemberOptional.php
deleted file mode 100644
index 90c5f37a..00000000
--- a/lib/IFederatedItemMemberOptional.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemMustHaveMember
- *
- * @package OCA\Circles
- */
-interface IFederatedItemMemberOptional {
-}
diff --git a/lib/IFederatedItemMemberRequired.php b/lib/IFederatedItemMemberRequired.php
deleted file mode 100644
index affcc5e8..00000000
--- a/lib/IFederatedItemMemberRequired.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemMustHaveMember
- *
- * @package OCA\Circles
- */
-interface IFederatedItemMemberRequired {
-}
diff --git a/lib/IFederatedItemMustBeInitializedLocally.php b/lib/IFederatedItemMustBeInitializedLocally.php
deleted file mode 100644
index 04f52b2a..00000000
--- a/lib/IFederatedItemMustBeInitializedLocally.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemMustBeInitializedLocally
- *
- * @package OCA\Circles
- */
-interface IFederatedItemMustBeInitializedLocally {
-}
diff --git a/lib/IFederatedItemShareManagement.php b/lib/IFederatedItemShareManagement.php
deleted file mode 100644
index 34b9a6eb..00000000
--- a/lib/IFederatedItemShareManagement.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-use OCA\Circles\Model\Federated\FederatedEvent;
-
-/**
- * Interface IFederatedItemShareManagement
- *
- * @package OCA\Circles
- */
-interface IFederatedItemShareManagement {
-
-
- /**
- * /!\ un Item est sharable a un Federated Circle seulement depuis l'instance qui lock l'Item.
- *
- *
- * | Instance A | Instance B | Instance C | Instance D | Instance E |
- * | | | | | |
- * | --- Circle A --- | ---------------- | | | |
- * | | ---------------- | --- Circle C --- | ---------------- | |
- * | ---------------- | --- Circle B --- | ---------------- | | |
- * | | ---------------- | ---------------- | --- Circle D --- | ---------------- |
- * | | | | | |
- * | | | | | |
- * | Create Item1 | | | | |
- * | Lock Item1 | | | | |
- * | Share I1, Ca | Lock I1, Ia, Ca | | | |
- * | get I1 local | get I1 on Ia | | | | OK: Get Item1 pour Circle A sur Instance A
- * | | | | | |
- * | Reshare I1, Cb | Lock I1, Ia, Cb | Lock I1, Ia, Cb | | |
- * | get I1 local | get I1 on Ia | | | | OK: Get Item1 pour Circle B sur Instance A, via Instance B
- * | | | | | |
- * | Create Item2 | | | | |
- * | Lock Item2 | | | | |
- * | Share I2, CB | Lock I2, Ia, Cb | Lock I2, Ia, Cb | | |
- * | get I2 local | get I2 on Ia | get I2 on Ia | | | OK: Get Item2 pour Circle B sur Instance A, via Instance B
- * | | | | | |
- * | Create Item3 | | | | |
- * | Lock Item3 | | | | |
- * | Share I3, Ca | | | | |
- * | get I3 local | get I3 on Ia | | | | OK: Get Item3 pour Circle A sur Instance A
- * | | | | | |
- * | | Reshare I3, Cb | | | | ERROR
- * | | Reshare I2, Cc | | | | ERROR
- * | | | | | |
- * | | | | | Create Item1 | (spoof, as Item must be unique)
- * | | | | | Lock Item1 |
- * | | I1 already exist | I1 already exist | Lock I1, Ie, Cd | Share I1, Cd | fail on Ib
- * | | ERROR | ERROR | get I1 on Ie | get I1 local |
- * | | | | | |
- * | | | | * Join Circle B | |
- * | ---------------- | --- Circle B --- | ---------------- | ---------------- | |
- * | | | | shares from Ib | |
- * | | | | I1 already exist | | fail on I1
- * | | | | Lock I2, Ia, Cb | | OK: Get Item2 pour Circle B sur Instance A, via Instance B
- * | | | | | |
- * | | | | | |
- * | | | | | |
- * | | | | | |
- *
- *
- *
- *
- *
- * (on all instances) ShareLocks: itemId, singleId, instanceId, appId, circleId
- *
- * FederatedItem implements shareCreate(), shareUpdate(), shareDelete()
- * FederatedEvent have isSharable()
- *
- *
- * ////
- * ////
- * ///
- * seulement aux circles qui on un membre dont on ne peut pas reshare un object deja share a un federated circle,
- * si le owner de l'item n'est pas sur la meme instance
- *
- * instance A cree un circle A et invite instance B et instance C
- * instance B cree un circle B et invite instance A et instance C
- * instance C cree un item et le share a Circle A et a Circle B
- * instance A et instance B possede chacun 2 locks vers instance C pour le meme item via 2 Circles.
- *
- * instance A cree un circle A2 et invite instance B et instance D
- * instance A reshare item vers Circle A2 et cree un 3eme lock vers instance C via Circle A2.
- *
- * instance D tente de reshare et request instance A qui request instance C
- *
- *
- */
-
- /**
- * @param FederatedEvent $event
- */
- public function shareCreate(FederatedEvent $event): void;
-
- /**
- * @param FederatedEvent $event
- */
- public function shareUpdate(FederatedEvent $event): void;
-
- /**
- * @param FederatedEvent $event
- */
- public function shareDelete(FederatedEvent $event): void;
-}
diff --git a/lib/IFederatedItemSharedItem.php b/lib/IFederatedItemSharedItem.php
deleted file mode 100644
index 15e7cf1b..00000000
--- a/lib/IFederatedItemSharedItem.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedItemSharedItem
- *
- * @package OCA\Circles
- */
-interface IFederatedItemSharedItem {
-
- // meaning that the verify() will be run on the instance that locked the item, not on the main instance of the Circle.
-}
diff --git a/lib/IFederatedModel.php b/lib/IFederatedModel.php
deleted file mode 100644
index 0e346fe5..00000000
--- a/lib/IFederatedModel.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-/**
- * Interface IFederatedModel
- *
- * @package OCA\Circles
- */
-interface IFederatedModel {
-
- /**
- * @return string
- */
- public function getInstance(): string;
-
- /**
- * @return bool
- */
- public function isLocal(): bool;
-}
diff --git a/lib/IFederatedSync.php b/lib/IFederatedSync.php
deleted file mode 100644
index 38fe2438..00000000
--- a/lib/IFederatedSync.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-use ArtificialOwl\MySmallPhpTools\Model\SimpleDataStore;
-
-/**
- * Interface IFederatedSync
- *
- * @package OCA\Circles
- */
-interface IFederatedSync {
-
- /**
- * @param string $circleId
- *
- * @return SimpleDataStore
- */
- public function export(string $circleId): SimpleDataStore;
-
- /**
- * @param SimpleDataStore $data
- */
- public function import(SimpleDataStore $data): void;
-}
diff --git a/lib/IFederatedUser.php b/lib/IFederatedUser.php
deleted file mode 100644
index ae93ca56..00000000
--- a/lib/IFederatedUser.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-use OCA\Circles\Model\Circle;
-
-/**
- * Interface IFederatedUser
- *
- * @package OCA\Circles
- */
-interface IFederatedUser extends IFederatedModel {
-
- /**
- * @return string
- */
- public function getUserId(): string;
-
- /**
- * @return int
- */
- public function getUserType(): int;
-
- /**
- * @return string
- */
- public function getDisplayName(): string;
-
- /**
- * @return Circle
- */
- public function getBasedOn(): Circle;
-
- /**
- * @return bool
- */
- public function hasBasedOn(): bool;
-}
diff --git a/lib/IQueryProbe.php b/lib/IQueryProbe.php
deleted file mode 100644
index 971a89e5..00000000
--- a/lib/IQueryProbe.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-use OCA\Circles\Model\Circle;
-use OCA\Circles\Model\Federated\RemoteInstance;
-use OCA\Circles\Model\Member;
-
-/**
- * Interface IQueryProbe
- *
- * @package OCA\Circles
- */
-interface IQueryProbe {
-
-
- /**
- * @return int
- */
- public function getItemsOffset(): int;
-
- /**
- * @return int
- */
- public function getItemsLimit(): int;
-
- /**
- * @return int
- */
- public function getDetails(): int;
-
- /**
- * @param int $details
- *
- * @return bool
- */
- public function showDetails(int $details): bool;
-
- /**
- * @return Circle
- */
- public function getFilterCircle(): Circle;
-
- /**
- * @return bool
- */
- public function hasFilterCircle(): bool;
-
- /**
- * @return Member
- */
- public function getFilterMember(): Member;
-
- /**
- * @return bool
- */
- public function hasFilterMember(): bool;
-
- /**
- * @return RemoteInstance
- */
- public function getFilterRemoteInstance(): RemoteInstance;
-
- /**
- * @return bool
- */
- public function hasFilterRemoteInstance(): bool;
-
- /**
- * @return array
- */
- public function getAsOptions(): array;
-}
diff --git a/lib/ISearch.php b/lib/ISearch.php
deleted file mode 100644
index 3300bbe5..00000000
--- a/lib/ISearch.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-
-/**
- * Circles - Bring cloud-users closer together.
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Maxence Lange <maxence@artificial-owl.com>
- * @copyright 2021
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-namespace OCA\Circles;
-
-use OCA\Circles\Model\FederatedUser;
-
-/**
- * Interface ISearch
- *
- * @package OCA\Circles
- */
-interface ISearch {
-
- /**
- * @param string $needle
- *
- * @return FederatedUser[]
- */
- public function search(string $needle): array;
-}
diff --git a/lib/Listeners/Files/RemovingMember.php b/lib/Listeners/Files/RemovingMember.php
index 93bd55f2..181206e2 100644
--- a/lib/Listeners/Files/RemovingMember.php
+++ b/lib/Listeners/Files/RemovingMember.php
@@ -35,7 +35,7 @@ use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Logger;
use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
use OCA\Circles\AppInfo\Application;
use OCA\Circles\Events\RemovingCircleMemberEvent;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Model\Member;
use OCA\Circles\Model\Membership;
use OCA\Circles\Service\MemberService;
diff --git a/lib/Model/Circle.php b/lib/Model/Circle.php
index 6ab9ee98..7b5b7d98 100644
--- a/lib/Model/Circle.php
+++ b/lib/Model/Circle.php
@@ -40,14 +40,16 @@ use DateTime;
use JsonSerializable;
use OCA\Circles\Exceptions\CircleNotFoundException;
use OCA\Circles\Exceptions\FederatedItemException;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Exceptions\OwnerNotFoundException;
use OCA\Circles\Exceptions\RemoteInstanceException;
use OCA\Circles\Exceptions\RemoteNotFoundException;
use OCA\Circles\Exceptions\RemoteResourceNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\UnknownRemoteException;
-use OCA\Circles\IEntity;
+use OCP\Circles\Model\IEntity;
+use OCP\Circles\Model\ICircle;
+use OCP\Circles\Model\IMembership;
/**
* Class Circle
@@ -77,39 +79,16 @@ use OCA\Circles\IEntity;
*
* @package OCA\Circles\Model
*/
-class Circle extends ManagedModel implements IEntity, IDeserializable, INC22QueryRow, JsonSerializable {
+class Circle extends ManagedModel implements
+ ICircle,
+ IDeserializable,
+ INC22QueryRow,
+ JsonSerializable {
+
use TArrayTools;
use TNC22Deserialize;
- public const FLAGS_SHORT = 1;
- public const FLAGS_LONG = 2;
-
-
- // specific value
- public const CFG_CIRCLE = 0; // only for code readability. Circle is locked by default.
- public const CFG_SINGLE = 1; // Circle with only one single member.
- public const CFG_PERSONAL = 2; // Personal circle, only the owner can see it.
-
- // bitwise
- public const CFG_SYSTEM = 4; // System Circle (not managed by the official front-end). Meaning some config are limited
- public const CFG_VISIBLE = 8; // Visible to everyone, if not visible, people have to know its name to be able to find it
- public const CFG_OPEN = 16; // Circle is open, people can join
- public const CFG_INVITE = 32; // Adding a member generate an invitation that needs to be accepted
- public const CFG_REQUEST = 64; // Request to join Circles needs to be confirmed by a moderator
- public const CFG_FRIEND = 128; // Members of the circle can invite their friends
- public const CFG_PROTECTED = 256; // Password protected to join/request
- public const CFG_NO_OWNER = 512; // no owner, only members
- public const CFG_HIDDEN = 1024; // hidden from listing, but available as a share entity
- public const CFG_BACKEND = 2048; // Fully hidden, only backend Circles
- public const CFG_LOCAL = 4096; // Local even on GlobalScale
- public const CFG_ROOT = 8192; // Circle cannot be inside another Circle
- public const CFG_CIRCLE_INVITE = 16384; // Circle must confirm when invited in another circle
- public const CFG_FEDERATED = 32768; // Federated
- public const CFG_MOUNTPOINT = 65536; // Generate a Files folder for this Circle
-
- public static $DEF_CFG_MAX = 131071;
-
/**
* Note: When editing those values, update lib/Application/Capabilities.php
@@ -150,6 +129,7 @@ class Circle extends ManagedModel implements IEntity, IDeserializable, INC22Quer
4 => 'Email Address',
8 => 'Contact',
16 => 'Circle',
+ 10000 => 'Nextcloud App',
10001 => 'Circles App',
10002 => 'Admin Command Line'
];
@@ -524,7 +504,7 @@ class Circle extends ManagedModel implements IEntity, IDeserializable, INC22Quer
}
/**
- * @param array $memberships
+ * @param IMembership[] $memberships
*
* @return self
*/
@@ -554,10 +534,8 @@ class Circle extends ManagedModel implements IEntity, IDeserializable, INC22Quer
* @throws MembershipNotFoundException
* @throws RequestBuilderException
*/
- public function getLink(string $singleId, bool $detailed = false): Membership {
- $this->getManager()->getLink($this, $singleId, $detailed);
-
- throw new MembershipNotFoundException();
+ public function getLink(string $singleId, bool $detailed = false): IMembership {
+ return $this->getManager()->getLink($this, $singleId, $detailed);
}
@@ -632,6 +610,15 @@ class Circle extends ManagedModel implements IEntity, IDeserializable, INC22Quer
/**
+ * @return bool
+ * @throws OwnerNotFoundException
+ */
+ public function isLocal(): bool {
+ return $this->getManager()->isLocalInstance($this->getInstance());
+ }
+
+
+ /**
* @param int $population
*
* @return Circle
diff --git a/lib/Model/Federated/FederatedShare.php b/lib/Model/Federated/FederatedShare.php
index 44b52caa..8e6ef1aa 100644
--- a/lib/Model/Federated/FederatedShare.php
+++ b/lib/Model/Federated/FederatedShare.php
@@ -36,7 +36,7 @@ use ArtificialOwl\MySmallPhpTools\IDeserializable;
use ArtificialOwl\MySmallPhpTools\Model\SimpleDataStore;
use ArtificialOwl\MySmallPhpTools\Traits\TArrayTools;
use JsonSerializable;
-use OCA\Circles\IFederatedModel;
+use OCP\Circles\Model\IFederatedModel;
use OCA\Circles\Model\ManagedModel;
/**
diff --git a/lib/Model/Federated/RemoteInstance.php b/lib/Model/Federated/RemoteInstance.php
index fe7b0c43..fef48d0c 100644
--- a/lib/Model/Federated/RemoteInstance.php
+++ b/lib/Model/Federated/RemoteInstance.php
@@ -37,13 +37,18 @@ use ArtificialOwl\MySmallPhpTools\Traits\TArrayTools;
use JsonSerializable;
use OCA\Circles\Exceptions\RemoteNotFoundException;
use OCA\Circles\Exceptions\RemoteUidException;
+use OCP\Circles\Model\IRemoteInstance;
/**
* Class AppService
*
* @package OCA\Circles\Model
*/
-class RemoteInstance extends NC22Signatory implements INC22QueryRow, JsonSerializable {
+class RemoteInstance extends NC22Signatory implements
+ IRemoteInstance,
+ INC22QueryRow,
+ JsonSerializable {
+
use TArrayTools;
public const TYPE_UNKNOWN = 'Unknown'; // not trusted
diff --git a/lib/Model/FederatedUser.php b/lib/Model/FederatedUser.php
index 3ed25e4c..f88dca63 100644
--- a/lib/Model/FederatedUser.php
+++ b/lib/Model/FederatedUser.php
@@ -38,12 +38,14 @@ use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Deserialize;
use ArtificialOwl\MySmallPhpTools\Traits\TArrayTools;
use JsonSerializable;
use OCA\Circles\Exceptions\FederatedUserNotFoundException;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Exceptions\OwnerNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\UnknownInterfaceException;
-use OCA\Circles\IFederatedUser;
-use OCA\Circles\IEntity;
+use OCP\Circles\Model\ICircle;
+use OCP\Circles\Model\IEntity;
+use OCP\Circles\Model\IFederatedUser;
+use OCP\Circles\Model\IMembership;
/**
* Class FederatedUser
@@ -52,7 +54,6 @@ use OCA\Circles\IEntity;
*/
class FederatedUser extends ManagedModel implements
IFederatedUser,
- IEntity,
IDeserializable,
INC22QueryRow,
JsonSerializable {
@@ -81,6 +82,9 @@ class FederatedUser extends ManagedModel implements
/** @var string */
private $instance;
+ /** @var Membership */
+ private $membership;
+
/** @var Membership[] */
private $memberships = null;
@@ -214,7 +218,7 @@ class FederatedUser extends ManagedModel implements
/**
* @return Circle
*/
- public function getBasedOn(): Circle {
+ public function getBasedOn(): ICircle {
return $this->basedOn;
}
@@ -269,6 +273,31 @@ class FederatedUser extends ManagedModel implements
return $this->getManager()->isLocalInstance($this->getInstance());
}
+ /**
+ * @return bool
+ */
+ public function hasMembership(): bool {
+ return !is_null($this->membership);
+ }
+
+ /**
+ * @param Membership $membership
+ *
+ * @return $this
+ */
+ public function setMembership(Membership $membership): self {
+ $this->membership = $membership;
+
+ return $this;
+ }
+
+ /**
+ * @return Membership
+ */
+ public function getMembership(): Membership {
+ return $this->membership;
+ }
+
/**
* @return bool
@@ -300,7 +329,6 @@ class FederatedUser extends ManagedModel implements
}
-
/**
* @param string $singleId
* @param bool $detailed
@@ -309,7 +337,7 @@ class FederatedUser extends ManagedModel implements
* @throws MembershipNotFoundException
* @throws RequestBuilderException
*/
- public function getLink(string $singleId, bool $detailed = false): Membership {
+ public function getLink(string $singleId, bool $detailed = false): IMembership {
$this->getManager()->getLink($this, $singleId, $detailed);
throw new MembershipNotFoundException();
@@ -341,6 +369,13 @@ class FederatedUser extends ManagedModel implements
} catch (InvalidItemException $e) {
}
+ try {
+ /** @var Membership $membership */
+ $membership = $this->deserialize($this->getArray('membership', $data), Membership::class);
+ $this->setMembership($membership);
+ } catch (InvalidItemException $e) {
+ }
+
return $this;
}
@@ -418,6 +453,10 @@ class FederatedUser extends ManagedModel implements
$arr['basedOn'] = $this->getBasedOn();
}
+ if ($this->hasMembership()) {
+ $arr['membership'] = $this->getMembership();
+ }
+
if (!is_null($this->memberships)) {
$arr['memberships'] = $this->getMemberships();
}
diff --git a/lib/Model/ManagedModel.php b/lib/Model/ManagedModel.php
index b2686cc5..d2396635 100644
--- a/lib/Model/ManagedModel.php
+++ b/lib/Model/ManagedModel.php
@@ -32,7 +32,7 @@ declare(strict_types=1);
namespace OCA\Circles\Model;
use OC;
-use OCA\Circles\IFederatedUser;
+use OCP\Circles\Model\IFederatedUser;
/**
* Class ManagedModel
diff --git a/lib/Model/Member.php b/lib/Model/Member.php
index 8d279bf3..1d4888a7 100644
--- a/lib/Model/Member.php
+++ b/lib/Model/Member.php
@@ -40,14 +40,18 @@ use DateTime;
use JsonSerializable;
use OCA\Circles\AppInfo\Capabilities;
use OCA\Circles\Exceptions\MemberNotFoundException;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Exceptions\ParseMemberLevelException;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\UnknownInterfaceException;
use OCA\Circles\Exceptions\UserTypeNotFoundException;
-use OCA\Circles\IFederatedUser;
-use OCA\Circles\IEntity;
use OCA\Circles\Model\Federated\RemoteInstance;
+use OCP\Circles\Model\ICircle;
+use OCP\Circles\Model\IEntity;
+use OCP\Circles\Model\IFederatedUser;
+use OCP\Circles\Model\IMember;
+use OCP\Circles\Model\IMembership;
+
/**
* Class Member
@@ -55,7 +59,7 @@ use OCA\Circles\Model\Federated\RemoteInstance;
* @package OCA\Circles\Model
*/
class Member extends ManagedModel implements
- IEntity,
+ IMember,
IFederatedUser,
IDeserializable,
INC22QueryRow,
@@ -403,7 +407,7 @@ class Member extends ManagedModel implements
/**
* @return Circle
*/
- public function getBasedOn(): Circle {
+ public function getBasedOn(): ICircle {
return $this->basedOn;
}
@@ -734,7 +738,7 @@ class Member extends ManagedModel implements
* @throws MembershipNotFoundException
* @throws RequestBuilderException
*/
- public function getLink(string $singleId, bool $detailed = false): Membership {
+ public function getLink(string $singleId, bool $detailed = false): IMembership {
$this->getManager()->getLink($this, $singleId, $detailed);
throw new MembershipNotFoundException();
diff --git a/lib/Model/Membership.php b/lib/Model/Membership.php
index 77e7c12f..7919ae85 100644
--- a/lib/Model/Membership.php
+++ b/lib/Model/Membership.php
@@ -36,14 +36,20 @@ use ArtificialOwl\MySmallPhpTools\Exceptions\InvalidItemException;
use ArtificialOwl\MySmallPhpTools\IDeserializable;
use ArtificialOwl\MySmallPhpTools\Traits\TArrayTools;
use JsonSerializable;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Model\IMembership;
/**
* Class Membership
*
* @package OCA\Circles\Model
*/
-class Membership extends ManagedModel implements IDeserializable, INC22QueryRow, JsonSerializable {
+class Membership extends ManagedModel implements
+ IMembership,
+ IDeserializable,
+ INC22QueryRow,
+ JsonSerializable {
+
use TArrayTools;
diff --git a/lib/Model/ModelManager.php b/lib/Model/ModelManager.php
index 0c836585..8b0a2319 100644
--- a/lib/Model/ModelManager.php
+++ b/lib/Model/ModelManager.php
@@ -42,7 +42,7 @@ use OCA\Circles\Exceptions\FederatedItemException;
use OCA\Circles\Exceptions\FederatedUserNotFoundException;
use OCA\Circles\Exceptions\FileCacheNotFoundException;
use OCA\Circles\Exceptions\MemberNotFoundException;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Exceptions\OwnerNotFoundException;
use OCA\Circles\Exceptions\RemoteInstanceException;
use OCA\Circles\Exceptions\RemoteNotFoundException;
@@ -50,12 +50,13 @@ use OCA\Circles\Exceptions\RemoteResourceNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\UnknownInterfaceException;
use OCA\Circles\Exceptions\UnknownRemoteException;
-use OCA\Circles\IEntity;
use OCA\Circles\Model\Federated\RemoteInstance;
use OCA\Circles\Service\ConfigService;
use OCA\Circles\Service\InterfaceService;
use OCA\Circles\Service\MembershipService;
use OCA\Circles\Service\RemoteService;
+use OCP\Circles\Model\IEntity;
+use OCP\Circles\Model\IMembership;
use OCP\IURLGenerator;
/**
@@ -221,7 +222,7 @@ class ModelManager {
* @throws MembershipNotFoundException
* @throws RequestBuilderException
*/
- public function getLink(IEntity $member, string $circleId, bool $detailed = false): Membership {
+ public function getLink(IEntity $member, string $circleId, bool $detailed = false): IMembership {
return $this->membershipService->getMembership($circleId, $member->getSingleId(), $detailed);
}
@@ -405,9 +406,11 @@ class ModelManager {
switch ($path) {
case CoreQueryBuilder::MEMBERSHIPS:
try {
+ // TODO: find out why this is needed (membership on a federated user ? with not using Member ?!)
+// \OC::$server->getLogger()->log(3, json_encode(debug_backtrace()));
$membership = new Membership();
$membership->importFromDatabase($data, $prefix);
- $federatedUser->setLink($membership);
+ $federatedUser->setMembership($membership);
} catch (MembershipNotFoundException $e) {
}
break;
diff --git a/lib/Model/Probes/CircleProbe.php b/lib/Model/Probes/CircleProbe.php
index 5058a5f4..e1528955 100644
--- a/lib/Model/Probes/CircleProbe.php
+++ b/lib/Model/Probes/CircleProbe.php
@@ -32,13 +32,14 @@ declare(strict_types=1);
namespace OCA\Circles\Model\Probes;
use OCA\Circles\Model\Circle;
+use OCP\Circles\Model\Probes\ICircleProbe;
/**
* Class CircleProbe
*
* @package OCA\Circles\Model\Probes
*/
-class CircleProbe extends MemberProbe {
+class CircleProbe extends MemberProbe implements ICircleProbe {
/** @var int */
@@ -128,6 +129,7 @@ class CircleProbe extends MemberProbe {
return $this;
}
+
/**
* @param bool $include
*
@@ -147,6 +149,8 @@ class CircleProbe extends MemberProbe {
}
+
+
/**
* @return int
*/
diff --git a/lib/Model/Probes/MemberProbe.php b/lib/Model/Probes/MemberProbe.php
index 8d3e6293..fc03ac24 100644
--- a/lib/Model/Probes/MemberProbe.php
+++ b/lib/Model/Probes/MemberProbe.php
@@ -32,13 +32,15 @@ declare(strict_types=1);
namespace OCA\Circles\Model\Probes;
use OCA\Circles\Model\Member;
+use OCP\Circles\Model\Probes\IMemberProbe;
+
/**
- * Class CircleProbe
+ * Class MemberProbe
*
* @package OCA\Circles\Model\Probes
*/
-class MemberProbe extends BasicProbe {
+class MemberProbe extends Probe implements IMemberProbe {
/** @var int */
@@ -50,6 +52,9 @@ class MemberProbe extends BasicProbe {
/** @var bool */
private $requestingMembership = false;
+ /** @var bool */
+ private $initiatorDirectMember = false;
+
/**
* allow the initiator as a requesting member
@@ -73,6 +78,25 @@ class MemberProbe extends BasicProbe {
/**
+ * @param bool $include
+ *
+ * @return $this
+ */
+ public function initiatorAsDirectMember(bool $include = true): self {
+ $this->initiatorDirectMember = $include;
+
+ return $this;
+ }
+
+ /**
+ * @return bool
+ */
+ public function directMemberInitiator(): bool {
+ return $this->initiatorDirectMember;
+ }
+
+
+ /**
* force the generation an initiator if visitor
*
* @return $this
@@ -144,7 +168,8 @@ class MemberProbe extends BasicProbe {
[
'minimumLevel' => $this->getMinimumLevel(),
'emulateVisitor' => $this->isEmulatingVisitor(),
- 'allowRequestingMembership' => $this->isRequestingMembership()
+ 'allowRequestingMembership' => $this->isRequestingMembership(),
+ 'initiatorDirectMember' => $this->directMemberInitiator(),
],
parent::getAsOptions()
);
diff --git a/lib/Model/Probes/BasicProbe.php b/lib/Model/Probes/Probe.php
index ee6a95da..0936a92a 100644
--- a/lib/Model/Probes/BasicProbe.php
+++ b/lib/Model/Probes/Probe.php
@@ -31,19 +31,20 @@ declare(strict_types=1);
namespace OCA\Circles\Model\Probes;
-use OCA\Circles\IQueryProbe;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\RemoteInstance;
use OCA\Circles\Model\Member;
+use OCP\Circles\Model\ICircle;
+use OCP\Circles\Model\IMember;
+use OCP\Circles\Model\IRemoteInstance;
+use OCP\Circles\Model\Probes\IProbe;
/**
- * Class BasicProbe
+ * Class Probe
*
* @package OCA\Circles\Model\Probes
*/
-class BasicProbe implements IQueryProbe {
- public const DETAILS_NONE = 0;
- public const DETAILS_ALL = 64;
+class Probe implements IProbe {
/** @var int */
@@ -71,7 +72,7 @@ class BasicProbe implements IQueryProbe {
/**
* @param int $itemsOffset
*
- * @return BasicProbe
+ * @return Probe
*/
public function setItemsOffset(int $itemsOffset): self {
$this->itemsOffset = $itemsOffset;
@@ -90,7 +91,7 @@ class BasicProbe implements IQueryProbe {
/**
* @param int $itemsLimit
*
- * @return BasicProbe
+ * @return Probe
*/
public function setItemsLimit(int $itemsLimit): self {
$this->itemsLimit = $itemsLimit;
@@ -145,9 +146,9 @@ class BasicProbe implements IQueryProbe {
}
/**
- * @return Circle
+ * @return ICircle
*/
- public function getFilterCircle(): Circle {
+ public function getFilterCircle(): ICircle {
return $this->filterCircle;
}
@@ -171,9 +172,9 @@ class BasicProbe implements IQueryProbe {
}
/**
- * @return Member
+ * @return IMember
*/
- public function getFilterMember(): Member {
+ public function getFilterMember(): IMember {
return $this->filterMember;
}
@@ -197,9 +198,9 @@ class BasicProbe implements IQueryProbe {
}
/**
- * @return RemoteInstance
+ * @return IRemoteInstance
*/
- public function getFilterRemoteInstance(): RemoteInstance {
+ public function getFilterRemoteInstance(): IRemoteInstance {
return $this->filterRemoteInstance;
}
diff --git a/lib/Service/CircleService.php b/lib/Service/CircleService.php
index 7aa51e93..44f67918 100644
--- a/lib/Service/CircleService.php
+++ b/lib/Service/CircleService.php
@@ -58,6 +58,7 @@ use OCA\Circles\FederatedItems\CircleEdit;
use OCA\Circles\FederatedItems\CircleJoin;
use OCA\Circles\FederatedItems\CircleLeave;
use OCA\Circles\FederatedItems\CircleSettings;
+use OCP\Circles\Model\IFederatedUser;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\FederatedUser;
@@ -66,6 +67,7 @@ use OCA\Circles\Model\Member;
use OCA\Circles\Model\Probes\CircleProbe;
use OCA\Circles\Model\Probes\MemberProbe;
use OCA\Circles\StatusCode;
+use OCP\Circles\Model\IEntity;
use OCP\IL10N;
/**
@@ -615,11 +617,27 @@ class CircleService {
/**
+ * @param IEntity $entity
+ *
+ * @return string
+ */
+ public function getDefinition(IEntity $entity): string {
+ if ($entity instanceof Circle) {
+ return $this->getDefinitionCircle($entity);
+ }
+ if ($entity instanceof IFederatedUser) {
+ return $this->getDefinitionUser($entity);
+ }
+
+ return '';
+ }
+
+ /**
* @param Circle $circle
*
* @return string
*/
- public function getDefinition(Circle $circle): string {
+ public function getDefinitionCircle(Circle $circle): string {
$source = Circle::$DEF_SOURCE[$circle->getSource()];
if ($circle->isConfig(Circle::CFG_NO_OWNER)
|| $circle->isConfig(Circle::CFG_SINGLE)) {
@@ -638,4 +656,13 @@ class CircleService {
]
);
}
+
+ /**
+ * @param Member $federatedUser
+ *
+ * @return string
+ */
+ public function getDefinitionUser(IFederatedUser $federatedUser): string {
+ return $this->l10n->t('%s', [Circle::$DEF_SOURCE[$federatedUser->getUserType()]]);
+ }
}
diff --git a/lib/Service/ConfigService.php b/lib/Service/ConfigService.php
index 60b1163f..59b4abd8 100644
--- a/lib/Service/ConfigService.php
+++ b/lib/Service/ConfigService.php
@@ -38,7 +38,7 @@ use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
use OC;
use OCA\Circles\AppInfo\Application;
use OCA\Circles\Exceptions\GSStatusException;
-use OCA\Circles\IFederatedUser;
+use OCP\Circles\Model\IFederatedUser;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\DeprecatedCircle;
use OCA\Circles\Model\Member;
@@ -360,7 +360,7 @@ class ConfigService {
public function getSettings(): array {
return [
'frontendEnabled' => $this->getAppValueBool(self::FRONTEND_ENABLED),
- 'allowedCircles' => Circle::$DEF_CFG_MAX,
+ 'allowedCircles' => Circle::CFG_MAX,
'allowedUserTypes' => Member::$DEF_TYPE_MAX,
'membersLimit' => $this->getAppValueInt(self::MEMBERS_LIMIT)
];
diff --git a/lib/Service/FederatedEventService.php b/lib/Service/FederatedEventService.php
index f94983ab..468687ba 100644
--- a/lib/Service/FederatedEventService.php
+++ b/lib/Service/FederatedEventService.php
@@ -52,21 +52,21 @@ use OCA\Circles\Exceptions\RemoteNotFoundException;
use OCA\Circles\Exceptions\RemoteResourceNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\Exceptions\UnknownRemoteException;
-use OCA\Circles\IFederatedItem;
-use OCA\Circles\IFederatedItemAsyncProcess;
-use OCA\Circles\IFederatedItemCircleCheckNotRequired;
-use OCA\Circles\IFederatedItemDataRequestOnly;
-use OCA\Circles\IFederatedItemHighSeverity;
-use OCA\Circles\IFederatedItemInitiatorCheckNotRequired;
-use OCA\Circles\IFederatedItemInitiatorMembershipNotRequired;
-use OCA\Circles\IFederatedItemLimitedToInstanceWithMembership;
-use OCA\Circles\IFederatedItemLoopbackTest;
-use OCA\Circles\IFederatedItemMemberCheckNotRequired;
-use OCA\Circles\IFederatedItemMemberEmpty;
-use OCA\Circles\IFederatedItemMemberOptional;
-use OCA\Circles\IFederatedItemMemberRequired;
-use OCA\Circles\IFederatedItemMustBeInitializedLocally;
-use OCA\Circles\IFederatedItemSharedItem;
+use OCP\Circles\FederatedItem\IFederatedItem;
+use OCP\Circles\FederatedItem\IFederatedItemAsyncProcess;
+use OCP\Circles\FederatedItem\IFederatedItemCircleCheckNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemDataRequestOnly;
+use OCP\Circles\FederatedItem\IFederatedItemHighSeverity;
+use OCP\Circles\FederatedItem\IFederatedItemInitiatorCheckNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemInitiatorMembershipNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemLimitedToInstanceWithMembership;
+use OCP\Circles\FederatedItem\IFederatedItemLoopbackTest;
+use OCP\Circles\FederatedItem\IFederatedItemMemberCheckNotRequired;
+use OCP\Circles\FederatedItem\IFederatedItemMemberEmpty;
+use OCP\Circles\FederatedItem\IFederatedItemMemberOptional;
+use OCP\Circles\FederatedItem\IFederatedItemMemberRequired;
+use OCP\Circles\FederatedItem\IFederatedItemMustBeInitializedLocally;
+use OCP\Circles\FederatedItem\IFederatedItemSharedItem;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\EventWrapper;
use OCA\Circles\Model\Federated\FederatedEvent;
diff --git a/lib/Service/FederatedUserService.php b/lib/Service/FederatedUserService.php
index da78eb3d..3e0c53d1 100644
--- a/lib/Service/FederatedUserService.php
+++ b/lib/Service/FederatedUserService.php
@@ -61,7 +61,7 @@ use OCA\Circles\Exceptions\SingleCircleNotFoundException;
use OCA\Circles\Exceptions\UnknownRemoteException;
use OCA\Circles\Exceptions\UserTypeNotFoundException;
use OCA\Circles\FederatedItems\CircleCreate;
-use OCA\Circles\IFederatedUser;
+use OCP\Circles\Model\IFederatedUser;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Federated\RemoteInstance;
@@ -317,6 +317,13 @@ class FederatedUserService {
$this->bypass = $bypass;
}
+ /**
+ * @return bool
+ */
+ public function canBypassCurrentUserCondition(): bool {
+ return $this->bypass;
+ }
+
/**
* @param bool $initiatedByOcc
diff --git a/lib/Service/MemberService.php b/lib/Service/MemberService.php
index 38b81e01..ce9bc5c0 100644
--- a/lib/Service/MemberService.php
+++ b/lib/Service/MemberService.php
@@ -59,7 +59,8 @@ use OCA\Circles\FederatedItems\MassiveMemberAdd;
use OCA\Circles\FederatedItems\MemberLevel;
use OCA\Circles\FederatedItems\MemberRemove;
use OCA\Circles\FederatedItems\SingleMemberAdd;
-use OCA\Circles\IFederatedUser;
+use OCA\Circles\Model\Probes\CircleProbe;
+use OCP\Circles\Model\IFederatedUser;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\FederatedUser;
use OCA\Circles\Model\Member;
@@ -178,6 +179,7 @@ class MemberService {
if ($this->federatedUserService->hasRemoteInstance()) {
$probe->setFilterRemoteInstance($this->federatedUserService->getRemoteInstance());
}
+ $probe->initiatorAsDirectMember();
$probe->mustBeMember();
return $this->memberRequest->getMembers(
diff --git a/lib/Service/MembershipService.php b/lib/Service/MembershipService.php
index 6c0dfd2b..941ff8c2 100644
--- a/lib/Service/MembershipService.php
+++ b/lib/Service/MembershipService.php
@@ -37,12 +37,13 @@ use OCA\Circles\Db\CircleRequest;
use OCA\Circles\Db\MemberRequest;
use OCA\Circles\Db\MembershipRequest;
use OCA\Circles\Exceptions\FederatedUserNotFoundException;
-use OCA\Circles\Exceptions\MembershipNotFoundException;
use OCA\Circles\Exceptions\OwnerNotFoundException;
use OCA\Circles\Exceptions\RequestBuilderException;
+use OCA\Circles\Model\Circle;
use OCA\Circles\Model\FederatedUser;
use OCA\Circles\Model\Member;
use OCA\Circles\Model\Membership;
+use OCP\Circles\Exceptions\MembershipNotFoundException;
/**
* Class MembershipService
@@ -139,6 +140,7 @@ class MembershipService {
/**
* @param string $circleId
* @param string $singleId
+ * @param bool $detailed
*
* @return Membership
* @throws MembershipNotFoundException
@@ -199,6 +201,11 @@ class MembershipService {
continue;
}
+ if ($member->getCircle()->isConfig(Circle::CFG_NO_OWNER)
+ && $member->getLevel() === Member::LEVEL_OWNER) {
+ continue;
+ }
+
$membership = new Membership($singleId, count($path) > 1 ? $path[1] : '', $member);
$membership->setInheritancePath(array_reverse($path))
->setInheritanceDepth(sizeof($path));