diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2021-08-23 14:35:29 +0300 |
---|---|---|
committer | Maxence Lange <maxence@artificial-owl.com> | 2021-08-23 14:35:29 +0300 |
commit | 5d7babfa6ddc7c987afdd292f345a0e044f68b91 (patch) | |
tree | 26716cdb5c748451f0faeebefc11be5e022ebb31 | |
parent | 2359d30e0bea7ec89fa304a09e8d005cef745c20 (diff) |
some moreenh/noid/public-interfaces
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>
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)); |