From 385388c4d58ac98af20469e6de951cff979947e4 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Mon, 20 Jun 2022 10:00:25 -0100 Subject: [PATCH 1/2] fixing Signed-off-by: Maxence Lange --- lib/Model/Federated/FederatedEvent.php | 8 +- lib/Tools/IReferencedObject.php | 34 ++ .../ISignedModel.php} | 55 +- lib/Tools/Model/ReferencedDataStore.php | 477 ++++++++++++++++++ lib/Tools/Traits/TAsync.php | 4 +- lib/Tools/Traits/TDeserialize.php | 19 +- lib/Tools/Traits/TNCSignatory.php | 30 ++ 7 files changed, 575 insertions(+), 52 deletions(-) create mode 100644 lib/Tools/IReferencedObject.php rename lib/{FederatedItems/CircleSettings.php => Tools/ISignedModel.php} (50%) create mode 100644 lib/Tools/Model/ReferencedDataStore.php diff --git a/lib/Model/Federated/FederatedEvent.php b/lib/Model/Federated/FederatedEvent.php index 8443f67c9..32345362a 100644 --- a/lib/Model/Federated/FederatedEvent.php +++ b/lib/Model/Federated/FederatedEvent.php @@ -137,11 +137,11 @@ public function getClass(): string { } /** - * @param mixed $class + * @param string $class * * @return self */ - public function setClass($class): self { + public function setClass(string $class): self { $this->class = $class; return $this; @@ -556,9 +556,7 @@ public function addResultEntry(string $key, array $result): self { * @return FederatedEvent */ public function bypass(int $flag): self { - if (!$this->canBypass($flag)) { - $this->bypass += $flag; - } + $this->bypass |= $flag; return $this; } diff --git a/lib/Tools/IReferencedObject.php b/lib/Tools/IReferencedObject.php new file mode 100644 index 000000000..985c2b5d7 --- /dev/null +++ b/lib/Tools/IReferencedObject.php @@ -0,0 +1,34 @@ + + * @copyright 2022 + * @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 . + * + */ + + +namespace OCA\Circles\Tools; + +interface IReferencedObject extends IDeserializable { +} diff --git a/lib/FederatedItems/CircleSettings.php b/lib/Tools/ISignedModel.php similarity index 50% rename from lib/FederatedItems/CircleSettings.php rename to lib/Tools/ISignedModel.php index 0521c23f5..67dcdc0a1 100644 --- a/lib/FederatedItems/CircleSettings.php +++ b/lib/Tools/ISignedModel.php @@ -3,6 +3,7 @@ declare(strict_types=1); + /** * Circles - Bring cloud-users closer together. * @@ -10,7 +11,7 @@ * later. See the COPYING file. * * @author Maxence Lange - * @copyright 2021 + * @copyright 2022 * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify @@ -29,57 +30,29 @@ */ -namespace OCA\Circles\FederatedItems; - -use OCA\Circles\Tools\Traits\TDeserialize; -use OCA\Circles\Db\CircleRequest; -use OCA\Circles\IFederatedItem; -use OCA\Circles\Model\Federated\FederatedEvent; - -/** - * Class CircleSettings - * - * @package OCA\Circles\FederatedItems - */ -class CircleSettings implements IFederatedItem { - use TDeserialize; - - - /** @var CircleRequest */ - private $circleRequest; +namespace OCA\Circles\Tools; +interface ISignedModel { /** - * CircleSettings constructor. + * @param string $signature * - * @param CircleRequest $circleRequest + * @return $this */ - public function __construct(CircleRequest $circleRequest) { - $this->circleRequest = $circleRequest; - } - + public function setSignature(string $signature): self; /** - * @param FederatedEvent $event + * @return string */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - $new = clone $circle; - $event->setOutcome($this->serialize($new)); - } + public function getSignature(): string; /** - * @param FederatedEvent $event + * returns array/data to be signed to identify the model + * + * @return array */ - public function manage(FederatedEvent $event): void { - } - + public function signedData(): array; - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - } } + diff --git a/lib/Tools/Model/ReferencedDataStore.php b/lib/Tools/Model/ReferencedDataStore.php new file mode 100644 index 000000000..aff75e99a --- /dev/null +++ b/lib/Tools/Model/ReferencedDataStore.php @@ -0,0 +1,477 @@ + + * @copyright 2022 + * @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 . + * + */ + + +namespace OCA\Circles\Tools\Model; + +use JsonSerializable; +use OCA\Circles\Tools\Exceptions\InvalidItemException; +use OCA\Circles\Tools\Exceptions\ItemNotFoundException; +use OCA\Circles\Tools\IDeserializable; +use OCA\Circles\Tools\IReferencedObject; +use OCA\Circles\Tools\Traits\TArrayTools; +use OCA\Circles\Tools\Traits\TDeserialize; +use ReflectionClass; +use ReflectionException; + +class ReferencedDataStore implements IDeserializable, JsonSerializable { + use TArrayTools; + use TDeserialize; + + public const STRING = 'string'; + public const INTEGER = 'integer'; + public const BOOLEAN = 'boolean'; + public const ARRAY = 'array'; + public const OBJECT = 'object'; + + public const KEY_NAME = 'name'; + public const KEY_TYPE = 'type'; + public const KEY_CLASS = 'class'; + + public const _THIS = '__this'; + public const _REFERENCE = '__reference'; + + private array $ref = []; + private array $data = []; + private string $lock = IReferencedObject::class; + + public function __construct(array $mixed = []) { + foreach ($mixed as $k => $v) { + try { + $this->sMixed($k, $v); + } catch (InvalidItemException $e) { + } + } + } + + + /** + * @param string $key + * @param string $value + * + * @return ReferencedDataStore + */ + public function s(string $key, string $value): self { + $this->data[$key] = $value; + $this->ref($key, self::STRING); + + return $this; + } + + /** + * @param string $key + * + * @return string + * @throws InvalidItemException + */ + public function g(string $key): string { + $this->confirmRef($key, self::STRING); + + return $this->get($key, $this->data); + } + + + /** + * @param string $key + * + * @return ReferencedDataStore + */ + public function u(string $key): self { + if ($this->hasKey($key)) { + unset($this->data[$key]); + unset($this->ref[$key]); + } + + return $this; + } + + + /** + * @param string $key + * @param int $value + * + * @return ReferencedDataStore + */ + public function sInt(string $key, int $value): self { + $this->data[$key] = $value; + $this->ref($key, self::INTEGER); + + return $this; + } + + /** + * @param string $key + * + * @return int + * @throws InvalidItemException + */ + public function gInt(string $key): int { + $this->confirmRef($key, self::INTEGER); + + return $this->getInt($key, $this->data); + } + + + /** + * @param string $key + * @param bool $value + * + * @return ReferencedDataStore + */ + public function sBool(string $key, bool $value): self { + $this->data[$key] = $value; + $this->ref($key, self::BOOLEAN); + + return $this; + } + + /** + * @param string $key + * + * @return bool + * @throws InvalidItemException + */ + public function gBool(string $key): bool { + $this->confirmRef($key, self::BOOLEAN); + + return $this->getBool($key, $this->data); + } + + + /** + * @param string $key + * @param array $value + * + * @return ReferencedDataStore + */ + public function sArray(string $key, array $value): self { + $this->data[$key] = $value; + $this->ref($key, self::ARRAY); + + return $this; + } + + /** + * @param string $key + * + * @return array + * @throws InvalidItemException + */ + public function gArray(string $key): array { + $this->confirmRef($key, self::ARRAY); + + return $this->getArray($key, $this->data); + } + + + /** + * @param string $key + * @param JsonSerializable $value + * + * @return ReferencedDataStore + */ + public function sObj(string $key, JsonSerializable $value): self { + $this->data[$key] = $value; + $this->ref($key, self::OBJECT, $value); + + return $this; + } + + + /** + * @param string $key + * @param string $class + * + * @return JsonSerializable[] + */ +// public function gObjs(string $key, string $class = ''): array { +// $list = $this->gArray($key); +// $result = []; +// foreach ($list as $item) { +// $data = new SimpleDataStore([$key => $item]); +// $result[] = $data->gObj($key, $class); +// } +// +// return array_filter($result); +// } + + + /** + * @param string $key + * + * @return null|JsonSerializable + * @throws InvalidItemException + */ + public function gObj(string $key): ?IDeserializable { + $this->confirmRef($key, self::OBJECT); + $class = $this->getRef($key, self::KEY_CLASS); + + $item = $this->data[$key]; + if ($item instanceof IDeserializable) { + return $item; + } + + try { + $reflection = new ReflectionClass($class); + } catch (ReflectionException $e) { + throw new InvalidItemException('reflection issue with ' . $class); + } + + if (!$reflection->implementsInterface(IDeserializable::class)) { + throw new InvalidItemException('object does not implements IDeserializable'); + } + + if ($this->locked() !== '' && !$reflection->implementsInterface($this->locked())) { + throw new InvalidItemException('model is locked'); + } + + return $this->deserialize($item, $class); + } + + + /** + * @param string $key + * + * @return mixed + * @throws ItemNotFoundException + */ +// public function gItem(string $key) { +// if (!array_key_exists($key, $this->data)) { +// throw new ItemNotFoundException(); +// } +// +// return $this->data[$key]; +// } + + + /** + * @param string $k + * @param mixed $obj + * + * @return ReferencedDataStore + * @throws InvalidItemException + */ + public function sMixed(string $k, $obj): self { + if ($obj instanceof JsonSerializable) { + return $this->sObj($k, $obj); + } + if (is_array($obj)) { + return $this->sArray($k, $obj); + } + if (is_integer($obj)) { + return $this->sInt($k, $obj); + } + if (is_string($obj)) { + return $this->s($k, $obj); + } + if (is_bool($obj)) { + return $this->sBool($k, $obj); + } + + throw new InvalidItemException(); + } + + + /** + * @param string $json + * + * @return $this + * @throws InvalidItemException + */ + public function json(string $json): self { + $this->import(json_decode($json, true)); + + return $this; + } + + + public function keys(): array { + return array_keys($this->data); + } + + /** + * @param string $key + * + * @return bool + */ + public function hasKey(string $key): bool { + return (array_key_exists($key, $this->data)); + } + + + /** + * @param array $keys + * + * @return bool + */ + public function hasKeys(array $keys): bool { + foreach ($keys as $key) { + if (!$this->hasKey($key)) { + return false; + } + } + + return true; + } + + + /** + * @param string $lock + * + * @return $this + */ + public function lock(string $lock): self { + $this->lock = $lock; + + return $this; + } + + /** + * @return $this + */ + public function unlock(): self { + $this->lock = ''; + + return $this; + } + + /** + * @return string + */ + public function locked(): string { + return $this->lock; + } + + + /** + * @return array + */ + public function gAll(): array { + return $this->data; + } + + + /** + * @param string $key + * @param string $type + * @param JsonSerializable|null $object + * + * @return $this + */ + private function ref(string $key, string $type, ?JsonSerializable $object = null): self { + $ref = [self::KEY_TYPE => $type]; + + if ($key !== self::_THIS) { + $ref[self::KEY_NAME] = $key; + } + + if (!is_null($object)) { + $ref[self::KEY_CLASS] = get_class($object); + } + + $this->ref[$key] = $ref; + + return $this; + } + + /** + * @param string $key + * @param string $ref + * + * @return string + */ + private function getRef(string $key, string $ref): string { + return $this->get($key . '.' . $ref, $this->ref); + } + + /** + * @param string $key + * @param string $type + * + * @throws InvalidItemException + */ + private function confirmRef(string $key, string $type): void { + if ($this->getRef($key, self::KEY_TYPE) === $type) { + return; + } + + throw new InvalidItemException(); + } + + public function getType(string $key): string { + return $this->getRef($key, self::KEY_TYPE); + } + + + /** + * @return array + */ + public function getAllReferences(): array { + $ref = $this->ref; + unset($ref[self::_THIS]); + + return $ref; + } + + /** + * @param array $data + * + * @return IDeserializable + * @throws InvalidItemException + */ + public function import(array $data): IDeserializable { + $this->ref = $this->getArray(self::_REFERENCE, $data); + + if ($this->getRef(self::_THIS, self::KEY_TYPE) !== self::OBJECT + || $this->getRef(self::_THIS, self::KEY_CLASS) !== get_class($this)) { + throw new InvalidItemException(); + } + + unset($data[self::_REFERENCE]); + $this->data = $data; + + return $this; + } + + + /** + * @return array + */ + public function jsonSerialize(): array { + $this->ref(self::_THIS, self::OBJECT, $this); + + return array_merge( + [ + '__reference' => $this->ref, + ], + $this->data + ); + } +} diff --git a/lib/Tools/Traits/TAsync.php b/lib/Tools/Traits/TAsync.php index 1a0b5de97..575fd61e8 100644 --- a/lib/Tools/Traits/TAsync.php +++ b/lib/Tools/Traits/TAsync.php @@ -36,9 +36,7 @@ trait TAsync { use TNCSetup; - - /** @var string */ - public static $SETUP_TIME_LIMIT = 'async_time_limit'; + public static string $SETUP_TIME_LIMIT = 'async_time_limit'; /** diff --git a/lib/Tools/Traits/TDeserialize.php b/lib/Tools/Traits/TDeserialize.php index 7652cb319..88266351d 100644 --- a/lib/Tools/Traits/TDeserialize.php +++ b/lib/Tools/Traits/TDeserialize.php @@ -110,17 +110,30 @@ public function deserializeArray(array $data, string $class, bool $associative = * @param string $class * * @return IDeserializable[] - * @throws InvalidItemException */ public function deserializeList(string $json, string $class): array { $arr = []; $data = json_decode($json, true); if (!is_array($data)) { - return $arr; + return []; } + return $this->deserializeArray($data, $class); + } + + /** + * @param array $data + * @param string $class + * + * @return array + */ + public function deserializeArray(array $data, string $class): array { + $arr = []; foreach ($data as $entry) { - $arr[] = $this->deserialize($entry, $class); + try { + $arr[] = $this->deserialize($entry, $class); + } catch (InvalidItemException $e) { + } } return $arr; diff --git a/lib/Tools/Traits/TNCSignatory.php b/lib/Tools/Traits/TNCSignatory.php index 0d28fedf1..deeed009b 100644 --- a/lib/Tools/Traits/TNCSignatory.php +++ b/lib/Tools/Traits/TNCSignatory.php @@ -35,6 +35,7 @@ use OCA\Circles\Tools\Exceptions\RequestNetworkException; use OCA\Circles\Tools\Exceptions\SignatoryException; use OCA\Circles\Tools\Exceptions\SignatureException; +use OCA\Circles\Tools\ISignedModel; use OCA\Circles\Tools\Model\NCRequest; use OCA\Circles\Tools\Model\NCSignatory; @@ -189,6 +190,19 @@ public function signString(string $clear, NCSignatory $signatory): string { } + /** + * @param ISignedModel $model + * @param NCSignatory $signatory + * + * @throws SignatoryException + */ + public function signModel(ISignedModel $model, NCSignatory $signatory): void { + $string = json_encode($model->signedData()); + $signature = $this->signString($string, $signatory); + $model->setSignature($signature); + } + + /** * @param string $clear * @param string $signed @@ -204,4 +218,20 @@ public function verifyString( throw new SignatureException('signature issue'); } } + + /** + * @param ISignedModel $model + * @param string $publicKey + * @param string $algo + * + * @throws SignatureException + */ + public function verifyModel( + ISignedModel $model, + string $publicKey, + string $algo = NCSignatory::SHA256 + ): void { + $string = json_encode($model->signedData()); + $this->verifyString($string, $model->getSignature(), $publicKey, $algo); + } } From 534a5f2936262f0c781324845ed8d4317001d5be Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 27 Jul 2022 09:45:29 -0100 Subject: [PATCH 2/2] cs:fix Signed-off-by: Maxence Lange --- lib/Command/CirclesConfig.php | 8 +- lib/Command/CirclesCreate.php | 4 +- lib/Command/CirclesMaintenance.php | 8 +- lib/Command/CirclesMemberships.php | 14 +- lib/Command/CirclesRemote.php | 6 +- lib/Command/CirclesTest.php | 4 +- lib/Command/FixUniqueId.php | 16 +- lib/Command/MembersAdd.php | 10 +- lib/Command/MembersList.php | 28 +- lib/Db/CircleProviderRequestBuilder.php | 42 +- lib/Db/CoreQueryBuilder.php | 96 +- lib/Db/DeprecatedCirclesRequestBuilder.php | 46 +- lib/Db/DeprecatedMembersRequestBuilder.php | 12 +- lib/Db/DeprecatedRequestBuilder.php | 4 +- lib/Db/EventWrapperRequest.php | 4 +- lib/FederatedItems/CircleConfig.php | 234 +-- lib/FederatedItems/CircleCreate.php | 172 +- lib/FederatedItems/CircleDestroy.php | 126 +- lib/FederatedItems/CircleJoin.php | 306 ++-- lib/FederatedItems/CircleLeave.php | 312 ++-- lib/FederatedItems/CircleSetting.php | 106 +- lib/FederatedItems/Files/FileShare.php | 132 +- lib/FederatedItems/Files/FileUnshare.php | 118 +- lib/FederatedItems/ItemLock.php | 124 +- lib/FederatedItems/LoopbackTest.php | 50 +- lib/FederatedItems/MassiveMemberAdd.php | 108 +- lib/FederatedItems/MemberDisplayName.php | 146 +- lib/FederatedItems/MemberLevel.php | 280 +-- lib/FederatedItems/MemberRemove.php | 146 +- lib/FederatedItems/SharedItemsSync.php | 50 +- lib/FederatedItems/SingleMemberAdd.php | 516 +++--- lib/Model/FederatedUser.php | 690 ++++---- lib/Model/Member.php | 1532 ++++++++--------- lib/Search/GlobalScaleUsers.php | 4 +- lib/Service/ConfigService.php | 16 +- lib/Service/EventsService.php | 42 +- lib/Service/FederatedUserService.php | 5 +- lib/Service/MembersService.php | 4 +- lib/Service/RemoteUpstreamService.php | 2 +- lib/ShareByCircleProviderDeprecated.php | 52 +- lib/Tools/ISignedModel.php | 2 - lib/Tools/Model/Request.php | 4 +- lib/Tools/Traits/TNCLogger.php | 24 +- tests/bootstrap.php | 1 + .../lib/Controller/LocalControllerTest.php | 18 +- 45 files changed, 2811 insertions(+), 2813 deletions(-) diff --git a/lib/Command/CirclesConfig.php b/lib/Command/CirclesConfig.php index ff3e4d385..81ef9aaff 100644 --- a/lib/Command/CirclesConfig.php +++ b/lib/Command/CirclesConfig.php @@ -97,14 +97,14 @@ protected function configure() { ->setDescription('edit config/type of a Circle') ->addArgument('circle_id', InputArgument::REQUIRED, 'ID of the circle') ->addArgument( - 'config', InputArgument::IS_ARRAY, - 'list of value to change in the configuration of the Circle' + 'config', InputArgument::IS_ARRAY, + 'list of value to change in the configuration of the Circle' ) ->addOption('initiator', '', InputOption::VALUE_REQUIRED, 'set an initiator to the request', '') ->addOption('initiator-type', '', InputOption::VALUE_REQUIRED, 'set initiator type', '0') ->addOption( - 'super-session', '', - InputOption::VALUE_NONE, 'use super session to bypass some condition' + 'super-session', '', + InputOption::VALUE_NONE, 'use super session to bypass some condition' ) ->addOption('status-code', '', InputOption::VALUE_NONE, 'display status code on exception'); } diff --git a/lib/Command/CirclesCreate.php b/lib/Command/CirclesCreate.php index 0e2cc2af1..025af5dfe 100644 --- a/lib/Command/CirclesCreate.php +++ b/lib/Command/CirclesCreate.php @@ -88,8 +88,8 @@ protected function configure() { ->addOption('local', '', InputOption::VALUE_NONE, 'create a local circle') ->addOption('status-code', '', InputOption::VALUE_NONE, 'display status code on exception') ->addOption( - 'type', '', InputOption::VALUE_REQUIRED, 'type of the owner', - Member::$TYPE[Member::TYPE_SINGLE] + 'type', '', InputOption::VALUE_REQUIRED, 'type of the owner', + Member::$TYPE[Member::TYPE_SINGLE] ); } diff --git a/lib/Command/CirclesMaintenance.php b/lib/Command/CirclesMaintenance.php index fe42cf9a3..d2fdf8bca 100644 --- a/lib/Command/CirclesMaintenance.php +++ b/lib/Command/CirclesMaintenance.php @@ -85,14 +85,14 @@ protected function configure() { ->setDescription('Clean stuff, keeps the app running') ->addOption('level', '', InputOption::VALUE_REQUIRED, 'level of maintenance', '3') ->addOption( - 'reset', '', InputOption::VALUE_NONE, 'reset Circles; remove all data related to the App' + 'reset', '', InputOption::VALUE_NONE, 'reset Circles; remove all data related to the App' ) ->addOption( - 'clean-shares', '', InputOption::VALUE_NONE, 'remove Circles\' shares' + 'clean-shares', '', InputOption::VALUE_NONE, 'remove Circles\' shares' ) ->addOption( - 'uninstall', '', InputOption::VALUE_NONE, - 'Uninstall the apps and everything related to the app from the database' + 'uninstall', '', InputOption::VALUE_NONE, + 'Uninstall the apps and everything related to the app from the database' ); } diff --git a/lib/Command/CirclesMemberships.php b/lib/Command/CirclesMemberships.php index 92483209d..b98319987 100644 --- a/lib/Command/CirclesMemberships.php +++ b/lib/Command/CirclesMemberships.php @@ -163,8 +163,8 @@ protected function configure() { // ->addOption('reset', '', InputOption::VALUE_NONE, 'reset memberships') ->addOption('all', '', InputOption::VALUE_NONE, 'refresh memberships for all entities') ->addOption( - 'type', '', InputOption::VALUE_REQUIRED, 'type of the user', - Member::$TYPE[Member::TYPE_SINGLE] + 'type', '', InputOption::VALUE_REQUIRED, 'type of the user', + Member::$TYPE[Member::TYPE_SINGLE] ); } @@ -273,11 +273,11 @@ private function generateTree(string $id, TreeNode $tree, array $knownIds = []) $item = new TreeNode( $tree, new SimpleDataStore( - [ - 'member' => $member, - 'cycling' => in_array($member->getCircleId(), $knownIds) - ] - ) + [ + 'member' => $member, + 'cycling' => in_array($member->getCircleId(), $knownIds) + ] + ) ); $this->generateTree($member->getCircleId(), $item, $knownIds); } diff --git a/lib/Command/CirclesRemote.php b/lib/Command/CirclesRemote.php index b893b1abe..62048796d 100644 --- a/lib/Command/CirclesRemote.php +++ b/lib/Command/CirclesRemote.php @@ -127,11 +127,11 @@ protected function configure() { ->setDescription('remote features') ->addArgument('host', InputArgument::OPTIONAL, 'host of the remote instance of Nextcloud') ->addOption( - 'type', '', InputOption::VALUE_REQUIRED, 'set type of remote', RemoteInstance::TYPE_UNKNOWN + 'type', '', InputOption::VALUE_REQUIRED, 'set type of remote', RemoteInstance::TYPE_UNKNOWN ) ->addOption( - 'iface', '', InputOption::VALUE_REQUIRED, 'set interface to use to contact remote', - InterfaceService::$LIST_IFACE[InterfaceService::IFACE_FRONTAL] + 'iface', '', InputOption::VALUE_REQUIRED, 'set interface to use to contact remote', + InterfaceService::$LIST_IFACE[InterfaceService::IFACE_FRONTAL] ) ->addOption('yes', '', InputOption::VALUE_NONE, 'silently add the remote instance') ->addOption('all', '', InputOption::VALUE_NONE, 'display all information'); diff --git a/lib/Command/CirclesTest.php b/lib/Command/CirclesTest.php index d62783ceb..ba17339f3 100644 --- a/lib/Command/CirclesTest.php +++ b/lib/Command/CirclesTest.php @@ -133,8 +133,8 @@ protected function configure() { ->setDescription('testing some features') ->addArgument('deprecated', InputArgument::OPTIONAL, '') ->addOption( - 'are-you-aware-this-will-delete-all-my-data', '', InputOption::VALUE_REQUIRED, - 'Well, are you ?', '' + 'are-you-aware-this-will-delete-all-my-data', '', InputOption::VALUE_REQUIRED, + 'Well, are you ?', '' ) ->addOption('skip-init', '', InputOption::VALUE_NONE, 'Bypass Initialisation') ->addOption('skip-setup', '', InputOption::VALUE_NONE, 'Bypass Circles Setup') diff --git a/lib/Command/FixUniqueId.php b/lib/Command/FixUniqueId.php index 2ea79a6fd..6e844c853 100644 --- a/lib/Command/FixUniqueId.php +++ b/lib/Command/FixUniqueId.php @@ -109,8 +109,8 @@ private function swapToShortenUniqueIdInTable($circleId, $shortenUniqueId, $tabl $qb = $this->connection->getQueryBuilder(); $qb->update($table) ->where( - $qb->expr() - ->eq('circle_id', $qb->createNamedParameter($circleId)) + $qb->expr() + ->eq('circle_id', $qb->createNamedParameter($circleId)) ); $qb->set('circle_id', $qb->createNamedParameter($shortenUniqueId)); @@ -125,12 +125,12 @@ private function swapToShortenUniqueIdInShares($circleId, $shortenUniqueId) { /** @noinspection PhpMethodParametersCountMismatchInspection */ $qb->update('share') ->where( - $expr->andX( - $expr->eq( - 'share_type', $qb->createNamedParameter(Share::SHARE_TYPE_CIRCLE) - ), - $expr->eq('share_with', $qb->createNamedParameter($circleId)) - ) + $expr->andX( + $expr->eq( + 'share_type', $qb->createNamedParameter(Share::SHARE_TYPE_CIRCLE) + ), + $expr->eq('share_with', $qb->createNamedParameter($circleId)) + ) ); $qb->set('share_with', $qb->createNamedParameter($shortenUniqueId)); diff --git a/lib/Command/MembersAdd.php b/lib/Command/MembersAdd.php index 7496c0362..b0458a3a8 100644 --- a/lib/Command/MembersAdd.php +++ b/lib/Command/MembersAdd.php @@ -170,11 +170,11 @@ private function findUserFromLookup(string $search, string &$instance = ''): str try { $users = $this->retrieveJson($request); } catch ( - RequestContentException | - RequestNetworkException | - RequestResultSizeException | - RequestServerException | - RequestResultNotJsonException $e + RequestContentException | + RequestNetworkException | + RequestResultSizeException | + RequestServerException | + RequestResultNotJsonException $e ) { return ''; } diff --git a/lib/Command/MembersList.php b/lib/Command/MembersList.php index a017cd4f5..6d191a7fd 100644 --- a/lib/Command/MembersList.php +++ b/lib/Command/MembersList.php @@ -360,12 +360,12 @@ private function getMembers( } $node = new TreeNode( $tree, new SimpleDataStore( - [ - 'circle' => $circle, - 'member' => $member, - 'cycling' => in_array($member->getSingleId(), $knownIds), - ] - ) + [ + 'circle' => $circle, + 'member' => $member, + 'cycling' => in_array($member->getSingleId(), $knownIds), + ] + ) ); $this->getMembers( @@ -380,11 +380,11 @@ private function getMembers( if ($this->treeType !== 'circles-only') { new TreeNode( $tree, new SimpleDataStore( - [ - 'member' => $member, - 'cycling' => in_array($member->getSingleId(), $knownIds) - ] - ) + [ + 'member' => $member, + 'cycling' => in_array($member->getSingleId(), $knownIds) + ] + ) ); } } @@ -431,9 +431,9 @@ public function displayLeaf(SimpleDataStore $data, int $lineNumber): string { $line .= ' MemberId: ' . $member->getId(); $line .= ' Name: ' . $this->configService->displayFederatedUser( - $member, - $this->input->getOption('display-name') - ); + $member, + $this->input->getOption('display-name') + ); if ($member->hasBasedOn()) { $line .= ' Source: ' . Circle::$DEF_SOURCE[$member->getBasedOn()->getSource()]; diff --git a/lib/Db/CircleProviderRequestBuilder.php b/lib/Db/CircleProviderRequestBuilder.php index 7f06e27aa..a9f7ca45a 100644 --- a/lib/Db/CircleProviderRequestBuilder.php +++ b/lib/Db/CircleProviderRequestBuilder.php @@ -252,10 +252,10 @@ protected function linkToCircleOwner(IQueryBuilder $qb) { $qb->selectAlias('mo.user_id', 'circle_owner'); $qb->leftJoin( 'c', DeprecatedRequestBuilder::TABLE_MEMBERS, 'mo', $expr->andX( - $expr->eq('mo.circle_id', 'c.unique_id'), - $expr->eq('mo.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER)), - $expr->eq('mo.level', $qb->createNamedParameter(DeprecatedMember::LEVEL_OWNER)) - ) + $expr->eq('mo.circle_id', 'c.unique_id'), + $expr->eq('mo.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER)), + $expr->eq('mo.level', $qb->createNamedParameter(DeprecatedMember::LEVEL_OWNER)) + ) ); } @@ -352,10 +352,10 @@ protected function joinCircleMembers(IQueryBuilder $qb) { $qb->addSelect('m.user_id') ->from(DeprecatedRequestBuilder::TABLE_MEMBERS, 'm') ->andWhere( - $expr->andX( - $expr->eq('s.share_with', 'm.circle_id'), - $expr->eq('m.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER)) - ) + $expr->andX( + $expr->eq('s.share_with', 'm.circle_id'), + $expr->eq('m.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER)) + ) ); } @@ -372,10 +372,10 @@ protected function linkToFileCache(IQueryBuilder $qb, $userId) { $qb->leftJoin('s', 'filecache', 'f', $expr->eq('s.file_source', 'f.fileid')) ->leftJoin('f', 'storages', 'st', $expr->eq('f.storage', 'st.numeric_id')) ->leftJoin( - 's', 'share', 's2', $expr->andX( - $expr->eq('s.id', 's2.parent'), - $expr->eq('s2.share_with', $qb->createNamedParameter($userId)) - ) + 's', 'share', 's2', $expr->andX( + $expr->eq('s.id', 's2.parent'), + $expr->eq('s2.share_with', $qb->createNamedParameter($userId)) + ) ); $qb->selectAlias('s2.id', 'parent_id'); @@ -466,11 +466,11 @@ protected function getCompleteSelectSql() { $qb->selectDistinct('s.id') ->addSelect( - 's.*', 'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', - 'f.path_hash', 'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', - 'f.size', 'f.mtime', 'f.storage_mtime', 'f.encrypted', 'f.unencrypted_size', - 'f.etag', 'f.checksum', 'c.type AS circle_type', 'c.name AS circle_name', - 'c.alt_name AS circle_alt_name' + 's.*', 'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', + 'f.path_hash', 'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', + 'f.size', 'f.mtime', 'f.storage_mtime', 'f.encrypted', 'f.unencrypted_size', + 'f.etag', 'f.checksum', 'c.type AS circle_type', 'c.name AS circle_name', + 'c.alt_name AS circle_alt_name' ) ->selectAlias('st.id', 'storage_string_id'); @@ -492,10 +492,10 @@ private function joinShare(IQueryBuilder $qb) { $qb->from('share', 's') ->andWhere($expr->eq('s.share_type', $qb->createNamedParameter(IShare::TYPE_CIRCLE))) ->andWhere( - $expr->orX( - $expr->eq('s.item_type', $qb->createNamedParameter('file')), - $expr->eq('s.item_type', $qb->createNamedParameter('folder')) - ) + $expr->orX( + $expr->eq('s.item_type', $qb->createNamedParameter('file')), + $expr->eq('s.item_type', $qb->createNamedParameter('folder')) + ) ); } diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php index 01268ea0d..daedb4bbf 100644 --- a/lib/Db/CoreQueryBuilder.php +++ b/lib/Db/CoreQueryBuilder.php @@ -440,8 +440,8 @@ public function leftJoinRemoteInstance(string $alias): void { $aliasRemoteInstance = $this->generateAlias($alias, self::REMOTE); $this->generateRemoteInstanceSelectAlias($aliasRemoteInstance) ->leftJoin( - $alias, CoreRequestBuilder::TABLE_REMOTE, $aliasRemoteInstance, - $expr->eq($alias . '.instance', $aliasRemoteInstance . '.instance') + $alias, CoreRequestBuilder::TABLE_REMOTE, $aliasRemoteInstance, + $expr->eq($alias . '.instance', $aliasRemoteInstance . '.instance') ); } catch (RequestBuilderException $e) { } @@ -809,8 +809,8 @@ public function leftJoinInvitedBy(string $aliasMember): void { $expr = $this->expr(); $this->generateCircleSelectAlias($aliasInvitedBy) ->leftJoin( - $aliasMember, CoreRequestBuilder::TABLE_CIRCLE, $aliasInvitedBy, - $expr->eq($aliasMember . '.invited_by', $aliasInvitedBy . '.unique_id') + $aliasMember, CoreRequestBuilder::TABLE_CIRCLE, $aliasInvitedBy, + $expr->eq($aliasMember . '.invited_by', $aliasInvitedBy . '.unique_id') ); $this->leftJoinOwner($aliasInvitedBy); @@ -840,8 +840,8 @@ public function leftJoinBasedOn( $expr = $this->expr(); $this->generateCircleSelectAlias($aliasBasedOn) ->leftJoin( - $aliasMember, CoreRequestBuilder::TABLE_CIRCLE, $aliasBasedOn, - $expr->eq($aliasBasedOn . '.unique_id', $aliasMember . '.single_id') + $aliasMember, CoreRequestBuilder::TABLE_CIRCLE, $aliasBasedOn, + $expr->eq($aliasBasedOn . '.unique_id', $aliasMember . '.single_id') ); if (!is_null($initiator)) { @@ -872,14 +872,14 @@ public function leftJoinOwner(string $alias, string $field = 'unique_id'): void $expr = $this->expr(); $this->generateMemberSelectAlias($aliasMember) ->leftJoin( - $alias, CoreRequestBuilder::TABLE_MEMBER, $aliasMember, - $expr->andX( - $expr->eq($aliasMember . '.circle_id', $alias . '.' . $field), - $expr->eq( - $aliasMember . '.level', - $this->createNamedParameter(Member::LEVEL_OWNER, self::PARAM_INT) - ) - ) + $alias, CoreRequestBuilder::TABLE_MEMBER, $aliasMember, + $expr->andX( + $expr->eq($aliasMember . '.circle_id', $alias . '.' . $field), + $expr->eq( + $aliasMember . '.level', + $this->createNamedParameter(Member::LEVEL_OWNER, self::PARAM_INT) + ) + ) ); $this->leftJoinBasedOn($aliasMember); @@ -912,15 +912,15 @@ public function leftJoinMember( $expr = $this->expr(); $this->generateMemberSelectAlias($aliasMember) ->leftJoin( - $alias, CoreRequestBuilder::TABLE_MEMBER, $aliasMember, - $expr->andX( - $expr->eq($aliasMember . '.circle_id', $alias . '.' . $fieldCircleId), - $expr->eq($aliasMember . '.single_id', $alias . '.' . $fieldSingleId), - $expr->gte( - $aliasMember . '.level', - $this->createNamedParameter(Member::LEVEL_MEMBER, self::PARAM_INT) - ) - ) + $alias, CoreRequestBuilder::TABLE_MEMBER, $aliasMember, + $expr->andX( + $expr->eq($aliasMember . '.circle_id', $alias . '.' . $fieldCircleId), + $expr->eq($aliasMember . '.single_id', $alias . '.' . $fieldSingleId), + $expr->gte( + $aliasMember . '.level', + $this->createNamedParameter(Member::LEVEL_MEMBER, self::PARAM_INT) + ) + ) ); $this->leftJoinRemoteInstance($aliasMember); @@ -962,11 +962,11 @@ public function leftJoinInheritedMembers( } $this->generateMemberSelectAlias($aliasInheritedBy) ->leftJoin( - $alias, CoreRequestBuilder::TABLE_MEMBER, $aliasInheritedBy, - $expr->andX( - $expr->eq($aliasMembership . '.inheritance_last', $aliasInheritedBy . '.circle_id'), - $expr->eq($aliasMembership . '.single_id', $aliasInheritedBy . '.single_id') - ) + $alias, CoreRequestBuilder::TABLE_MEMBER, $aliasInheritedBy, + $expr->andX( + $expr->eq($aliasMembership . '.inheritance_last', $aliasInheritedBy . '.circle_id'), + $expr->eq($aliasMembership . '.single_id', $aliasInheritedBy . '.single_id') + ) ); $this->leftJoinBasedOn($aliasInheritedBy); @@ -1052,11 +1052,11 @@ public function leftJoinMembersByInheritance(string $alias, string $field = ''): $aliasInheritanceFrom = $this->generateAlias($alias, self::INHERITANCE_FROM); $this->generateMemberSelectAlias($aliasInheritanceFrom) ->leftJoin( - $aliasMembership, CoreRequestBuilder::TABLE_MEMBER, $aliasInheritanceFrom, - $expr->andX( - $expr->eq($aliasMembership . '.circle_id', $aliasInheritanceFrom . '.circle_id'), - $expr->eq($aliasMembership . '.inheritance_first', $aliasInheritanceFrom . '.single_id') - ) + $aliasMembership, CoreRequestBuilder::TABLE_MEMBER, $aliasInheritanceFrom, + $expr->andX( + $expr->eq($aliasMembership . '.circle_id', $aliasInheritanceFrom . '.circle_id'), + $expr->eq($aliasMembership . '.inheritance_first', $aliasInheritanceFrom . '.single_id') + ) ); } @@ -1232,13 +1232,13 @@ function (string $alias) use ($orXMembershipCircle, $aliasMembershipCircle) { $aliasDirectInitiator = $this->generateAlias($alias, self::DIRECT_INITIATOR, $options); $this->generateMemberSelectAlias($aliasDirectInitiator) ->leftJoin( - $helperAlias, - CoreRequestBuilder::TABLE_MEMBER, - $aliasDirectInitiator, - $expr->andX( - $this->exprLimit('single_id', $initiator->getSingleId(), $aliasDirectInitiator), - $expr->eq($aliasDirectInitiator . '.circle_id', $helperAlias . '.' . $field) - ) + $helperAlias, + CoreRequestBuilder::TABLE_MEMBER, + $aliasDirectInitiator, + $expr->andX( + $this->exprLimit('single_id', $initiator->getSingleId(), $aliasDirectInitiator), + $expr->eq($aliasDirectInitiator . '.circle_id', $helperAlias . '.' . $field) + ) ); } catch (RequestBuilderException $e) { // meaning that this path does not require DIRECT_INITIATOR; can be safely ignored @@ -1459,18 +1459,18 @@ public function leftJoinFileCache(string $aliasShare) { [] ) ->generateSelectAlias( - CoreRequestBuilder::$outsideTables[CoreRequestBuilder::TABLE_STORAGES], - $aliasStorages, - $aliasStorages, - [] + CoreRequestBuilder::$outsideTables[CoreRequestBuilder::TABLE_STORAGES], + $aliasStorages, + $aliasStorages, + [] ) ->leftJoin( - $aliasShare, CoreRequestBuilder::TABLE_FILE_CACHE, $aliasFileCache, - $expr->eq($aliasShare . '.file_source', $aliasFileCache . '.fileid') + $aliasShare, CoreRequestBuilder::TABLE_FILE_CACHE, $aliasFileCache, + $expr->eq($aliasShare . '.file_source', $aliasFileCache . '.fileid') ) ->leftJoin( - $aliasFileCache, CoreRequestBuilder::TABLE_STORAGES, $aliasStorages, - $expr->eq($aliasFileCache . '.storage', $aliasStorages . '.numeric_id') + $aliasFileCache, CoreRequestBuilder::TABLE_STORAGES, $aliasStorages, + $expr->eq($aliasFileCache . '.storage', $aliasStorages . '.numeric_id') ); } diff --git a/lib/Db/DeprecatedCirclesRequestBuilder.php b/lib/Db/DeprecatedCirclesRequestBuilder.php index e15cc2ef7..f5b3acf38 100644 --- a/lib/Db/DeprecatedCirclesRequestBuilder.php +++ b/lib/Db/DeprecatedCirclesRequestBuilder.php @@ -204,8 +204,8 @@ private function generateLimitClosed(IQueryBuilder $qb, $type) { return $qb->expr() ->eq( - 'c.type', - $qb->createNamedParameter(DeprecatedCircle::CIRCLES_CLOSED) + 'c.type', + $qb->createNamedParameter(DeprecatedCircle::CIRCLES_CLOSED) ); } @@ -223,8 +223,8 @@ private function generateLimitPublic(IQueryBuilder $qb, $type) { return $qb->expr() ->eq( - 'c.type', - $qb->createNamedParameter(DeprecatedCircle::CIRCLES_PUBLIC) + 'c.type', + $qb->createNamedParameter(DeprecatedCircle::CIRCLES_PUBLIC) ); } @@ -257,13 +257,13 @@ public function leftJoinUserIdAsViewer(IQueryBuilder $qb, string $userId, int $t ->selectAlias('u.cached_update', 'viewer_cached_update') ->selectAlias('u.level', 'viewer_level') ->leftJoin( - $this->default_select_alias, DeprecatedRequestBuilder::TABLE_MEMBERS, 'u', - $expr->andX( - $expr->eq('u.circle_id', $pf . 'unique_id'), - $expr->eq('u.user_id', $qb->createNamedParameter($userId)), - $expr->eq('u.instance', $qb->createNamedParameter($instanceId)), - $expr->eq('u.user_type', $qb->createNamedParameter($type)) - ) + $this->default_select_alias, DeprecatedRequestBuilder::TABLE_MEMBERS, 'u', + $expr->andX( + $expr->eq('u.circle_id', $pf . 'unique_id'), + $expr->eq('u.user_id', $qb->createNamedParameter($userId)), + $expr->eq('u.instance', $qb->createNamedParameter($instanceId)), + $expr->eq('u.user_type', $qb->createNamedParameter($type)) + ) ); } @@ -291,12 +291,12 @@ public function leftJoinOwner(IQueryBuilder $qb, string $ownerId = '') { ->selectAlias('o.status', 'owner_status') ->selectAlias('o.level', 'owner_level') ->leftJoin( - $this->default_select_alias, DeprecatedRequestBuilder::TABLE_MEMBERS, 'o', - $expr->andX( - $expr->eq('o.circle_id', $pf . 'unique_id'), - $expr->eq('o.level', $qb->createNamedParameter(DeprecatedMember::LEVEL_OWNER)), - $expr->eq('o.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER)) - ) + $this->default_select_alias, DeprecatedRequestBuilder::TABLE_MEMBERS, 'o', + $expr->andX( + $expr->eq('o.circle_id', $pf . 'unique_id'), + $expr->eq('o.level', $qb->createNamedParameter(DeprecatedMember::LEVEL_OWNER)), + $expr->eq('o.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER)) + ) ); if ($ownerId !== '') { @@ -331,8 +331,8 @@ protected function getCirclesUpdateSql($uniqueId) { $qb = $this->dbConnection->getQueryBuilder(); $qb->update(self::TABLE_CIRCLES) ->where( - $qb->expr() - ->eq('unique_id', $qb->createNamedParameter($uniqueId)) + $qb->expr() + ->eq('unique_id', $qb->createNamedParameter($uniqueId)) ); return $qb; @@ -350,8 +350,8 @@ protected function getCirclesDeleteSql($circleUniqueId) { $qb = $this->dbConnection->getQueryBuilder(); $qb->delete(self::TABLE_CIRCLES) ->where( - $qb->expr() - ->eq('unique_id', $qb->createNamedParameter($circleUniqueId)) + $qb->expr() + ->eq('unique_id', $qb->createNamedParameter($circleUniqueId)) ); return $qb; @@ -367,8 +367,8 @@ protected function getCirclesSelectSql() { /** @noinspection PhpMethodParametersCountMismatchInspection */ $qb->selectDistinct('c.unique_id') ->addSelect( - 'c.id', 'c.name', 'c.alt_name', 'c.description', 'c.settings', 'c.type', 'contact_addressbook', - 'contact_groupname', 'c.creation' + 'c.id', 'c.name', 'c.alt_name', 'c.description', 'c.settings', 'c.type', 'contact_addressbook', + 'contact_groupname', 'c.creation' ) ->from(DeprecatedRequestBuilder::TABLE_CIRCLES, 'c'); $this->default_select_alias = 'c'; diff --git a/lib/Db/DeprecatedMembersRequestBuilder.php b/lib/Db/DeprecatedMembersRequestBuilder.php index 561e3bd3b..7a9220988 100644 --- a/lib/Db/DeprecatedMembersRequestBuilder.php +++ b/lib/Db/DeprecatedMembersRequestBuilder.php @@ -109,12 +109,12 @@ protected function getMembersUpdateSql(string $circleId, string $userId, string /** @noinspection PhpMethodParametersCountMismatchInspection */ $qb->update(self::TABLE_MEMBERS) ->where( - $expr->andX( - $expr->eq('circle_id', $qb->createNamedParameter($circleId)), - $expr->eq('user_id', $qb->createNamedParameter($userId)), - $expr->eq('instance', $qb->createNamedParameter($instance)), - $expr->eq('user_type', $qb->createNamedParameter($type)) - ) + $expr->andX( + $expr->eq('circle_id', $qb->createNamedParameter($circleId)), + $expr->eq('user_id', $qb->createNamedParameter($userId)), + $expr->eq('instance', $qb->createNamedParameter($instance)), + $expr->eq('user_type', $qb->createNamedParameter($type)) + ) ); return $qb; diff --git a/lib/Db/DeprecatedRequestBuilder.php b/lib/Db/DeprecatedRequestBuilder.php index 54a9a178c..c5b12f527 100644 --- a/lib/Db/DeprecatedRequestBuilder.php +++ b/lib/Db/DeprecatedRequestBuilder.php @@ -470,8 +470,8 @@ protected function leftJoinCircle(IQueryBuilder $qb) { ->selectAlias('lc.alt_name', 'circle_alt_name') ->selectAlias('lc.settings', 'circle_settings') ->leftJoin( - $this->default_select_alias, DeprecatedRequestBuilder::TABLE_CIRCLES, 'lc', - $expr->eq($pf . 'circle_id', 'lc.unique_id') + $this->default_select_alias, DeprecatedRequestBuilder::TABLE_CIRCLES, 'lc', + $expr->eq($pf . 'circle_id', 'lc.unique_id') ); } diff --git a/lib/Db/EventWrapperRequest.php b/lib/Db/EventWrapperRequest.php index c1d92789f..518f995be 100644 --- a/lib/Db/EventWrapperRequest.php +++ b/lib/Db/EventWrapperRequest.php @@ -48,10 +48,10 @@ public function save(EventWrapper $wrapper): void { $qb = $this->getEventWrapperInsertSql(); $qb->setValue('token', $qb->createNamedParameter($wrapper->getToken())) ->setValue( - 'event', $qb->createNamedParameter(json_encode($wrapper->getEvent(), JSON_UNESCAPED_SLASHES)) + 'event', $qb->createNamedParameter(json_encode($wrapper->getEvent(), JSON_UNESCAPED_SLASHES)) ) ->setValue( - 'result', $qb->createNamedParameter(json_encode($wrapper->getResult(), JSON_UNESCAPED_SLASHES)) + 'result', $qb->createNamedParameter(json_encode($wrapper->getResult(), JSON_UNESCAPED_SLASHES)) ) ->setValue('instance', $qb->createNamedParameter($wrapper->getInstance())) ->setValue('interface', $qb->createNamedParameter($wrapper->getInterface())) diff --git a/lib/FederatedItems/CircleConfig.php b/lib/FederatedItems/CircleConfig.php index 293398450..d59b75e2a 100644 --- a/lib/FederatedItems/CircleConfig.php +++ b/lib/FederatedItems/CircleConfig.php @@ -52,147 +52,147 @@ class CircleConfig implements IFederatedItem, IFederatedItemAsyncProcess { - use TDeserialize; - - - /** @var CircleRequest */ - private $circleRequest; - - /** @var PermissionService */ - private $permissionService; - - /** @var ConfigService */ - private $configService; - - - /** - * CircleConfig constructor. - * - * @param CircleRequest $circleRequest - * @param PermissionService $permissionService - * @param ConfigService $configService - */ - public function __construct( - CircleRequest $circleRequest, - PermissionService $permissionService, - ConfigService $configService - ) { - $this->circleRequest = $circleRequest; - $this->permissionService = $permissionService; - $this->configService = $configService; - } + use TDeserialize; + + /** @var CircleRequest */ + private $circleRequest; - /** - * @param FederatedEvent $event - * - * @throws FederatedItemException - * @throws RequestBuilderException - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - $config = $event->getParams()->gInt('config'); + /** @var PermissionService */ + private $permissionService; - $initiatorHelper = new MemberHelper($circle->getInitiator()); - $initiatorHelper->mustBeAdmin(); + /** @var ConfigService */ + private $configService; - $listing = Circle::$DEF_CFG_CORE_FILTER; - if (!$circle->isConfig(Circle::CFG_SYSTEM)) { - $listing = array_merge($listing, Circle::$DEF_CFG_SYSTEM_FILTER); + + /** + * CircleConfig constructor. + * + * @param CircleRequest $circleRequest + * @param PermissionService $permissionService + * @param ConfigService $configService + */ + public function __construct( + CircleRequest $circleRequest, + PermissionService $permissionService, + ConfigService $configService + ) { + $this->circleRequest = $circleRequest; + $this->permissionService = $permissionService; + $this->configService = $configService; } - // filtering config values when not using Super Session - if (!$event->getParams()->gBool('superSession')) { - if ($circle->isConfig(Circle::CFG_APP)) { - $config |= Circle::CFG_APP; - } else { - $config &= ~Circle::CFG_APP; + + /** + * @param FederatedEvent $event + * + * @throws FederatedItemException + * @throws RequestBuilderException + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); + $config = $event->getParams()->gInt('config'); + + $initiatorHelper = new MemberHelper($circle->getInitiator()); + $initiatorHelper->mustBeAdmin(); + + $listing = Circle::$DEF_CFG_CORE_FILTER; + if (!$circle->isConfig(Circle::CFG_SYSTEM)) { + $listing = array_merge($listing, Circle::$DEF_CFG_SYSTEM_FILTER); } - } - $confirmed = true; - foreach ($listing as $item) { - if ($circle->isConfig($item, $config)) { - $confirmed = false; + // filtering config values when not using Super Session + if (!$event->getParams()->gBool('superSession')) { + if ($circle->isConfig(Circle::CFG_APP)) { + $config |= Circle::CFG_APP; + } else { + $config &= ~Circle::CFG_APP; + } } - } - if ($circle->isConfig(Circle::CFG_LOCAL, $config) - && !$circle->isConfig(Circle::CFG_LOCAL)) { - $config -= Circle::CFG_LOCAL; - } + $confirmed = true; + foreach ($listing as $item) { + if ($circle->isConfig($item, $config)) { + $confirmed = false; + } + } - if (!$circle->isConfig(Circle::CFG_LOCAL, $config) - && $circle->isConfig(Circle::CFG_LOCAL)) { - $config += Circle::CFG_LOCAL; - } + if ($circle->isConfig(Circle::CFG_LOCAL, $config) + && !$circle->isConfig(Circle::CFG_LOCAL)) { + $config -= Circle::CFG_LOCAL; + } - if (!$circle->isConfig(Circle::CFG_OPEN, $config) - && $circle->isConfig(Circle::CFG_OPEN) - && $circle->isConfig(Circle::CFG_REQUEST, $config) - ) { - $config -= Circle::CFG_REQUEST; - } + if (!$circle->isConfig(Circle::CFG_LOCAL, $config) + && $circle->isConfig(Circle::CFG_LOCAL)) { + $config += Circle::CFG_LOCAL; + } - if ($circle->isConfig(Circle::CFG_REQUEST, $config) - && !$circle->isConfig(Circle::CFG_REQUEST) - && !$circle->isConfig(Circle::CFG_OPEN, $config)) { - $config += Circle::CFG_OPEN; - } + if (!$circle->isConfig(Circle::CFG_OPEN, $config) + && $circle->isConfig(Circle::CFG_OPEN) + && $circle->isConfig(Circle::CFG_REQUEST, $config) + ) { + $config -= Circle::CFG_REQUEST; + } - if (!$circle->isConfig(Circle::CFG_ROOT, $config) - && $circle->isConfig(Circle::CFG_ROOT) - && $circle->isConfig(Circle::CFG_FEDERATED, $config)) { - $config -= Circle::CFG_FEDERATED; - // TODO: Broadcast message to other instances about loosing federated tag. - } + if ($circle->isConfig(Circle::CFG_REQUEST, $config) + && !$circle->isConfig(Circle::CFG_REQUEST) + && !$circle->isConfig(Circle::CFG_OPEN, $config)) { + $config += Circle::CFG_OPEN; + } - if ($circle->isConfig(Circle::CFG_FEDERATED, $config) - && !$circle->isConfig(Circle::CFG_FEDERATED) - && !$circle->isConfig(Circle::CFG_ROOT, $config)) { - $config += Circle::CFG_ROOT; - // TODO: Check locally that circle is not a member of another circle. - // TODO in that case, remove the membership (and update the memberships) - $event->getData()->sBool('_broadcastAsFederated', true); - } + if (!$circle->isConfig(Circle::CFG_ROOT, $config) + && $circle->isConfig(Circle::CFG_ROOT) + && $circle->isConfig(Circle::CFG_FEDERATED, $config)) { + $config -= Circle::CFG_FEDERATED; + // TODO: Broadcast message to other instances about loosing federated tag. + } - if (!$confirmed || $config > Circle::$DEF_CFG_MAX) { - throw new FederatedItemBadRequestException('Configuration value is not valid'); - } + if ($circle->isConfig(Circle::CFG_FEDERATED, $config) + && !$circle->isConfig(Circle::CFG_FEDERATED) + && !$circle->isConfig(Circle::CFG_ROOT, $config)) { + $config += Circle::CFG_ROOT; + // TODO: Check locally that circle is not a member of another circle. + // TODO in that case, remove the membership (and update the memberships) + $event->getData()->sBool('_broadcastAsFederated', true); + } - $new = clone $circle; - $new->setConfig($config); - $this->permissionService->confirmAllowedCircleTypes($new, $circle); + if (!$confirmed || $config > Circle::$DEF_CFG_MAX) { + throw new FederatedItemBadRequestException('Configuration value is not valid'); + } - $event->getData()->sInt('config', $new->getConfig()); + $new = clone $circle; + $new->setConfig($config); + $this->permissionService->confirmAllowedCircleTypes($new, $circle); - $event->setOutcome($this->serialize($new)); - } + $event->getData()->sInt('config', $new->getConfig()); + $event->setOutcome($this->serialize($new)); + } - /** - * @param FederatedEvent $event - */ - public function manage(FederatedEvent $event): void { - $circle = clone $event->getCircle(); - $config = $event->getData()->gInt('config'); - $circle->setConfig($config); - // TODO: Check locally that circle is not un-federated during the process - // TODO: if the circle is managed remotely, remove the circle locally - // TODO: if the circle is managed locally, remove non-local users + /** + * @param FederatedEvent $event + */ + public function manage(FederatedEvent $event): void { + $circle = clone $event->getCircle(); + $config = $event->getData()->gInt('config'); - // TODO: Check locally that circle is not federated during the process - // TODO: sync if it is to broadcast to Trusted RemoteInstance + $circle->setConfig($config); + // TODO: Check locally that circle is not un-federated during the process + // TODO: if the circle is managed remotely, remove the circle locally + // TODO: if the circle is managed locally, remove non-local users - $this->circleRequest->updateConfig($circle); - } + // TODO: Check locally that circle is not federated during the process + // TODO: sync if it is to broadcast to Trusted RemoteInstance + + $this->circleRequest->updateConfig($circle); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + } } -} diff --git a/lib/FederatedItems/CircleCreate.php b/lib/FederatedItems/CircleCreate.php index 38f725f14..bd68fe0c2 100644 --- a/lib/FederatedItems/CircleCreate.php +++ b/lib/FederatedItems/CircleCreate.php @@ -58,103 +58,103 @@ class CircleCreate implements IFederatedItemHighSeverity, IFederatedItemCircleCheckNotRequired, IFederatedItemMustBeInitializedLocally { - use TDeserialize; - - - /** @var CircleRequest */ - private $circleRequest; - - /** @var MemberRequest */ - private $memberRequest; - - /** @var CircleService */ - private $circleService; - - /** @var MembershipService */ - private $membershipService; - - /** @var EventService */ - private $eventService; - - - /** - * CircleCreate constructor. - * - * @param CircleRequest $circleRequest - * @param MemberRequest $memberRequest - * @param CircleService $circleService - * @param MembershipService $membershipService - * @param EventService $eventService - */ - public function __construct( - CircleRequest $circleRequest, - MemberRequest $memberRequest, - CircleService $circleService, - MembershipService $membershipService, - EventService $eventService - ) { - $this->circleRequest = $circleRequest; - $this->memberRequest = $memberRequest; - $this->circleService = $circleService; - $this->membershipService = $membershipService; - $this->eventService = $eventService; - } + use TDeserialize; + + + /** @var CircleRequest */ + private $circleRequest; + + /** @var MemberRequest */ + private $memberRequest; + + /** @var CircleService */ + private $circleService; + + /** @var MembershipService */ + private $membershipService; + + /** @var EventService */ + private $eventService; + + + /** + * CircleCreate constructor. + * + * @param CircleRequest $circleRequest + * @param MemberRequest $memberRequest + * @param CircleService $circleService + * @param MembershipService $membershipService + * @param EventService $eventService + */ + public function __construct( + CircleRequest $circleRequest, + MemberRequest $memberRequest, + CircleService $circleService, + MembershipService $membershipService, + EventService $eventService + ) { + $this->circleRequest = $circleRequest; + $this->memberRequest = $memberRequest; + $this->circleService = $circleService; + $this->membershipService = $membershipService; + $this->eventService = $eventService; + } - /** - * @param FederatedEvent $event - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); + /** + * @param FederatedEvent $event + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); - $event->setOutcome($this->serialize($circle)); - } + $event->setOutcome($this->serialize($circle)); + } - /** - * @param FederatedEvent $event - * - * @throws FederatedEventDSyncException - * @throws InvalidIdException - * @throws RequestBuilderException - */ - public function manage(FederatedEvent $event): void { - $circle = $event->getCircle(); - $owner = $circle->getOwner(); - - try { - $this->circleRequest->getCircle($circle->getSingleId()); - throw new FederatedEventDSyncException('Circle already exist'); - } catch (CircleNotFoundException $e) { - } + /** + * @param FederatedEvent $event + * + * @throws FederatedEventDSyncException + * @throws InvalidIdException + * @throws RequestBuilderException + */ + public function manage(FederatedEvent $event): void { + $circle = $event->getCircle(); + $owner = $circle->getOwner(); - $this->circleService->confirmName($circle); + try { + $this->circleRequest->getCircle($circle->getSingleId()); + throw new FederatedEventDSyncException('Circle already exist'); + } catch (CircleNotFoundException $e) { + } - try { - $this->memberRequest->getMemberById($owner->getId()); - throw new FederatedEventDSyncException('Owner already exist'); - } catch (MemberNotFoundException $e) { - } + $this->circleService->confirmName($circle); - if ($owner->hasInvitedBy()) { - $owner->setNoteObj('invitedBy', $owner->getInvitedBy()); - } + try { + $this->memberRequest->getMemberById($owner->getId()); + throw new FederatedEventDSyncException('Owner already exist'); + } catch (MemberNotFoundException $e) { + } - $this->circleRequest->save($circle); - $this->memberRequest->save($owner); + if ($owner->hasInvitedBy()) { + $owner->setNoteObj('invitedBy', $owner->getInvitedBy()); + } - $this->membershipService->onUpdate($owner->getSingleId()); - $this->membershipService->updatePopulation($circle); + $this->circleRequest->save($circle); + $this->memberRequest->save($owner); - $this->eventService->circleCreating($event); - } + $this->membershipService->onUpdate($owner->getSingleId()); + $this->membershipService->updatePopulation($circle); + $this->eventService->circleCreating($event); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $this->eventService->circleCreated($event, $results); + + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $this->eventService->circleCreated($event, $results); + } } -} diff --git a/lib/FederatedItems/CircleDestroy.php b/lib/FederatedItems/CircleDestroy.php index 9dbea5f86..54df469c3 100644 --- a/lib/FederatedItems/CircleDestroy.php +++ b/lib/FederatedItems/CircleDestroy.php @@ -58,86 +58,86 @@ class CircleDestroy implements IFederatedItemHighSeverity, IFederatedItemAsyncProcess, IFederatedItemMemberEmpty { - use TStringTools; - use TDeserialize; + use TStringTools; + use TDeserialize; - /** @var CircleRequest */ - private $circleRequest; + /** @var CircleRequest */ + private $circleRequest; - /** @var MemberRequest */ - private $memberRequest; + /** @var MemberRequest */ + private $memberRequest; - private $eventService; + private $eventService; - /** @var MembershipService */ - private $membershipService; + /** @var MembershipService */ + private $membershipService; - /** - * CircleDestroy constructor. - * - * @param CircleRequest $circleRequest - * @param MemberRequest $memberRequest - * @param EventService $eventService - * @param MembershipService $membershipService - */ - public function __construct( - CircleRequest $circleRequest, MemberRequest $memberRequest, EventService $eventService, - MembershipService $membershipService - ) { - $this->circleRequest = $circleRequest; - $this->memberRequest = $memberRequest; - $this->eventService = $eventService; - $this->membershipService = $membershipService; - } + /** + * CircleDestroy constructor. + * + * @param CircleRequest $circleRequest + * @param MemberRequest $memberRequest + * @param EventService $eventService + * @param MembershipService $membershipService + */ + public function __construct( + CircleRequest $circleRequest, MemberRequest $memberRequest, EventService $eventService, + MembershipService $membershipService + ) { + $this->circleRequest = $circleRequest; + $this->memberRequest = $memberRequest; + $this->eventService = $eventService; + $this->membershipService = $membershipService; + } - /** - * @param FederatedEvent $event - * - * @throws FederatedItemBadRequestException - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - if ($circle->isConfig(Circle::CFG_APP)) { - throw new FederatedItemBadRequestException( - StatusCode::$CIRCLE_DESTROY[120], - 120 - ); - } + /** + * @param FederatedEvent $event + * + * @throws FederatedItemBadRequestException + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); + if ($circle->isConfig(Circle::CFG_APP)) { + throw new FederatedItemBadRequestException( + StatusCode::$CIRCLE_DESTROY[120], + 120 + ); + } - $initiator = $circle->getInitiator(); + $initiator = $circle->getInitiator(); - $initiatorHelper = new MemberHelper($initiator); - $initiatorHelper->mustBeOwner(); + $initiatorHelper = new MemberHelper($initiator); + $initiatorHelper->mustBeOwner(); - $event->setOutcome($this->serialize($circle)); - } + $event->setOutcome($this->serialize($circle)); + } - /** - * @param FederatedEvent $event - * - * @throws RequestBuilderException - */ - public function manage(FederatedEvent $event): void { - $circle = $event->getCircle(); + /** + * @param FederatedEvent $event + * + * @throws RequestBuilderException + */ + public function manage(FederatedEvent $event): void { + $circle = $event->getCircle(); - $this->eventService->circleDestroying($event); + $this->eventService->circleDestroying($event); - $this->circleRequest->delete($circle); - $this->memberRequest->deleteAllFromCircle($circle); - $this->membershipService->onUpdate($circle->getSingleId()); - } + $this->circleRequest->delete($circle); + $this->memberRequest->deleteAllFromCircle($circle); + $this->membershipService->onUpdate($circle->getSingleId()); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $this->eventService->circleDestroyed($event, $results); + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $this->eventService->circleDestroyed($event, $results); + } } -} diff --git a/lib/FederatedItems/CircleJoin.php b/lib/FederatedItems/CircleJoin.php index 3b7abd46f..e80d9fe09 100644 --- a/lib/FederatedItems/CircleJoin.php +++ b/lib/FederatedItems/CircleJoin.php @@ -76,94 +76,94 @@ class CircleJoin implements IFederatedItemHighSeverity, IFederatedItemMemberCheckNotRequired, IFederatedItemMemberOptional { - use TStringTools; - use TNCLogger; - use TDeserialize; - - - /** @var IUserManager */ - private $userManager; - - /** @var MemberRequest */ - private $memberRequest; - - /** @var FederatedUserService */ - private $federatedUserService; - - /** @var CircleService */ - private $circleService; - - /** @var MemberService */ - private $memberService; - - /** @var MembershipService */ - private $membershipService; - - /** @var EventService */ - private $eventService; - - /** @var ConfigService */ - private $configService; - - - /** - * CircleJoin constructor. - * - * @param IUserManager $userManager - * @param MemberRequest $memberRequest - * @param FederatedUserService $federatedUserService - * @param CircleService $circleService - * @param MembershipService $membershipService - * @param EventService $eventService - * @param ConfigService $configService - */ - public function __construct( - IUserManager $userManager, - MemberRequest $memberRequest, - FederatedUserService $federatedUserService, - CircleService $circleService, - MemberService $memberService, - MembershipService $membershipService, - EventService $eventService, - ConfigService $configService - ) { - $this->userManager = $userManager; - $this->memberRequest = $memberRequest; - $this->federatedUserService = $federatedUserService; - $this->circleService = $circleService; - $this->memberService = $memberService; - $this->membershipService = $membershipService; - $this->eventService = $eventService; - $this->configService = $configService; - } + use TStringTools; + use TNCLogger; + use TDeserialize; + + + /** @var IUserManager */ + private $userManager; + + /** @var MemberRequest */ + private $memberRequest; + + /** @var FederatedUserService */ + private $federatedUserService; + + /** @var CircleService */ + private $circleService; + + /** @var MemberService */ + private $memberService; + + /** @var MembershipService */ + private $membershipService; + + /** @var EventService */ + private $eventService; + + /** @var ConfigService */ + private $configService; + + + /** + * CircleJoin constructor. + * + * @param IUserManager $userManager + * @param MemberRequest $memberRequest + * @param FederatedUserService $federatedUserService + * @param CircleService $circleService + * @param MembershipService $membershipService + * @param EventService $eventService + * @param ConfigService $configService + */ + public function __construct( + IUserManager $userManager, + MemberRequest $memberRequest, + FederatedUserService $federatedUserService, + CircleService $circleService, + MemberService $memberService, + MembershipService $membershipService, + EventService $eventService, + ConfigService $configService + ) { + $this->userManager = $userManager; + $this->memberRequest = $memberRequest; + $this->federatedUserService = $federatedUserService; + $this->circleService = $circleService; + $this->memberService = $memberService; + $this->membershipService = $membershipService; + $this->eventService = $eventService; + $this->configService = $configService; + } - /** - * @param FederatedEvent $event - * - * @throws FederatedItemBadRequestException - * @throws MembersLimitException - * @throws RequestBuilderException - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - $initiator = $circle->getInitiator(); - - $member = new Member(); - $member->importFromIFederatedUser($initiator); - $member->setCircleId($circle->getSingleId()); - if ($initiator->hasInvitedBy()) { - $member->setInvitedBy($initiator->getInvitedBy()); - } + /** + * @param FederatedEvent $event + * + * @throws FederatedItemBadRequestException + * @throws MembersLimitException + * @throws RequestBuilderException + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); + $initiator = $circle->getInitiator(); + + $member = new Member(); + $member->importFromIFederatedUser($initiator); + $member->setCircleId($circle->getSingleId()); + if ($initiator->hasInvitedBy()) { + $member->setInvitedBy($initiator->getInvitedBy()); + } - $this->manageMemberStatus($circle, $member); + $this->manageMemberStatus($circle, $member); - $this->circleService->confirmCircleNotFull($circle); + $this->circleService->confirmCircleNotFull($circle); - $event->setMember($member) - ->setOutcome($this->serialize($member)); + $event->setMember($member) + ->setOutcome($this->serialize($member)); - return; + return; // // @@ -231,90 +231,90 @@ public function verify(FederatedEvent $event): void { // ] // ) // ); - } + } - /** - * @param FederatedEvent $event - * - * @throws FederatedUserException - * @throws InvalidIdException - * @throws RequestBuilderException - * @throws RemoteNotFoundException - * @throws UnknownRemoteException - */ - public function manage(FederatedEvent $event): void { - $member = $event->getMember(); - if (!$this->memberService->insertOrUpdate($member)) { - return; - } + /** + * @param FederatedEvent $event + * + * @throws FederatedUserException + * @throws InvalidIdException + * @throws RequestBuilderException + * @throws RemoteNotFoundException + * @throws UnknownRemoteException + */ + public function manage(FederatedEvent $event): void { + $member = $event->getMember(); + if (!$this->memberService->insertOrUpdate($member)) { + return; + } - if ($member->getStatus() === Member::STATUS_REQUEST) { - $this->eventService->memberRequesting($event); - } else { - $this->membershipService->onUpdate($member->getSingleId()); - $this->eventService->memberJoining($event); - } + if ($member->getStatus() === Member::STATUS_REQUEST) { + $this->eventService->memberRequesting($event); + } else { + $this->membershipService->onUpdate($member->getSingleId()); + $this->eventService->memberJoining($event); + } - $this->membershipService->updatePopulation($event->getCircle()); - } + $this->membershipService->updatePopulation($event->getCircle()); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $member = $event->getMember(); - if ($member->getStatus() === Member::STATUS_REQUEST) { - $this->eventService->memberRequested($event, $results); - } else { - $this->eventService->memberJoined($event, $results); + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $member = $event->getMember(); + if ($member->getStatus() === Member::STATUS_REQUEST) { + $this->eventService->memberRequested($event, $results); + } else { + $this->eventService->memberJoined($event, $results); + } } - } - /** - * @param Circle $circle - * @param Member $member - * - * @throws FederatedItemBadRequestException - * @throws RequestBuilderException - */ - private function manageMemberStatus(Circle $circle, Member $member) { - try { - $knownMember = $this->memberRequest->searchMember($member); - if ($knownMember->getLevel() === Member::LEVEL_NONE) { - switch ($knownMember->getStatus()) { - case Member::STATUS_BLOCKED: - throw new Exception('Blocked'); - - case Member::STATUS_REQUEST: - throw new MemberAlreadyExistsException(StatusCode::$CIRCLE_JOIN[123], 123); - - case Member::STATUS_INVITED: - $member->setId($knownMember->getId()); - $member->setLevel(Member::LEVEL_MEMBER); - $member->setStatus(Member::STATUS_MEMBER); - - return; + /** + * @param Circle $circle + * @param Member $member + * + * @throws FederatedItemBadRequestException + * @throws RequestBuilderException + */ + private function manageMemberStatus(Circle $circle, Member $member) { + try { + $knownMember = $this->memberRequest->searchMember($member); + if ($knownMember->getLevel() === Member::LEVEL_NONE) { + switch ($knownMember->getStatus()) { + case Member::STATUS_BLOCKED: + throw new Exception('Blocked'); + + case Member::STATUS_REQUEST: + throw new MemberAlreadyExistsException(StatusCode::$CIRCLE_JOIN[123], 123); + + case Member::STATUS_INVITED: + $member->setId($knownMember->getId()); + $member->setLevel(Member::LEVEL_MEMBER); + $member->setStatus(Member::STATUS_MEMBER); + + return; + } } - } - throw new MemberAlreadyExistsException(StatusCode::$CIRCLE_JOIN[122], 122); - } catch (MemberNotFoundException $e) { - if (!$circle->isConfig(Circle::CFG_OPEN)) { - throw new FederatedItemBadRequestException(StatusCode::$CIRCLE_JOIN[124], 124); - } + throw new MemberAlreadyExistsException(StatusCode::$CIRCLE_JOIN[122], 122); + } catch (MemberNotFoundException $e) { + if (!$circle->isConfig(Circle::CFG_OPEN)) { + throw new FederatedItemBadRequestException(StatusCode::$CIRCLE_JOIN[124], 124); + } - $member->setId($this->token(ManagedModel::ID_LENGTH)); + $member->setId($this->token(ManagedModel::ID_LENGTH)); - if ($circle->isConfig(Circle::CFG_REQUEST)) { - $member->setStatus(Member::STATUS_REQUEST); - } else { - $member->setLevel(Member::LEVEL_MEMBER); - $member->setStatus(Member::STATUS_MEMBER); + if ($circle->isConfig(Circle::CFG_REQUEST)) { + $member->setStatus(Member::STATUS_REQUEST); + } else { + $member->setLevel(Member::LEVEL_MEMBER); + $member->setStatus(Member::STATUS_MEMBER); + } } } } -} diff --git a/lib/FederatedItems/CircleLeave.php b/lib/FederatedItems/CircleLeave.php index 334f00beb..a0e557cc4 100644 --- a/lib/FederatedItems/CircleLeave.php +++ b/lib/FederatedItems/CircleLeave.php @@ -67,188 +67,188 @@ class CircleLeave implements IFederatedItemAsyncProcess, IFederatedItemInitiatorMembershipNotRequired, IFederatedItemMemberOptional { - use TDeserialize; - use TNCLogger; - - - /** @var MemberRequest */ - private $memberRequest; - - /** @var CircleRequest */ - private $circleRequest; - - /** @var MembershipService */ - private $membershipService; - - /** @var EventService */ - private $eventService; - - /** @var ConfigService */ - private $configService; - - - /** - * CircleLeave constructor. - * - * @param MemberRequest $memberRequest - * @param CircleRequest $circleRequest - * @param MembershipService $membershipService - * @param EventService $eventService - * @param ConfigService $configService - */ - public function __construct( - MemberRequest $memberRequest, - CircleRequest $circleRequest, - MembershipService $membershipService, - EventService $eventService, - ConfigService $configService - ) { - $this->memberRequest = $memberRequest; - $this->circleRequest = $circleRequest; - $this->membershipService = $membershipService; - $this->eventService = $eventService; - $this->configService = $configService; - - $this->setup('app', Application::APP_ID); - } + use TDeserialize; + use TNCLogger; + + + /** @var MemberRequest */ + private $memberRequest; + + /** @var CircleRequest */ + private $circleRequest; + + /** @var MembershipService */ + private $membershipService; + + /** @var EventService */ + private $eventService; + + /** @var ConfigService */ + private $configService; + + + /** + * CircleLeave constructor. + * + * @param MemberRequest $memberRequest + * @param CircleRequest $circleRequest + * @param MembershipService $membershipService + * @param EventService $eventService + * @param ConfigService $configService + */ + public function __construct( + MemberRequest $memberRequest, + CircleRequest $circleRequest, + MembershipService $membershipService, + EventService $eventService, + ConfigService $configService + ) { + $this->memberRequest = $memberRequest; + $this->circleRequest = $circleRequest; + $this->membershipService = $membershipService; + $this->eventService = $eventService; + $this->configService = $configService; + + $this->setup('app', Application::APP_ID); + } - /** - * @param FederatedEvent $event - * - * @throws FederatedItemException - * @throws RequestBuilderException - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - $member = $circle->getInitiator(); - - if (!$event->getParams()->gBool('force')) { - $memberHelper = new MemberHelper($member); - $memberHelper->cannotBeOwner(); - } elseif ($this->configService->isLocalInstance($event->getOrigin())) { - if ($member->getLevel() === Member::LEVEL_OWNER) { + /** + * @param FederatedEvent $event + * + * @throws FederatedItemException + * @throws RequestBuilderException + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); + $member = $circle->getInitiator(); + + if (!$event->getParams()->gBool('force')) { + $memberHelper = new MemberHelper($member); + $memberHelper->cannotBeOwner(); + } elseif ($this->configService->isLocalInstance($event->getOrigin())) { + if ($member->getLevel() === Member::LEVEL_OWNER) { + try { + $newOwner = $this->selectNewOwner($circle); + $event->getData()->s('newOwnerId', $newOwner->getId()); + } catch (MemberNotFoundException $e) { + $event->getData()->sBool('destroyCircle', true); + } + } + } + if ($member->getId() === '') { try { - $newOwner = $this->selectNewOwner($circle); - $event->getData()->s('newOwnerId', $newOwner->getId()); + // make it works for not-yet-members + $probe = new CircleProbe(); + $probe->includeNonVisibleCircles(); + $member = $this->memberRequest->getMember( + $circle->getSingleId(), + $member->getSingleId(), + $probe + ); } catch (MemberNotFoundException $e) { - $event->getData()->sBool('destroyCircle', true); + throw new MemberNotFoundException(StatusCode::$CIRCLE_LEAVE[120], 120); } } - } - if ($member->getId() === '') { - try { - // make it works for not-yet-members - $probe = new CircleProbe(); - $probe->includeNonVisibleCircles(); - $member = $this->memberRequest->getMember( - $circle->getSingleId(), - $member->getSingleId(), - $probe - ); - } catch (MemberNotFoundException $e) { - throw new MemberNotFoundException(StatusCode::$CIRCLE_LEAVE[120], 120); - } - } - $event->setMember($member); - $this->memberRequest->delete($member); + $event->setMember($member); + $this->memberRequest->delete($member); - $initiator = new FederatedUser(); - $initiator->importFromIFederatedUser($member); + $initiator = new FederatedUser(); + $initiator->importFromIFederatedUser($member); - try { - $outcome = $this->circleRequest->getCircle($circle->getSingleId(), $initiator); - $event->setOutcome($this->serialize($outcome)); - } catch (CircleNotFoundException $e) { - // if member have no visibility on the circle after leaving it, we don't fill outcome + try { + $outcome = $this->circleRequest->getCircle($circle->getSingleId(), $initiator); + $event->setOutcome($this->serialize($outcome)); + } catch (CircleNotFoundException $e) { + // if member have no visibility on the circle after leaving it, we don't fill outcome + } } - } - /** - * @param FederatedEvent $event - * - * @throws RequestBuilderException - * @throws MemberNotFoundException - */ - public function manage(FederatedEvent $event): void { - $member = $event->getMember(); - $newOwnerId = $event->getData()->g('newOwnerId'); - if ($newOwnerId !== '') { - $newOwner = $this->memberRequest->getMemberById($newOwnerId); - $newOwner->setLevel(Member::LEVEL_OWNER); - $this->memberRequest->updateLevel($newOwner); - $this->membershipService->onUpdate($newOwner->getSingleId()); - } + /** + * @param FederatedEvent $event + * + * @throws RequestBuilderException + * @throws MemberNotFoundException + */ + public function manage(FederatedEvent $event): void { + $member = $event->getMember(); + $newOwnerId = $event->getData()->g('newOwnerId'); + if ($newOwnerId !== '') { + $newOwner = $this->memberRequest->getMemberById($newOwnerId); + $newOwner->setLevel(Member::LEVEL_OWNER); + $this->memberRequest->updateLevel($newOwner); + $this->membershipService->onUpdate($newOwner->getSingleId()); + } - $this->memberRequest->delete($member); + $this->memberRequest->delete($member); - $destroyingCircle = $event->getData()->gBool('destroyCircle'); - if ($destroyingCircle) { - $circle = $event->getCircle(); - $this->circleRequest->delete($circle); - } + $destroyingCircle = $event->getData()->gBool('destroyCircle'); + if ($destroyingCircle) { + $circle = $event->getCircle(); + $this->circleRequest->delete($circle); + } - $this->membershipService->onUpdate($member->getSingleId()); - $this->eventService->memberLeaving($event); + $this->membershipService->onUpdate($member->getSingleId()); + $this->eventService->memberLeaving($event); - if ($destroyingCircle) { - $this->membershipService->onUpdate($circle->getSingleId()); - $this->eventService->circleDestroying($event); - } + if ($destroyingCircle) { + $this->membershipService->onUpdate($circle->getSingleId()); + $this->eventService->circleDestroying($event); + } - $this->membershipService->updatePopulation($event->getCircle()); - } + $this->membershipService->updatePopulation($event->getCircle()); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $this->eventService->memberLeft($event, $results); + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $this->eventService->memberLeft($event, $results); - if ($event->getData()->gBool('destroyCircle')) { - $this->eventService->circleDestroyed($event, $results); + if ($event->getData()->gBool('destroyCircle')) { + $this->eventService->circleDestroyed($event, $results); + } } - } - /** - * @param Circle $circle - * - * @return Member - * @throws RequestBuilderException - * @throws MemberNotFoundException - */ - private function selectNewOwner(Circle $circle): Member { - $members = $this->memberRequest->getMembers($circle->getSingleId()); - $newOwner = null; - foreach ($members as $member) { - if ($member->getLevel() === Member::LEVEL_OWNER) { - continue; - } - if (is_null($newOwner)) { - $newOwner = $member; - continue; + /** + * @param Circle $circle + * + * @return Member + * @throws RequestBuilderException + * @throws MemberNotFoundException + */ + private function selectNewOwner(Circle $circle): Member { + $members = $this->memberRequest->getMembers($circle->getSingleId()); + $newOwner = null; + foreach ($members as $member) { + if ($member->getLevel() === Member::LEVEL_OWNER) { + continue; + } + if (is_null($newOwner)) { + $newOwner = $member; + continue; + } + + if ($member->getLevel() > $newOwner->getLevel()) { + $newOwner = $member; + } elseif ($member->getLevel() === $newOwner->getLevel() + && ($member->getJoined() < $newOwner->getJoined() + || ($this->configService->isLocalInstance($member->getInstance()) + && !$this->configService->isLocalInstance($newOwner->getInstance())) + )) { + $newOwner = $member; + } } - if ($member->getLevel() > $newOwner->getLevel()) { - $newOwner = $member; - } elseif ($member->getLevel() === $newOwner->getLevel() - && ($member->getJoined() < $newOwner->getJoined() - || ($this->configService->isLocalInstance($member->getInstance()) - && !$this->configService->isLocalInstance($newOwner->getInstance())) - )) { - $newOwner = $member; + if (is_null($newOwner)) { + throw new MemberNotFoundException(); } - } - if (is_null($newOwner)) { - throw new MemberNotFoundException(); + return $newOwner; } - - return $newOwner; } -} diff --git a/lib/FederatedItems/CircleSetting.php b/lib/FederatedItems/CircleSetting.php index f1563e586..640ca91f7 100644 --- a/lib/FederatedItems/CircleSetting.php +++ b/lib/FederatedItems/CircleSetting.php @@ -41,78 +41,78 @@ class CircleSetting implements IFederatedItem, IFederatedItemAsyncProcess { - use TDeserialize; + use TDeserialize; - /** @var CircleRequest */ - private $circleRequest; + /** @var CircleRequest */ + private $circleRequest; - /** - * CircleConfig constructor. - * - * @param CircleRequest $circleRequest - */ - public function __construct(CircleRequest $circleRequest) { - $this->circleRequest = $circleRequest; - } + /** + * CircleConfig constructor. + * + * @param CircleRequest $circleRequest + */ + public function __construct(CircleRequest $circleRequest) { + $this->circleRequest = $circleRequest; + } - /** - * @param FederatedEvent $event - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); + /** + * @param FederatedEvent $event + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); - $initiatorHelper = new MemberHelper($circle->getInitiator()); - $initiatorHelper->mustBeAdmin(); + $initiatorHelper = new MemberHelper($circle->getInitiator()); + $initiatorHelper->mustBeAdmin(); - $params = $event->getParams(); - $setting = $params->g('setting'); - $value = $params->gBool('unset') ? null : $params->g('value'); + $params = $event->getParams(); + $setting = $params->g('setting'); + $value = $params->gBool('unset') ? null : $params->g('value'); - $settings = $circle->getSettings(); + $settings = $circle->getSettings(); - if (!is_null($value)) { - $settings[$setting] = $value; - } elseif (array_key_exists($setting, $settings)) { - unset($settings[$setting]); - } + if (!is_null($value)) { + $settings[$setting] = $value; + } elseif (array_key_exists($setting, $settings)) { + unset($settings[$setting]); + } - $event->getData()->sArray('settings', $settings); + $event->getData()->sArray('settings', $settings); - $new = clone $circle; - $new->setSettings($settings); + $new = clone $circle; + $new->setSettings($settings); - $event->setOutcome($this->serialize($new)); - } + $event->setOutcome($this->serialize($new)); + } - /** - * @param FederatedEvent $event - */ - public function manage(FederatedEvent $event): void { - $circle = clone $event->getCircle(); - $settings = $event->getData()->gArray('settings'); + /** + * @param FederatedEvent $event + */ + public function manage(FederatedEvent $event): void { + $circle = clone $event->getCircle(); + $settings = $event->getData()->gArray('settings'); - $circle->setSettings($settings); - // TODO list imported from FederatedItem/CircleConfig.php - need to check first there. + $circle->setSettings($settings); + // TODO list imported from FederatedItem/CircleConfig.php - need to check first there. - // TODO: Check locally that circle is not un-federated during the process - // TODO: if the circle is managed remotely, remove the circle locally - // TODO: if the circle is managed locally, remove non-local users + // TODO: Check locally that circle is not un-federated during the process + // TODO: if the circle is managed remotely, remove the circle locally + // TODO: if the circle is managed locally, remove non-local users - // TODO: Check locally that circle is not federated during the process - // TODO: sync if it is to broadcast to Trusted RemoteInstance + // TODO: Check locally that circle is not federated during the process + // TODO: sync if it is to broadcast to Trusted RemoteInstance - $this->circleRequest->updateSettings($circle); - } + $this->circleRequest->updateSettings($circle); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + } } -} diff --git a/lib/FederatedItems/Files/FileShare.php b/lib/FederatedItems/Files/FileShare.php index a498b8a71..51dadb4ec 100644 --- a/lib/FederatedItems/Files/FileShare.php +++ b/lib/FederatedItems/Files/FileShare.php @@ -57,78 +57,78 @@ class FileShare implements IFederatedItemHighSeverity, IFederatedItemAsyncProcess, IFederatedItemMemberEmpty { - use TStringTools; - use TNCLogger; - - - /** @var MountRequest */ - private $mountRequest; - - /** @var EventService */ - private $eventService; - - /** @var ConfigService */ - private $configService; - - - /** - * FileShare constructor. - * - * @param MountRequest $mountRequest - * @param EventService $eventService - * @param ConfigService $configService - */ - public function __construct( - MountRequest $mountRequest, - EventService $eventService, - ConfigService $configService - ) { - $this->mountRequest = $mountRequest; - $this->eventService = $eventService; - $this->configService = $configService; - } + use TStringTools; + use TNCLogger; + + + /** @var MountRequest */ + private $mountRequest; + + /** @var EventService */ + private $eventService; + + /** @var ConfigService */ + private $configService; + + + /** + * FileShare constructor. + * + * @param MountRequest $mountRequest + * @param EventService $eventService + * @param ConfigService $configService + */ + public function __construct( + MountRequest $mountRequest, + EventService $eventService, + ConfigService $configService + ) { + $this->mountRequest = $mountRequest; + $this->eventService = $eventService; + $this->configService = $configService; + } - /** - * @param FederatedEvent $event - */ - public function verify(FederatedEvent $event): void { - // TODO: check (origin of file ?) and improve - // TODO: Use a share lock + /** + * @param FederatedEvent $event + */ + public function verify(FederatedEvent $event): void { + // TODO: check (origin of file ?) and improve + // TODO: Use a share lock - $this->eventService->fileSharePreparing($event); - } + $this->eventService->fileSharePreparing($event); + } - /** - * @param FederatedEvent $event - * - * @throws CircleNotFoundException - * @throws InvalidItemException - * @throws UnknownTypeException - */ - public function manage(FederatedEvent $event): void { - $mount = null; - if (!$this->configService->isLocalInstance($event->getOrigin())) { - /** @var ShareWrapper $wrappedShare */ - $wrappedShare = $event->getParams()->gObj('wrappedShare', ShareWrapper::class); - - $mount = new Mount(); - $mount->fromShare($wrappedShare); - $mount->setMountId($this->token(15)); - - $this->mountRequest->save($mount); - } + /** + * @param FederatedEvent $event + * + * @throws CircleNotFoundException + * @throws InvalidItemException + * @throws UnknownTypeException + */ + public function manage(FederatedEvent $event): void { + $mount = null; + if (!$this->configService->isLocalInstance($event->getOrigin())) { + /** @var ShareWrapper $wrappedShare */ + $wrappedShare = $event->getParams()->gObj('wrappedShare', ShareWrapper::class); - $this->eventService->fileShareCreating($event, $mount); - } + $mount = new Mount(); + $mount->fromShare($wrappedShare); + $mount->setMountId($this->token(15)); + + $this->mountRequest->save($mount); + } + $this->eventService->fileShareCreating($event, $mount); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $this->eventService->fileShareCreated($event, $results); + + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $this->eventService->fileShareCreated($event, $results); + } } -} diff --git a/lib/FederatedItems/Files/FileUnshare.php b/lib/FederatedItems/Files/FileUnshare.php index b98a6dc1e..2a1431acc 100644 --- a/lib/FederatedItems/Files/FileUnshare.php +++ b/lib/FederatedItems/Files/FileUnshare.php @@ -56,71 +56,71 @@ class FileUnshare implements IFederatedItemHighSeverity, IFederatedItemAsyncProcess, IFederatedItemMemberEmpty { - use TStringTools; - use TNCLogger; - - - /** @var MountRequest */ - private $mountRequest; - - /** @var EventService */ - private $eventService; - - /** @var ConfigService */ - private $configService; - - - /** - * FileUnshare constructor. - * - * @param MountRequest $mountRequest - * @param EventService $eventService - * @param ConfigService $configService - */ - public function __construct( - MountRequest $mountRequest, - EventService $eventService, - ConfigService $configService - ) { - $this->mountRequest = $mountRequest; - $this->eventService = $eventService; - $this->configService = $configService; - } + use TStringTools; + use TNCLogger; + + + /** @var MountRequest */ + private $mountRequest; + + /** @var EventService */ + private $eventService; + + /** @var ConfigService */ + private $configService; + + + /** + * FileUnshare constructor. + * + * @param MountRequest $mountRequest + * @param EventService $eventService + * @param ConfigService $configService + */ + public function __construct( + MountRequest $mountRequest, + EventService $eventService, + ConfigService $configService + ) { + $this->mountRequest = $mountRequest; + $this->eventService = $eventService; + $this->configService = $configService; + } - /** - * @param FederatedEvent $event - */ - public function verify(FederatedEvent $event): void { - // TODO: check and improve - // TODO: Could we use a share lock ? - } + /** + * @param FederatedEvent $event + */ + public function verify(FederatedEvent $event): void { + // TODO: check and improve + // TODO: Could we use a share lock ? + } - /** - * @param FederatedEvent $event - * - * @throws InvalidItemException - * @throws UnknownTypeException - * @throws ItemNotFoundException - */ - public function manage(FederatedEvent $event): void { - if ($this->configService->isLocalInstance($event->getOrigin())) { - return; - } + /** + * @param FederatedEvent $event + * + * @throws InvalidItemException + * @throws UnknownTypeException + * @throws ItemNotFoundException + */ + public function manage(FederatedEvent $event): void { + if ($this->configService->isLocalInstance($event->getOrigin())) { + return; + } - /** @var ShareWrapper $wrappedShare */ - $wrappedShare = $event->getParams()->gObj('wrappedShare', ShareWrapper::class); + /** @var ShareWrapper $wrappedShare */ + $wrappedShare = $event->getParams()->gObj('wrappedShare', ShareWrapper::class); - $this->mountRequest->delete($wrappedShare->getToken()); - $this->eventService->federatedShareDeleted($wrappedShare); - } + $this->mountRequest->delete($wrappedShare->getToken()); + $this->eventService->federatedShareDeleted($wrappedShare); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + } } -} diff --git a/lib/FederatedItems/ItemLock.php b/lib/FederatedItems/ItemLock.php index f3254a66d..387279dd0 100644 --- a/lib/FederatedItems/ItemLock.php +++ b/lib/FederatedItems/ItemLock.php @@ -48,83 +48,83 @@ class ItemLock implements IFederatedItem, IFederatedItemDataRequestOnly { - use TStringTools; + use TStringTools; - public const STATUS_LOCKED = 'locked'; - public const STATUS_ALREADY_LOCKED = 'already_locked'; - public const STATUS_INSTANCE_LOCKED = 'instance_locked'; + public const STATUS_LOCKED = 'locked'; + public const STATUS_ALREADY_LOCKED = 'already_locked'; + public const STATUS_INSTANCE_LOCKED = 'instance_locked'; - /** @var ShareLockRequest */ - private $shareLockRequest; + /** @var ShareLockRequest */ + private $shareLockRequest; - /** - * ItemLock constructor. - * - * @param ShareLockRequest $shareLockRequest - */ - public function __construct(ShareLockRequest $shareLockRequest) { - $this->shareLockRequest = $shareLockRequest; - } + /** + * ItemLock constructor. + * + * @param ShareLockRequest $shareLockRequest + */ + public function __construct(ShareLockRequest $shareLockRequest) { + $this->shareLockRequest = $shareLockRequest; + } - /** - * create lock in db if the lock does not exist for this circle. - * will fail if the lock already exist for anothr instance, even for another circle - * - * @param FederatedEvent $event - * - * @throws InvalidIdException - * @throws FederatedShareNotFoundException - */ - public function verify(FederatedEvent $event): void { - $itemId = $event->getParams()->g('itemId'); - $this->shareLockRequest->confirmValidId($itemId); - - $status = ''; - try { - $known = $this->shareLockRequest->getShare($itemId); - - if ($known->getInstance() === $event->getSender()) { - $status = self::STATUS_ALREADY_LOCKED; - $known = $this->shareLockRequest->getShare($itemId, $event->getCircle()->getSingleId()); - } else { - $status = self::STATUS_INSTANCE_LOCKED; - } - } catch (FederatedShareNotFoundException $e) { - $share = new FederatedShare(); - $share->setItemId($itemId); - $share->setCircleId($event->getCircle()->getSingleId()); - $share->setInstance($event->getSender()); - - $this->shareLockRequest->save($share); - $known = $this->shareLockRequest->getShare($itemId); - if ($status === '') { - $status = self::STATUS_LOCKED; + /** + * create lock in db if the lock does not exist for this circle. + * will fail if the lock already exist for anothr instance, even for another circle + * + * @param FederatedEvent $event + * + * @throws InvalidIdException + * @throws FederatedShareNotFoundException + */ + public function verify(FederatedEvent $event): void { + $itemId = $event->getParams()->g('itemId'); + $this->shareLockRequest->confirmValidId($itemId); + + $status = ''; + try { + $known = $this->shareLockRequest->getShare($itemId); + + if ($known->getInstance() === $event->getSender()) { + $status = self::STATUS_ALREADY_LOCKED; + $known = $this->shareLockRequest->getShare($itemId, $event->getCircle()->getSingleId()); + } else { + $status = self::STATUS_INSTANCE_LOCKED; + } + } catch (FederatedShareNotFoundException $e) { + $share = new FederatedShare(); + $share->setItemId($itemId); + $share->setCircleId($event->getCircle()->getSingleId()); + $share->setInstance($event->getSender()); + + $this->shareLockRequest->save($share); + $known = $this->shareLockRequest->getShare($itemId); + if ($status === '') { + $status = self::STATUS_LOCKED; + } } - } - $known->setLockStatus($status); - $event->setOutcome(['federatedShare' => $known]); - } + $known->setLockStatus($status); + $event->setOutcome(['federatedShare' => $known]); + } - /** - * @param FederatedEvent $event - */ - public function manage(FederatedEvent $event): void { + /** + * @param FederatedEvent $event + */ + public function manage(FederatedEvent $event): void { // $this->circleEventService->onSharedItemsSyncRequested($event); // // $event->setResult(new SimpleDataStore(['shares' => 'ok'])); - } + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + } } -} diff --git a/lib/FederatedItems/LoopbackTest.php b/lib/FederatedItems/LoopbackTest.php index 8b1a692fa..9e588f00e 100644 --- a/lib/FederatedItems/LoopbackTest.php +++ b/lib/FederatedItems/LoopbackTest.php @@ -46,37 +46,37 @@ class LoopbackTest implements IFederatedItem, IFederatedItemAsyncProcess, IFederatedItemLoopbackTest { - public const VERIFY = 17; - public const MANAGE = 42; + public const VERIFY = 17; + public const MANAGE = 42; - /** - * LoopbackTest constructor. - */ - public function __construct() { - } + /** + * LoopbackTest constructor. + */ + public function __construct() { + } - /** - * @param FederatedEvent $event - */ - public function verify(FederatedEvent $event): void { - $event->setData(new SimpleDataStore(['verify' => self::VERIFY])); - } + /** + * @param FederatedEvent $event + */ + public function verify(FederatedEvent $event): void { + $event->setData(new SimpleDataStore(['verify' => self::VERIFY])); + } - /** - * @param FederatedEvent $event - */ - public function manage(FederatedEvent $event): void { - $event->setResult(new SimpleDataStore(['manage' => self::MANAGE])); - } + /** + * @param FederatedEvent $event + */ + public function manage(FederatedEvent $event): void { + $event->setResult(new SimpleDataStore(['manage' => self::MANAGE])); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + } } -} diff --git a/lib/FederatedItems/MassiveMemberAdd.php b/lib/FederatedItems/MassiveMemberAdd.php index e5d570634..6c1df05bf 100644 --- a/lib/FederatedItems/MassiveMemberAdd.php +++ b/lib/FederatedItems/MassiveMemberAdd.php @@ -53,75 +53,75 @@ class MassiveMemberAdd extends SingleMemberAdd implements IFederatedItemAsyncProcess, IFederatedItemHighSeverity, IFederatedItemMemberEmpty { - use TStringTools; - use TNCLogger; + use TStringTools; + use TNCLogger; - /** - * @param FederatedEvent $event - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - $initiator = $circle->getInitiator(); + /** + * @param FederatedEvent $event + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); + $initiator = $circle->getInitiator(); - $initiatorHelper = new MemberHelper($initiator); - if (!$circle->isConfig(Circle::CFG_FRIEND)) { - $initiatorHelper->mustBeModerator(); - } + $initiatorHelper = new MemberHelper($initiator); + if (!$circle->isConfig(Circle::CFG_FRIEND)) { + $initiatorHelper->mustBeModerator(); + } - $members = $event->getMembers(); - $filtered = []; + $members = $event->getMembers(); + $filtered = []; - foreach ($members as $member) { - try { - $filtered[] = $this->generateMember($event, $circle, $member); - } catch (Exception $e) { - $this->e($e, ['event' => $event, 'circle' => $circle, 'member' => $member]); + foreach ($members as $member) { + try { + $filtered[] = $this->generateMember($event, $circle, $member); + } catch (Exception $e) { + $this->e($e, ['event' => $event, 'circle' => $circle, 'member' => $member]); + } } - } - $event->setMembers($filtered); - $event->setOutcome($this->serializeArray($filtered)); + $event->setMembers($filtered); + $event->setOutcome($this->serializeArray($filtered)); - foreach ($event->getMembers() as $member) { - $event->setMember($member); - $this->eventService->memberPreparing($event); + foreach ($event->getMembers() as $member) { + $event->setMember($member); + $this->eventService->memberPreparing($event); + } } - } - /** - * @param FederatedEvent $event - */ - public function manage(FederatedEvent $event): void { - foreach ($event->getMembers() as $member) { - try { - if (!$this->memberService->insertOrUpdate($member)) { - continue; + /** + * @param FederatedEvent $event + */ + public function manage(FederatedEvent $event): void { + foreach ($event->getMembers() as $member) { + try { + if (!$this->memberService->insertOrUpdate($member)) { + continue; + } + + $event->setMember($member); + if ($member->getStatus() === Member::STATUS_INVITED) { + $this->eventService->memberInviting($event); + } else { + $this->eventService->memberAdding($event); + } + } catch (Exception $e) { } - - $event->setMember($member); - if ($member->getStatus() === Member::STATUS_INVITED) { - $this->eventService->memberInviting($event); - } else { - $this->eventService->memberAdding($event); - } - } catch (Exception $e) { } - } - $this->membershipService->updatePopulation($event->getCircle()); - } + $this->membershipService->updatePopulation($event->getCircle()); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - foreach ($event->getMembers() as $member) { - $event->setMember($member); - $this->eventService->memberAdded($event, $results); + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + foreach ($event->getMembers() as $member) { + $event->setMember($member); + $this->eventService->memberAdded($event, $results); + } } } -} diff --git a/lib/FederatedItems/MemberDisplayName.php b/lib/FederatedItems/MemberDisplayName.php index 2f5941f3a..87c8b1aed 100644 --- a/lib/FederatedItems/MemberDisplayName.php +++ b/lib/FederatedItems/MemberDisplayName.php @@ -54,90 +54,90 @@ class MemberDisplayName implements IFederatedItem, IFederatedItemHighSeverity, IFederatedItemMemberEmpty { - use TDeserialize; - - - /** @var MemberRequest */ - private $memberRequest; - - /** @var MembershipService */ - private $membershipService; - - /** @var EventService */ - private $eventService; - - /** @var ConfigService */ - private $configService; - - - /** - * MemberDisplayName constructor. - * - * @param MemberRequest $memberRequest - * @param MembershipService $membershipService - * @param EventService $eventService - * @param ConfigService $configService - */ - public function __construct( - MemberRequest $memberRequest, - MembershipService $membershipService, - EventService $eventService, - ConfigService $configService - ) { - $this->memberRequest = $memberRequest; - $this->membershipService = $membershipService; - $this->eventService = $eventService; - $this->configService = $configService; - } + use TDeserialize; + + + /** @var MemberRequest */ + private $memberRequest; + + /** @var MembershipService */ + private $membershipService; + + /** @var EventService */ + private $eventService; + + /** @var ConfigService */ + private $configService; + + + /** + * MemberDisplayName constructor. + * + * @param MemberRequest $memberRequest + * @param MembershipService $membershipService + * @param EventService $eventService + * @param ConfigService $configService + */ + public function __construct( + MemberRequest $memberRequest, + MembershipService $membershipService, + EventService $eventService, + ConfigService $configService + ) { + $this->memberRequest = $memberRequest; + $this->membershipService = $membershipService; + $this->eventService = $eventService; + $this->configService = $configService; + } - /** - * @param FederatedEvent $event - * - * @throws FederatedItemException - * @throws FederatedItemBadRequestException - * @throws MemberLevelException - */ - public function verify(FederatedEvent $event): void { - $member = $event->getCircle() - ->getInitiator(); + /** + * @param FederatedEvent $event + * + * @throws FederatedItemException + * @throws FederatedItemBadRequestException + * @throws MemberLevelException + */ + public function verify(FederatedEvent $event): void { + $member = $event->getCircle() + ->getInitiator(); - $displayName = $event->getParams()->g('displayName'); + $displayName = $event->getParams()->g('displayName'); - if ($displayName === '') { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_DISPLAY_NAME[120], 120); - } + if ($displayName === '') { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_DISPLAY_NAME[120], 120); + } - $event->getData()->s('displayName', $displayName); + $event->getData()->s('displayName', $displayName); - $outcomeMember = clone $member; - $outcomeMember->setDisplayName($displayName); + $outcomeMember = clone $member; + $outcomeMember->setDisplayName($displayName); - $event->setOutcome($this->serialize($outcomeMember)); - } + $event->setOutcome($this->serialize($outcomeMember)); + } - /** - * @param FederatedEvent $event - */ - public function manage(FederatedEvent $event): void { - $circle = $event->getCircle(); - $member = $circle->getInitiator(); - $displayName = $event->getData()->g('displayName'); + /** + * @param FederatedEvent $event + */ + public function manage(FederatedEvent $event): void { + $circle = $event->getCircle(); + $member = $circle->getInitiator(); + $displayName = $event->getData()->g('displayName'); - $member->setDisplayName($displayName); - $this->memberRequest->updateDisplayName($member->getSingleId(), $displayName, $circle->getSingleId()); + $member->setDisplayName($displayName); + $this->memberRequest->updateDisplayName($member->getSingleId(), $displayName, $circle->getSingleId()); - $event->setMember($member); - $this->eventService->memberNameEditing($event); - } + $event->setMember($member); + $this->eventService->memberNameEditing($event); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $this->eventService->memberNameEdited($event, $results); + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $this->eventService->memberNameEdited($event, $results); + } } -} diff --git a/lib/FederatedItems/MemberLevel.php b/lib/FederatedItems/MemberLevel.php index c1a368176..82863d7a4 100644 --- a/lib/FederatedItems/MemberLevel.php +++ b/lib/FederatedItems/MemberLevel.php @@ -57,160 +57,160 @@ class MemberLevel implements IFederatedItem, IFederatedItemHighSeverity, IFederatedItemMemberRequired { - use TDeserialize; - - - /** @var MemberRequest */ - private $memberRequest; - - /** @var MembershipService */ - private $membershipService; - - /** @var EventService */ - private $eventService; - - /** @var ConfigService */ - private $configService; - - - /** - * MemberAdd constructor. - * - * @param MemberRequest $memberRequest - * @param MembershipService $membershipService - * @param EventService $eventService - * @param ConfigService $configService - */ - public function __construct( - MemberRequest $memberRequest, - MembershipService $membershipService, - EventService $eventService, - ConfigService $configService - ) { - $this->memberRequest = $memberRequest; - $this->membershipService = $membershipService; - $this->eventService = $eventService; - $this->configService = $configService; - } - - - /** - * @param FederatedEvent $event - * - * @throws FederatedItemException - * @throws FederatedItemBadRequestException - * @throws MemberLevelException - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - $member = $event->getMember(); - $initiator = $circle->getInitiator(); - $level = $event->getParams()->gInt('level'); - - if ($circle->isConfig(Circle::CFG_SINGLE) || $circle->isConfig(Circle::CFG_PERSONAL)) { - throw new FederatedItemBadRequestException('This level cannot be edited'); + use TDeserialize; + + + /** @var MemberRequest */ + private $memberRequest; + + /** @var MembershipService */ + private $membershipService; + + /** @var EventService */ + private $eventService; + + /** @var ConfigService */ + private $configService; + + + /** + * MemberAdd constructor. + * + * @param MemberRequest $memberRequest + * @param MembershipService $membershipService + * @param EventService $eventService + * @param ConfigService $configService + */ + public function __construct( + MemberRequest $memberRequest, + MembershipService $membershipService, + EventService $eventService, + ConfigService $configService + ) { + $this->memberRequest = $memberRequest; + $this->membershipService = $membershipService; + $this->eventService = $eventService; + $this->configService = $configService; } - if ($level === 0) { - // TODO check all level - throw new FederatedItemBadRequestException('invalid level'); - } - if ($member->getLevel() === $level) { - throw new FederatedItemBadRequestException('This member already have the selected level'); + /** + * @param FederatedEvent $event + * + * @throws FederatedItemException + * @throws FederatedItemBadRequestException + * @throws MemberLevelException + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); + $member = $event->getMember(); + $initiator = $circle->getInitiator(); + $level = $event->getParams()->gInt('level'); + + if ($circle->isConfig(Circle::CFG_SINGLE) || $circle->isConfig(Circle::CFG_PERSONAL)) { + throw new FederatedItemBadRequestException('This level cannot be edited'); + } + + if ($level === 0) { + // TODO check all level + throw new FederatedItemBadRequestException('invalid level'); + } + + if ($member->getLevel() === $level) { + throw new FederatedItemBadRequestException('This member already have the selected level'); + } + + $initiatorHelper = new MemberHelper($initiator); + $initiatorHelper->mustBeModerator(); + + if ($level === Member::LEVEL_OWNER) { + $this->verifySwitchOwner($member, $initiator); + } else { + $this->verifyMemberLevel($member, $initiator, $level); + } + + $event->getData()->sInt('level', $level); + + $outcomeMember = clone $member; + $outcomeMember->setLevel($level); + $event->setOutcome($this->serialize($outcomeMember)); } - $initiatorHelper = new MemberHelper($initiator); - $initiatorHelper->mustBeModerator(); - if ($level === Member::LEVEL_OWNER) { - $this->verifySwitchOwner($member, $initiator); - } else { - $this->verifyMemberLevel($member, $initiator, $level); - } - - $event->getData()->sInt('level', $level); + /** + * @param FederatedEvent $event + * + * @throws RequestBuilderException + */ + public function manage(FederatedEvent $event): void { + $member = clone $event->getMember(); + $member->setLevel($event->getData()->gInt('level')); + $this->memberRequest->updateLevel($member); - $outcomeMember = clone $member; - $outcomeMember->setLevel($level); - $event->setOutcome($this->serialize($outcomeMember)); - } + if ($member->getLevel() === Member::LEVEL_OWNER) { + $oldOwner = clone $event->getCircle()->getOwner(); + $oldOwner->setLevel(Member::LEVEL_ADMIN); + $this->memberRequest->updateLevel($oldOwner); + $this->membershipService->onUpdate($oldOwner->getSingleId()); + } + $this->membershipService->onUpdate($member->getSingleId()); - /** - * @param FederatedEvent $event - * - * @throws RequestBuilderException - */ - public function manage(FederatedEvent $event): void { - $member = clone $event->getMember(); - $member->setLevel($event->getData()->gInt('level')); - $this->memberRequest->updateLevel($member); - - if ($member->getLevel() === Member::LEVEL_OWNER) { - $oldOwner = clone $event->getCircle()->getOwner(); - $oldOwner->setLevel(Member::LEVEL_ADMIN); - $this->memberRequest->updateLevel($oldOwner); - $this->membershipService->onUpdate($oldOwner->getSingleId()); + $this->eventService->memberLevelEditing($event); } - $this->membershipService->onUpdate($member->getSingleId()); - $this->eventService->memberLevelEditing($event); - } - - - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $this->eventService->memberLevelEdited($event, $results); - } + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $this->eventService->memberLevelEdited($event, $results); + } - /** - * @param Member $member - * @param Member $initiator - * @param int $level - * - * @throws MemberLevelException - */ - private function verifyMemberLevel(Member $member, Member $initiator, int $level) { - $initiatorHelper = new MemberHelper($initiator); - $memberHelper = new MemberHelper($member); - - $memberHelper->mustBeMember(); - $memberHelper->cannotBeOwner(); - $initiatorHelper->mustBeModerator(); - - switch ($this->configService->getAppValueInt(ConfigService::HARD_MODERATION)) { - case 0: - $initiatorHelper->mustHaveLevelAboveOrEqual($level); - $initiatorHelper->mustBeHigherOrSameLevelThan($member); - break; - case 1: - $initiatorHelper->mustHaveLevelAboveOrEqual($level); - $initiatorHelper->mustBeHigherLevelThan($member); - break; - case 2: - $initiatorHelper->mustHaveLevelAbove($level); - $initiatorHelper->mustBeHigherLevelThan($member); - break; + /** + * @param Member $member + * @param Member $initiator + * @param int $level + * + * @throws MemberLevelException + */ + private function verifyMemberLevel(Member $member, Member $initiator, int $level) { + $initiatorHelper = new MemberHelper($initiator); + $memberHelper = new MemberHelper($member); + + $memberHelper->mustBeMember(); + $memberHelper->cannotBeOwner(); + $initiatorHelper->mustBeModerator(); + + switch ($this->configService->getAppValueInt(ConfigService::HARD_MODERATION)) { + case 0: + $initiatorHelper->mustHaveLevelAboveOrEqual($level); + $initiatorHelper->mustBeHigherOrSameLevelThan($member); + break; + case 1: + $initiatorHelper->mustHaveLevelAboveOrEqual($level); + $initiatorHelper->mustBeHigherLevelThan($member); + break; + case 2: + $initiatorHelper->mustHaveLevelAbove($level); + $initiatorHelper->mustBeHigherLevelThan($member); + break; + } } - } - /** - * @param Member $member - * @param Member $initiator - */ - private function verifySwitchOwner(Member $member, Member $initiator) { - // TODO: check on NO_OWNER circle - $initiatorHelper = new MemberHelper($initiator); - $memberHelper = new MemberHelper($member); - - $initiatorHelper->mustBeOwner(); - $memberHelper->mustBeMember(); - $memberHelper->cannotBeOwner(); + /** + * @param Member $member + * @param Member $initiator + */ + private function verifySwitchOwner(Member $member, Member $initiator) { + // TODO: check on NO_OWNER circle + $initiatorHelper = new MemberHelper($initiator); + $memberHelper = new MemberHelper($member); + + $initiatorHelper->mustBeOwner(); + $memberHelper->mustBeMember(); + $memberHelper->cannotBeOwner(); + } } -} diff --git a/lib/FederatedItems/MemberRemove.php b/lib/FederatedItems/MemberRemove.php index f8dd18a3e..d09ca0587 100644 --- a/lib/FederatedItems/MemberRemove.php +++ b/lib/FederatedItems/MemberRemove.php @@ -55,77 +55,77 @@ class MemberRemove implements IFederatedItemMemberRequired { - /** @var MemberRequest */ - private $memberRequest; - - /** @var MembershipService */ - private $membershipService; - - /** @var EventService */ - private $eventService; - - - /** - * MemberAdd constructor. - * - * @param MemberRequest $memberRequest - * @param MembershipService $membershipService - * @param EventService $eventService - */ - public function __construct( - MemberRequest $memberRequest, - MembershipService $membershipService, - EventService $eventService - ) { - $this->memberRequest = $memberRequest; - $this->membershipService = $membershipService; - $this->eventService = $eventService; + /** @var MemberRequest */ + private $memberRequest; + + /** @var MembershipService */ + private $membershipService; + + /** @var EventService */ + private $eventService; + + + /** + * MemberAdd constructor. + * + * @param MemberRequest $memberRequest + * @param MembershipService $membershipService + * @param EventService $eventService + */ + public function __construct( + MemberRequest $memberRequest, + MembershipService $membershipService, + EventService $eventService + ) { + $this->memberRequest = $memberRequest; + $this->membershipService = $membershipService; + $this->eventService = $eventService; + } + + + /** + * @param FederatedEvent $event + * + * @throws FederatedItemException + */ + public function verify(FederatedEvent $event): void { + $circle = $event->getCircle(); + $member = $event->getMember(); + $initiator = $circle->getInitiator(); + + $initiatorHelper = new MemberHelper($initiator); + $initiatorHelper->mustBeModerator(); + $initiatorHelper->mustBeHigherLevelThan($member); + + $memberHelper = new MemberHelper($member); + $memberHelper->cannotBeOwner(); + + $event->setOutcome([]); + } + + + /** + * @param FederatedEvent $event + * + * @throws RequestBuilderException + */ + public function manage(FederatedEvent $event): void { + $member = $event->getMember(); + $this->memberRequest->delete($member); + + $this->membershipService->onUpdate($member->getSingleId()); + // TODO: Remove invited members from this user that have not accepted their invitation + + $this->eventService->memberRemoving($event); + $this->membershipService->updatePopulation($event->getCircle()); + } + + + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $this->eventService->memberRemoved($event, $results); + } } - - - /** - * @param FederatedEvent $event - * - * @throws FederatedItemException - */ - public function verify(FederatedEvent $event): void { - $circle = $event->getCircle(); - $member = $event->getMember(); - $initiator = $circle->getInitiator(); - - $initiatorHelper = new MemberHelper($initiator); - $initiatorHelper->mustBeModerator(); - $initiatorHelper->mustBeHigherLevelThan($member); - - $memberHelper = new MemberHelper($member); - $memberHelper->cannotBeOwner(); - - $event->setOutcome([]); - } - - - /** - * @param FederatedEvent $event - * - * @throws RequestBuilderException - */ - public function manage(FederatedEvent $event): void { - $member = $event->getMember(); - $this->memberRequest->delete($member); - - $this->membershipService->onUpdate($member->getSingleId()); - // TODO: Remove invited members from this user that have not accepted their invitation - - $this->eventService->memberRemoving($event); - $this->membershipService->updatePopulation($event->getCircle()); - } - - - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $this->eventService->memberRemoved($event, $results); - } -} diff --git a/lib/FederatedItems/SharedItemsSync.php b/lib/FederatedItems/SharedItemsSync.php index ff7edcc58..95acac22d 100644 --- a/lib/FederatedItems/SharedItemsSync.php +++ b/lib/FederatedItems/SharedItemsSync.php @@ -47,39 +47,39 @@ class SharedItemsSync implements IFederatedItemLimitedToInstanceWithMembership { - // TODO: testing that IFederatedItemLimitedToInstanceWithMembership is working (since multi-instance) - // TODO: implements IFederatedItemInstanceMember to the check procedure + // TODO: testing that IFederatedItemLimitedToInstanceWithMembership is working (since multi-instance) + // TODO: implements IFederatedItemInstanceMember to the check procedure - /** @var CircleEventService */ - private $circleEventService; + /** @var CircleEventService */ + private $circleEventService; - public function __construct(CircleEventService $circleEventService) { - $this->circleEventService = $circleEventService; - } + public function __construct(CircleEventService $circleEventService) { + $this->circleEventService = $circleEventService; + } - /** - * @param FederatedEvent $event - */ - public function verify(FederatedEvent $event): void { - } + /** + * @param FederatedEvent $event + */ + public function verify(FederatedEvent $event): void { + } - /** - * @param FederatedEvent $event - */ - public function manage(FederatedEvent $event): void { - $this->circleEventService->onSharedItemsSyncRequested($event); + /** + * @param FederatedEvent $event + */ + public function manage(FederatedEvent $event): void { + $this->circleEventService->onSharedItemsSyncRequested($event); - $event->setResult(new SimpleDataStore(['shares' => 'ok'])); - } + $event->setResult(new SimpleDataStore(['shares' => 'ok'])); + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + } } -} diff --git a/lib/FederatedItems/SingleMemberAdd.php b/lib/FederatedItems/SingleMemberAdd.php index 98b441f16..9cc5396ef 100644 --- a/lib/FederatedItems/SingleMemberAdd.php +++ b/lib/FederatedItems/SingleMemberAdd.php @@ -86,127 +86,127 @@ class SingleMemberAdd implements IFederatedItemHighSeverity, IFederatedItemMemberRequired, IFederatedItemMemberCheckNotRequired { - use TDeserialize; - - - use TStringTools; - use TNCLogger; - - - /** @var IUserManager */ - protected $userManager; - - /** @var MemberRequest */ - protected $memberRequest; - - /** @var FederatedUserService */ - protected $federatedUserService; - - /** @var RemoteStreamService */ - protected $remoteStreamService; - - /** @var CircleService */ - protected $circleService; - - /** @var MemberService */ - protected $memberService; - - /** @var MembershipService */ - protected $membershipService; - - /** @var EventService */ - protected $eventService; - - /** @var ConfigService */ - protected $configService; - - - /** - * SingleMemberAdd constructor. - * - * @param IUserManager $userManager - * @param MemberRequest $memberRequest - * @param FederatedUserService $federatedUserService - * @param RemoteStreamService $remoteStreamService - * @param CircleService $circleService - * @param MemberService $memberService - * @param MembershipService $membershipService - * @param EventService $eventService - * @param ConfigService $configService - */ - public function __construct( - IUserManager $userManager, - MemberRequest $memberRequest, - FederatedUserService $federatedUserService, - RemoteStreamService $remoteStreamService, - CircleService $circleService, - MemberService $memberService, - MembershipService $membershipService, - EventService $eventService, - ConfigService $configService - ) { - $this->userManager = $userManager; - $this->memberRequest = $memberRequest; - $this->federatedUserService = $federatedUserService; - $this->remoteStreamService = $remoteStreamService; - $this->circleService = $circleService; - $this->memberService = $memberService; - $this->membershipService = $membershipService; - $this->eventService = $eventService; - $this->configService = $configService; - } - - - /** - * @param FederatedEvent $event - * - * @throws FederatedItemBadRequestException - * @throws FederatedItemNotFoundException - * @throws FederatedItemServerException - * @throws FederatedItemRemoteException - * @throws FederatedItemException - * @throws RequestBuilderException - */ - public function verify(FederatedEvent $event): void { - $member = $event->getMember(); - $circle = $event->getCircle(); - $initiator = $circle->getInitiator(); - - $initiatorHelper = new MemberHelper($initiator); - if (!$circle->isConfig(Circle::CFG_FRIEND)) { - $initiatorHelper->mustBeModerator(); + use TDeserialize; + + + use TStringTools; + use TNCLogger; + + + /** @var IUserManager */ + protected $userManager; + + /** @var MemberRequest */ + protected $memberRequest; + + /** @var FederatedUserService */ + protected $federatedUserService; + + /** @var RemoteStreamService */ + protected $remoteStreamService; + + /** @var CircleService */ + protected $circleService; + + /** @var MemberService */ + protected $memberService; + + /** @var MembershipService */ + protected $membershipService; + + /** @var EventService */ + protected $eventService; + + /** @var ConfigService */ + protected $configService; + + + /** + * SingleMemberAdd constructor. + * + * @param IUserManager $userManager + * @param MemberRequest $memberRequest + * @param FederatedUserService $federatedUserService + * @param RemoteStreamService $remoteStreamService + * @param CircleService $circleService + * @param MemberService $memberService + * @param MembershipService $membershipService + * @param EventService $eventService + * @param ConfigService $configService + */ + public function __construct( + IUserManager $userManager, + MemberRequest $memberRequest, + FederatedUserService $federatedUserService, + RemoteStreamService $remoteStreamService, + CircleService $circleService, + MemberService $memberService, + MembershipService $membershipService, + EventService $eventService, + ConfigService $configService + ) { + $this->userManager = $userManager; + $this->memberRequest = $memberRequest; + $this->federatedUserService = $federatedUserService; + $this->remoteStreamService = $remoteStreamService; + $this->circleService = $circleService; + $this->memberService = $memberService; + $this->membershipService = $membershipService; + $this->eventService = $eventService; + $this->configService = $configService; } - $member = $this->generateMember($event, $circle, $member); - $event->setMembers([$member]); - $event->setOutcome($this->serialize($member)); + /** + * @param FederatedEvent $event + * + * @throws FederatedItemBadRequestException + * @throws FederatedItemNotFoundException + * @throws FederatedItemServerException + * @throws FederatedItemRemoteException + * @throws FederatedItemException + * @throws RequestBuilderException + */ + public function verify(FederatedEvent $event): void { + $member = $event->getMember(); + $circle = $event->getCircle(); + $initiator = $circle->getInitiator(); + + $initiatorHelper = new MemberHelper($initiator); + if (!$circle->isConfig(Circle::CFG_FRIEND)) { + $initiatorHelper->mustBeModerator(); + } - $this->eventService->memberPreparing($event); - } + $member = $this->generateMember($event, $circle, $member); + $event->setMembers([$member]); + $event->setOutcome($this->serialize($member)); - /** - * @param FederatedEvent $event - * - * @throws InvalidIdException - * @throws RemoteNotFoundException - * @throws RequestBuilderException - * @throws UnknownRemoteException - */ - public function manage(FederatedEvent $event): void { - $member = $event->getMember(); - if (!$this->memberService->insertOrUpdate($member)) { - return; + $this->eventService->memberPreparing($event); } - if ($member->getStatus() === Member::STATUS_INVITED) { - $this->eventService->memberInviting($event); - } else { - $this->eventService->memberAdding($event); - } - $this->membershipService->updatePopulation($event->getCircle()); + /** + * @param FederatedEvent $event + * + * @throws InvalidIdException + * @throws RemoteNotFoundException + * @throws RequestBuilderException + * @throws UnknownRemoteException + */ + public function manage(FederatedEvent $event): void { + $member = $event->getMember(); + if (!$this->memberService->insertOrUpdate($member)) { + return; + } + + if ($member->getStatus() === Member::STATUS_INVITED) { + $this->eventService->memberInviting($event); + } else { + $this->eventService->memberAdding($event); + } + + $this->membershipService->updatePopulation($event->getCircle()); // // // // TODO: verifiez comment se passe le cached name sur un member_add @@ -228,20 +228,20 @@ public function manage(FederatedEvent $event): void { // // $event->setResult(new SimpleDataStore($result)); // $this->eventsService->onMemberNew($circle, $member); - } + } - /** - * @param FederatedEvent $event - * @param array $results - */ - public function result(FederatedEvent $event, array $results): void { - $member = $event->getMember(); - if ($member->getStatus() === Member::STATUS_INVITED) { - $this->eventService->memberInvited($event, $results); - } else { - $this->eventService->memberAdded($event, $results); - } + /** + * @param FederatedEvent $event + * @param array $results + */ + public function result(FederatedEvent $event, array $results): void { + $member = $event->getMember(); + if ($member->getStatus() === Member::STATUS_INVITED) { + $this->eventService->memberInvited($event, $results); + } else { + $this->eventService->memberAdded($event, $results); + } // $password = $cachedName = ''; // $circle = $member = null; @@ -285,165 +285,165 @@ public function result(FederatedEvent $event, array $results): void { // $this->memberIsMailbox($circle, $recipient, $links, $password); // } // } - } - - - /** - * @param FederatedEvent $event - * @param Circle $circle - * @param Member $member - * - * @return Member - * @throws CircleNotFoundException - * @throws FederatedItemBadRequestException - * @throws FederatedItemException - * @throws FederatedUserException - * @throws FederatedUserNotFoundException - * @throws InvalidIdException - * @throws MembersLimitException - * @throws OwnerNotFoundException - * @throws RemoteInstanceException - * @throws RemoteNotFoundException - * @throws RemoteResourceNotFoundException - * @throws SingleCircleNotFoundException - * @throws UnknownRemoteException - * @throws UserTypeNotFoundException - * @throws RequestBuilderException - */ - protected function generateMember(FederatedEvent $event, Circle $circle, Member $member): Member { - try { - if ($member->getSingleId() !== '') { - $userId = $member->getSingleId() . '@' . $member->getInstance(); - $federatedUser = $this->federatedUserService->getFederatedUser($userId, Member::TYPE_SINGLE); - } else { - $userId = $member->getUserId() . '@' . $member->getInstance(); - $federatedUser = $this->federatedUserService->getFederatedUser( - $userId, - $member->getUserType() - ); - } - } catch (MemberNotFoundException $e) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[120], 120); } - $allowedTypes = $this->configService->getAppValueInt(ConfigService::ALLOWED_TYPES); - if ($federatedUser->getUserType() < Member::TYPE_APP - && ($allowedTypes & $federatedUser->getUserType()) === 0) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[132], 132); - } - - if ($federatedUser->getBasedOn()->isConfig(Circle::CFG_ROOT)) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[125], 125); - } - if ($circle->isConfig(Circle::CFG_LOCAL) - && $federatedUser->getUserType() === Member::TYPE_CIRCLE - && !$federatedUser->getBasedOn()->isConfig(Circle::CFG_LOCAL)) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[131], 131); - } + /** + * @param FederatedEvent $event + * @param Circle $circle + * @param Member $member + * + * @return Member + * @throws CircleNotFoundException + * @throws FederatedItemBadRequestException + * @throws FederatedItemException + * @throws FederatedUserException + * @throws FederatedUserNotFoundException + * @throws InvalidIdException + * @throws MembersLimitException + * @throws OwnerNotFoundException + * @throws RemoteInstanceException + * @throws RemoteNotFoundException + * @throws RemoteResourceNotFoundException + * @throws SingleCircleNotFoundException + * @throws UnknownRemoteException + * @throws UserTypeNotFoundException + * @throws RequestBuilderException + */ + protected function generateMember(FederatedEvent $event, Circle $circle, Member $member): Member { + try { + if ($member->getSingleId() !== '') { + $userId = $member->getSingleId() . '@' . $member->getInstance(); + $federatedUser = $this->federatedUserService->getFederatedUser($userId, Member::TYPE_SINGLE); + } else { + $userId = $member->getUserId() . '@' . $member->getInstance(); + $federatedUser = $this->federatedUserService->getFederatedUser( + $userId, + $member->getUserType() + ); + } + } catch (MemberNotFoundException $e) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[120], 120); + } - if ($member->getSingleId() === $circle->getSingleId()) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[128], 128); - } + $allowedTypes = $this->configService->getAppValueInt(ConfigService::ALLOWED_TYPES); + if ($federatedUser->getUserType() < Member::TYPE_APP + && ($allowedTypes & $federatedUser->getUserType()) === 0) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[132], 132); + } - if (!$this->configService->isLocalInstance($member->getInstance())) { - if ($circle->isConfig(Circle::CFG_LOCAL)) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[126], 126); + if ($federatedUser->getBasedOn()->isConfig(Circle::CFG_ROOT)) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[125], 125); } - if (!$circle->isConfig(Circle::CFG_FEDERATED)) { - $remoteInstance = $this->remoteStreamService->getCachedRemoteInstance($member->getInstance()); - if ($remoteInstance->getType() !== RemoteInstance::TYPE_GLOBALSCALE) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[127], 127); - } + if ($circle->isConfig(Circle::CFG_LOCAL) + && $federatedUser->getUserType() === Member::TYPE_CIRCLE + && !$federatedUser->getBasedOn()->isConfig(Circle::CFG_LOCAL)) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[131], 131); } - } - $member->importFromIFederatedUser($federatedUser); - $member->setCircleId($circle->getSingleId()); - $member->setCircle($circle); + if ($member->getSingleId() === $circle->getSingleId()) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[128], 128); + } - $this->confirmPatron($event, $member); - $this->manageMemberStatus($circle, $member); + if (!$this->configService->isLocalInstance($member->getInstance())) { + if ($circle->isConfig(Circle::CFG_LOCAL)) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[126], 126); + } - $this->circleService->confirmCircleNotFull($circle); + if (!$circle->isConfig(Circle::CFG_FEDERATED)) { + $remoteInstance = $this->remoteStreamService->getCachedRemoteInstance($member->getInstance()); + if ($remoteInstance->getType() !== RemoteInstance::TYPE_GLOBALSCALE) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[127], 127); + } + } + } - // The idea is that adding the member during the self::verify() will help during the broadcasting - // of the event to Federated RemoteInstance for their first member. - $this->memberRequest->insertOrUpdate($member); + $member->importFromIFederatedUser($federatedUser); + $member->setCircleId($circle->getSingleId()); + $member->setCircle($circle); - return $member; - } + $this->confirmPatron($event, $member); + $this->manageMemberStatus($circle, $member); + $this->circleService->confirmCircleNotFull($circle); - /** - * @param Circle $circle - * @param Member $member - * - * @throws FederatedItemBadRequestException - * @throws RequestBuilderException - */ - private function manageMemberStatus(Circle $circle, Member $member) { - try { - $knownMember = $this->memberRequest->searchMember($member); - $member->setId($knownMember->getId()); + // The idea is that adding the member during the self::verify() will help during the broadcasting + // of the event to Federated RemoteInstance for their first member. + $this->memberRequest->insertOrUpdate($member); - if ($knownMember->getLevel() === Member::LEVEL_NONE) { - switch ($knownMember->getStatus()) { - case Member::STATUS_BLOCKED: - if ($circle->isConfig(Circle::CFG_INVITE)) { - $member->setStatus(Member::STATUS_INVITED); - } - - return; + return $member; + } - case Member::STATUS_REQUEST: - $member->setLevel(Member::LEVEL_MEMBER); - $member->setStatus(Member::STATUS_MEMBER); - return; + /** + * @param Circle $circle + * @param Member $member + * + * @throws FederatedItemBadRequestException + * @throws RequestBuilderException + */ + private function manageMemberStatus(Circle $circle, Member $member) { + try { + $knownMember = $this->memberRequest->searchMember($member); + $member->setId($knownMember->getId()); + + if ($knownMember->getLevel() === Member::LEVEL_NONE) { + switch ($knownMember->getStatus()) { + case Member::STATUS_BLOCKED: + if ($circle->isConfig(Circle::CFG_INVITE)) { + $member->setStatus(Member::STATUS_INVITED); + } + + return; + + case Member::STATUS_REQUEST: + $member->setLevel(Member::LEVEL_MEMBER); + $member->setStatus(Member::STATUS_MEMBER); + + return; + + case Member::STATUS_INVITED: + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[123], 123); + } + } - case Member::STATUS_INVITED: - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[123], 123); + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[122], 122); + } catch (MemberNotFoundException $e) { + $member->setId($this->token(ManagedModel::ID_LENGTH)); + + if ($circle->isConfig(Circle::CFG_INVITE) + && $member->getUserType() !== Member::TYPE_MAIL + && $member->getUserType() !== Member::TYPE_CONTACT) { + $member->setStatus(Member::STATUS_INVITED); + } else { + $member->setLevel(Member::LEVEL_MEMBER); + $member->setStatus(Member::STATUS_MEMBER); } } + } - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[122], 122); - } catch (MemberNotFoundException $e) { - $member->setId($this->token(ManagedModel::ID_LENGTH)); - if ($circle->isConfig(Circle::CFG_INVITE) - && $member->getUserType() !== Member::TYPE_MAIL - && $member->getUserType() !== Member::TYPE_CONTACT) { - $member->setStatus(Member::STATUS_INVITED); - } else { - $member->setLevel(Member::LEVEL_MEMBER); - $member->setStatus(Member::STATUS_MEMBER); + /** + * @param FederatedEvent $event + * @param Member $member + * + * @throws FederatedItemBadRequestException + * @throws FederatedUserException + * @throws RemoteNotFoundException + * @throws RequestBuilderException + * @throws UnknownRemoteException + */ + private function confirmPatron(FederatedEvent $event, Member $member): void { + if (!$member->hasInvitedBy()) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[129], 129); } - } - } - - /** - * @param FederatedEvent $event - * @param Member $member - * - * @throws FederatedItemBadRequestException - * @throws FederatedUserException - * @throws RemoteNotFoundException - * @throws RequestBuilderException - * @throws UnknownRemoteException - */ - private function confirmPatron(FederatedEvent $event, Member $member): void { - if (!$member->hasInvitedBy()) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[129], 129); - } + $patron = $member->getInvitedBy(); + if ($patron->getInstance() !== $event->getSender()) { + throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[130], 130); + } - $patron = $member->getInvitedBy(); - if ($patron->getInstance() !== $event->getSender()) { - throw new FederatedItemBadRequestException(StatusCode::$MEMBER_ADD[130], 130); + $this->federatedUserService->confirmSingleIdUniqueness($patron); } - - $this->federatedUserService->confirmSingleIdUniqueness($patron); } -} diff --git a/lib/Model/FederatedUser.php b/lib/Model/FederatedUser.php index ac6a7ca2e..8e19e3405 100644 --- a/lib/Model/FederatedUser.php +++ b/lib/Model/FederatedUser.php @@ -56,429 +56,429 @@ class FederatedUser extends ManagedModel implements IDeserializable, IQueryRow, JsonSerializable { - use TArrayTools; - use TDeserialize; + use TArrayTools; + use TDeserialize; - /** @var string */ - private $singleId = ''; + /** @var string */ + private $singleId = ''; - /** @var string */ - private $userId; + /** @var string */ + private $userId; - /** @var int */ - private $userType; + /** @var int */ + private $userType; - /** @var string */ - private $displayName = ''; + /** @var string */ + private $displayName = ''; - /** @var Circle */ - private $basedOn; + /** @var Circle */ + private $basedOn; - /** @var int */ - private $config = 0; + /** @var int */ + private $config = 0; - /** @var string */ - private $instance; + /** @var string */ + private $instance; - /** @var Membership */ - private $inheritance; + /** @var Membership */ + private $inheritance; - /** @var Membership[] */ - private $memberships = null; + /** @var Membership[] */ + private $memberships = null; - /** - * FederatedUser constructor. - */ - public function __construct() { - } - - - /** - * @param string $userId - * @param string $instance - * @param int $type - * @param string $displayName - * @param Circle|null $basedOn - * - * @return $this - */ - public function set( - string $userId, - string $instance = '', - int $type = Member::TYPE_USER, - string $displayName = '', - ?Circle $basedOn = null - ): self { - $this->userId = $userId; - $this->setInstance($instance); - $this->userType = $type; - $this->displayName = ($displayName === '') ? $userId : $displayName; - $this->basedOn = $basedOn; - - return $this; - } - - - /** - * @param string $singleId - * - * @return self - */ - public function setSingleId(string $singleId): self { - $this->singleId = $singleId; - - return $this; - } + /** + * FederatedUser constructor. + */ + public function __construct() { + } - /** - * @return string - */ - public function getSingleId(): string { - return $this->singleId; - } + /** + * @param string $userId + * @param string $instance + * @param int $type + * @param string $displayName + * @param Circle|null $basedOn + * + * @return $this + */ + public function set( + string $userId, + string $instance = '', + int $type = Member::TYPE_USER, + string $displayName = '', + ?Circle $basedOn = null + ): self { + $this->userId = $userId; + $this->setInstance($instance); + $this->userType = $type; + $this->displayName = ($displayName === '') ? $userId : $displayName; + $this->basedOn = $basedOn; + + return $this; + } - /** - * @param string $userId - * - * @return self - */ - public function setUserId(string $userId): self { - $this->userId = $userId; - return $this; - } + /** + * @param string $singleId + * + * @return self + */ + public function setSingleId(string $singleId): self { + $this->singleId = $singleId; - /** - * @return string - */ - public function getUserId(): string { - return $this->userId; - } + return $this; + } + /** + * @return string + */ + public function getSingleId(): string { + return $this->singleId; + } - /** - * @param int $userType - * - * @return self - */ - public function setUserType(int $userType): self { - $this->userType = $userType; - return $this; - } + /** + * @param string $userId + * + * @return self + */ + public function setUserId(string $userId): self { + $this->userId = $userId; - /** - * @return int - */ - public function getUserType(): int { - return $this->userType; - } - - /** - * @param string $displayName - * - * @return FederatedUser - */ - public function setDisplayName(string $displayName): self { - $this->displayName = $displayName; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getUserId(): string { + return $this->userId; + } - /** - * @return string - */ - public function getDisplayName(): string { - return $this->displayName; - } + /** + * @param int $userType + * + * @return self + */ + public function setUserType(int $userType): self { + $this->userType = $userType; - /** - * @return bool - */ - public function hasBasedOn(): bool { - return !is_null($this->basedOn); - } + return $this; + } - /** - * @param Circle|null $basedOn - * - * @return $this - */ - public function setBasedOn(Circle $basedOn): self { - $this->basedOn = $basedOn; + /** + * @return int + */ + public function getUserType(): int { + return $this->userType; + } - return $this; - } + /** + * @param string $displayName + * + * @return FederatedUser + */ + public function setDisplayName(string $displayName): self { + $this->displayName = $displayName; - /** - * @return Circle - */ - public function getBasedOn(): Circle { - return $this->basedOn; - } + return $this; + } + /** + * @return string + */ + public function getDisplayName(): string { + return $this->displayName; + } - /** - * @param int $config - * - * @return self - */ - public function setConfig(int $config): self { - $this->config = $config; - return $this; - } + /** + * @return bool + */ + public function hasBasedOn(): bool { + return !is_null($this->basedOn); + } - /** - * @return int - */ - public function getConfig(): int { - return $this->config; - } + /** + * @param Circle|null $basedOn + * + * @return $this + */ + public function setBasedOn(Circle $basedOn): self { + $this->basedOn = $basedOn; + return $this; + } - /** - * @param string $instance - * - * @return self - */ - public function setInstance(string $instance): self { - if ($instance === '') { - // TODO: is it needed ? - $instance = $this->getManager()->getLocalInstance(); + /** + * @return Circle + */ + public function getBasedOn(): Circle { + return $this->basedOn; } - $this->instance = $instance; - return $this; - } + /** + * @param int $config + * + * @return self + */ + public function setConfig(int $config): self { + $this->config = $config; - /** - * @return string - */ - public function getInstance(): string { - return $this->instance; - } + return $this; + } + /** + * @return int + */ + public function getConfig(): int { + return $this->config; + } - /** - * @return bool - */ - public function isLocal(): bool { - return $this->getManager()->isLocalInstance($this->getInstance()); - } - /** - * @return bool - */ - public function hasInheritance(): bool { - return !is_null($this->inheritance); - } + /** + * @param string $instance + * + * @return self + */ + public function setInstance(string $instance): self { + if ($instance === '') { + // TODO: is it needed ? + $instance = $this->getManager()->getLocalInstance(); + } - /** - * @param Membership $inheritance - * - * @return $this - */ - public function setInheritance(Membership $inheritance): self { - $this->inheritance = $inheritance; + $this->instance = $instance; - return $this; - } + return $this; + } - /** - * @return Membership - */ - public function getInheritance(): Membership { - return $this->inheritance; - } + /** + * @return string + */ + public function getInstance(): string { + return $this->instance; + } - /** - * @return bool - */ - public function hasMemberships(): bool { - return !is_null($this->memberships); - } + /** + * @return bool + */ + public function isLocal(): bool { + return $this->getManager()->isLocalInstance($this->getInstance()); + } - /** - * @param array $memberships - * - * @return self - */ - public function setMemberships(array $memberships): IEntity { - $this->memberships = $memberships; + /** + * @return bool + */ + public function hasInheritance(): bool { + return !is_null($this->inheritance); + } - return $this; - } + /** + * @param Membership $inheritance + * + * @return $this + */ + public function setInheritance(Membership $inheritance): self { + $this->inheritance = $inheritance; - /** - * @return Membership[] - */ - public function getMemberships(): array { - if (!$this->hasMemberships()) { - $this->getManager()->getMemberships($this); + return $this; } - return $this->memberships; - } - + /** + * @return Membership + */ + public function getInheritance(): Membership { + return $this->inheritance; + } - /** - * @param string $singleId - * @param bool $detailed - * - * @return Membership - * @throws MembershipNotFoundException - * @throws RequestBuilderException - */ - public function getLink(string $singleId, bool $detailed = false): Membership { - return $this->getManager()->getLink($this, $singleId, $detailed); - } + /** + * @return bool + */ + public function hasMemberships(): bool { + return !is_null($this->memberships); + } + /** + * @param array $memberships + * + * @return self + */ + public function setMemberships(array $memberships): IEntity { + $this->memberships = $memberships; - /** - * @param array $data - * - * @return $this - * @throws InvalidItemException - */ - public function import(array $data): IDeserializable { - if ($this->get('userId', $data) === '') { - throw new InvalidItemException(); + return $this; } - $this->setSingleId($this->get('id', $data)); - $this->setUserId($this->get('userId', $data)); - $this->setUserType($this->getInt('userType', $data)); - $this->setDisplayName($this->get('displayName', $data)); - $this->setInstance($this->get('instance', $data)); - //$this->setMemberships($this->getArray('memberships')); - - try { - /** @var Circle $circle */ - $circle = $this->deserialize($this->getArray('basedOn', $data), Circle::class); - $this->setBasedOn($circle); - } catch (InvalidItemException $e) { - } + /** + * @return Membership[] + */ + public function getMemberships(): array { + if (!$this->hasMemberships()) { + $this->getManager()->getMemberships($this); + } - try { - /** @var Membership $membership */ - $membership = $this->deserialize($this->getArray('membership', $data), Membership::class); - $this->setInheritance($membership); - } catch (InvalidItemException $e) { + return $this->memberships; } - return $this; - } - /** - * @param Circle $circle - * - * @return FederatedUser - * @throws OwnerNotFoundException - */ - public function importFromCircle(Circle $circle): self { - if (!$circle->hasOwner()) { - throw new OwnerNotFoundException(); + /** + * @param string $singleId + * @param bool $detailed + * + * @return Membership + * @throws MembershipNotFoundException + * @throws RequestBuilderException + */ + public function getLink(string $singleId, bool $detailed = false): Membership { + return $this->getManager()->getLink($this, $singleId, $detailed); } - $this->setSingleId($circle->getSingleId()); - - if ($circle->isConfig(Circle::CFG_SINGLE)) { - $owner = $circle->getOwner(); - $this->set( - $owner->getUserId(), - $owner->getInstance(), - $owner->getUserType(), - $owner->getDisplayName(), - $circle - ); - } else { - $this->set( - $circle->getDisplayName(), - $circle->getInstance(), - Member::TYPE_CIRCLE, - $circle->getDisplayName(), - $circle - ); - } - return $this; - } + /** + * @param array $data + * + * @return $this + * @throws InvalidItemException + */ + public function import(array $data): IDeserializable { + if ($this->get('userId', $data) === '') { + throw new InvalidItemException(); + } + + $this->setSingleId($this->get('id', $data)); + $this->setUserId($this->get('userId', $data)); + $this->setUserType($this->getInt('userType', $data)); + $this->setDisplayName($this->get('displayName', $data)); + $this->setInstance($this->get('instance', $data)); + //$this->setMemberships($this->getArray('memberships')); + + try { + /** @var Circle $circle */ + $circle = $this->deserialize($this->getArray('basedOn', $data), Circle::class); + $this->setBasedOn($circle); + } catch (InvalidItemException $e) { + } + + try { + /** @var Membership $membership */ + $membership = $this->deserialize($this->getArray('membership', $data), Membership::class); + $this->setInheritance($membership); + } catch (InvalidItemException $e) { + } + + return $this; + } - /** - * @param array $data - * @param string $prefix - * - * @return IQueryRow - * @throws FederatedUserNotFoundException - */ - public function importFromDatabase(array $data, string $prefix = ''): IQueryRow { - if ($this->get($prefix . 'single_id', $data) === '') { - throw new FederatedUserNotFoundException(); + /** + * @param Circle $circle + * + * @return FederatedUser + * @throws OwnerNotFoundException + */ + public function importFromCircle(Circle $circle): self { + if (!$circle->hasOwner()) { + throw new OwnerNotFoundException(); + } + + $this->setSingleId($circle->getSingleId()); + + if ($circle->isConfig(Circle::CFG_SINGLE)) { + $owner = $circle->getOwner(); + $this->set( + $owner->getUserId(), + $owner->getInstance(), + $owner->getUserType(), + $owner->getDisplayName(), + $circle + ); + } else { + $this->set( + $circle->getDisplayName(), + $circle->getInstance(), + Member::TYPE_CIRCLE, + $circle->getDisplayName(), + $circle + ); + } + + return $this; } - $this->setSingleId($this->get($prefix . 'single_id', $data)); - $this->setUserId($this->get($prefix . 'user_id', $data)); - $this->setUserType($this->getInt($prefix . 'user_type', $data)); - $this->setDisplayName($this->get($prefix . 'cached_name', $data)); - $this->setInstance($this->get($prefix . 'instance', $data)); - $this->getManager()->manageImportFromDatabase($this, $data, $prefix); + /** + * @param array $data + * @param string $prefix + * + * @return IQueryRow + * @throws FederatedUserNotFoundException + */ + public function importFromDatabase(array $data, string $prefix = ''): IQueryRow { + if ($this->get($prefix . 'single_id', $data) === '') { + throw new FederatedUserNotFoundException(); + } - return $this; - } + $this->setSingleId($this->get($prefix . 'single_id', $data)); + $this->setUserId($this->get($prefix . 'user_id', $data)); + $this->setUserType($this->getInt($prefix . 'user_type', $data)); + $this->setDisplayName($this->get($prefix . 'cached_name', $data)); + $this->setInstance($this->get($prefix . 'instance', $data)); + $this->getManager()->manageImportFromDatabase($this, $data, $prefix); - /** - * @return string[] - * @throws UnknownInterfaceException - */ - public function jsonSerialize(): array { - $arr = [ - 'id' => $this->getSingleId(), - 'userId' => $this->getUserId(), - 'userType' => $this->getUserType(), - 'displayName' => $this->getDisplayName(), - 'instance' => $this->getManager()->fixInstance($this->getInstance()) - ]; - - if ($this->hasBasedOn()) { - $arr['basedOn'] = $this->getBasedOn(); + return $this; } - if ($this->hasInheritance()) { - $arr['inheritance'] = $this->getInheritance(); - } - if (!is_null($this->memberships)) { - $arr['memberships'] = $this->getMemberships(); + /** + * @return string[] + * @throws UnknownInterfaceException + */ + public function jsonSerialize(): array { + $arr = [ + 'id' => $this->getSingleId(), + 'userId' => $this->getUserId(), + 'userType' => $this->getUserType(), + 'displayName' => $this->getDisplayName(), + 'instance' => $this->getManager()->fixInstance($this->getInstance()) + ]; + + if ($this->hasBasedOn()) { + $arr['basedOn'] = $this->getBasedOn(); + } + + if ($this->hasInheritance()) { + $arr['inheritance'] = $this->getInheritance(); + } + + if (!is_null($this->memberships)) { + $arr['memberships'] = $this->getMemberships(); + } + + return $arr; } - return $arr; - } - - /** - * @param IFederatedUser $member - * - * @return bool - */ - public function compareWith(IFederatedUser $member): bool { - $local = ($this->getManager()->isLocalInstance($this->getInstance()) - && $this->getManager()->isLocalInstance($member->getInstance())); + /** + * @param IFederatedUser $member + * + * @return bool + */ + public function compareWith(IFederatedUser $member): bool { + $local = ($this->getManager()->isLocalInstance($this->getInstance()) + && $this->getManager()->isLocalInstance($member->getInstance())); - return !($this->getSingleId() !== $member->getSingleId() - || $this->getUserId() !== $member->getUserId() - || $this->getUserType() <> $member->getUserType() - || (!$local && $this->getInstance() !== $member->getInstance())); + return !($this->getSingleId() !== $member->getSingleId() + || $this->getUserId() !== $member->getUserId() + || $this->getUserType() <> $member->getUserType() + || (!$local && $this->getInstance() !== $member->getInstance())); + } } -} diff --git a/lib/Model/Member.php b/lib/Model/Member.php index 4dd420b83..f831e1a22 100644 --- a/lib/Model/Member.php +++ b/lib/Model/Member.php @@ -60,953 +60,953 @@ class Member extends ManagedModel implements IDeserializable, IQueryRow, JsonSerializable { - use TArrayTools; - use TDeserialize; - - - public const LEVEL_NONE = 0; - public const LEVEL_MEMBER = 1; - public const LEVEL_MODERATOR = 4; - public const LEVEL_ADMIN = 8; - public const LEVEL_OWNER = 9; - - public const TYPE_SINGLE = 0; - public const TYPE_USER = 1; - public const TYPE_GROUP = 2; - public const TYPE_MAIL = 4; - public const TYPE_CONTACT = 8; - public const TYPE_CIRCLE = 16; - public const TYPE_APP = 10000; - - public const ALLOWING_ALL_TYPES = 31; - - public const APP_CIRCLES = 10001; - public const APP_OCC = 10002; - public const APP_DEFAULT = 11000; - - - public static $TYPE = [ - 0 => 'single', - 1 => 'user', - 2 => 'group', - 4 => 'mail', - 8 => 'contact', - 16 => 'circle', - 10000 => 'app' - ]; - - /** - * Note: When editing those values, update lib/Application/Capabilities.php - * - * @see Capabilities::generateConstantsMember() - */ - public const STATUS_INVITED = 'Invited'; - public const STATUS_REQUEST = 'Requesting'; - public const STATUS_MEMBER = 'Member'; - public const STATUS_BLOCKED = 'Blocked'; + use TArrayTools; + use TDeserialize; + + + public const LEVEL_NONE = 0; + public const LEVEL_MEMBER = 1; + public const LEVEL_MODERATOR = 4; + public const LEVEL_ADMIN = 8; + public const LEVEL_OWNER = 9; + + public const TYPE_SINGLE = 0; + public const TYPE_USER = 1; + public const TYPE_GROUP = 2; + public const TYPE_MAIL = 4; + public const TYPE_CONTACT = 8; + public const TYPE_CIRCLE = 16; + public const TYPE_APP = 10000; + + public const ALLOWING_ALL_TYPES = 31; + + public const APP_CIRCLES = 10001; + public const APP_OCC = 10002; + public const APP_DEFAULT = 11000; + + + public static $TYPE = [ + 0 => 'single', + 1 => 'user', + 2 => 'group', + 4 => 'mail', + 8 => 'contact', + 16 => 'circle', + 10000 => 'app' + ]; + /** + * Note: When editing those values, update lib/Application/Capabilities.php + * + * @see Capabilities::generateConstantsMember() + */ + public const STATUS_INVITED = 'Invited'; + public const STATUS_REQUEST = 'Requesting'; + public const STATUS_MEMBER = 'Member'; + public const STATUS_BLOCKED = 'Blocked'; + + + /** + * Note: When editing those values, update lib/Application/Capabilities.php + * + * @see Capabilities::generateConstantsMember() + * @var array + */ + public static $DEF_LEVEL = [ + 1 => 'Member', + 4 => 'Moderator', + 8 => 'Admin', + 9 => 'Owner' + ]; - /** - * Note: When editing those values, update lib/Application/Capabilities.php - * - * @see Capabilities::generateConstantsMember() - * @var array - */ - public static $DEF_LEVEL = [ - 1 => 'Member', - 4 => 'Moderator', - 8 => 'Admin', - 9 => 'Owner' - ]; + public static $DEF_TYPE_MAX = 31; - public static $DEF_TYPE_MAX = 31; + /** @var string */ + private $id = ''; - /** @var string */ - private $id = ''; + /** @var string */ + private $circleId = ''; - /** @var string */ - private $circleId = ''; + /** @var string */ + private $singleId = ''; - /** @var string */ - private $singleId = ''; + /** @var string */ + private $userId = ''; - /** @var string */ - private $userId = ''; + /** @var int */ + private $userType = 0; - /** @var int */ - private $userType = 0; + /** @var Circle */ + private $basedOn; - /** @var Circle */ - private $basedOn; + /** @var Member */ + private $inheritanceFrom; - /** @var Member */ - private $inheritanceFrom; + /** @var FederatedUser */ + private $inheritedBy; - /** @var FederatedUser */ - private $inheritedBy; + /** @var string */ + private $instance = ''; - /** @var string */ - private $instance = ''; + /** @var FederatedUser */ + private $invitedBy; - /** @var FederatedUser */ - private $invitedBy; + /** @var RemoteInstance */ + private $remoteInstance; - /** @var RemoteInstance */ - private $remoteInstance; + /** @var bool */ + private $local = false; - /** @var bool */ - private $local = false; + /** @var int */ + private $level = 0; - /** @var int */ - private $level = 0; + /** @var string */ + private $status = 'Unknown'; - /** @var string */ - private $status = 'Unknown'; + /** @var array */ + private $notes = []; - /** @var array */ - private $notes = []; + /** @var string */ + private $displayName = ''; - /** @var string */ - private $displayName = ''; + /** @var int */ + private $displayUpdate = 0; - /** @var int */ - private $displayUpdate = 0; + /** @var string */ + private $contactId = ''; - /** @var string */ - private $contactId = ''; + /** @var string */ + private $contactMeta = ''; - /** @var string */ - private $contactMeta = ''; + /** @var Circle */ + private $circle; - /** @var Circle */ - private $circle; + /** @var int */ + private $joined = 0; - /** @var int */ - private $joined = 0; + /** @var Membership[] */ + private $memberships = null; - /** @var Membership[] */ - private $memberships = null; + /** + * Member constructor. + */ + public function __construct() { + } - /** - * Member constructor. - */ - public function __construct() { - } + /** + * @param string $id + * + * @return $this + */ + public function setId(string $id): self { + $this->id = $id; - /** - * @param string $id - * - * @return $this - */ - public function setId(string $id): self { - $this->id = $id; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getId(): string { + return $this->id; + } - /** - * @return string - */ - public function getId(): string { - return $this->id; - } + /** + * @param string $circleId + * + * @return Member + */ + public function setCircleId(string $circleId): self { + $this->circleId = $circleId; - /** - * @param string $circleId - * - * @return Member - */ - public function setCircleId(string $circleId): self { - $this->circleId = $circleId; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getCircleId(): string { + return $this->circleId; + } - /** - * @return string - */ - public function getCircleId(): string { - return $this->circleId; - } + /** + * This should replace user_id, user_type and instance; and will use the data from Circle with + * Config=CFG_SINGLE + * + * @param string $singleId + * + * @return $this + */ + public function setSingleId(string $singleId): self { + $this->singleId = $singleId; - /** - * This should replace user_id, user_type and instance; and will use the data from Circle with - * Config=CFG_SINGLE - * - * @param string $singleId - * - * @return $this - */ - public function setSingleId(string $singleId): self { - $this->singleId = $singleId; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getSingleId(): string { + return $this->singleId; + } - /** - * @return string - */ - public function getSingleId(): string { - return $this->singleId; - } + /** + * @param string $userId + * + * @return Member + */ + public function setUserId(string $userId): self { + $this->userId = $userId; + if ($this->displayName === '') { + $this->displayName = $userId; + } - /** - * @param string $userId - * - * @return Member - */ - public function setUserId(string $userId): self { - $this->userId = $userId; - if ($this->displayName === '') { - $this->displayName = $userId; + return $this; } - return $this; - } + /** + * @return string + */ + public function getUserId(): string { + return $this->userId; + } - /** - * @return string - */ - public function getUserId(): string { - return $this->userId; - } + /** + * @param int $userType + * + * @return Member + */ + public function setUserType(int $userType): self { + $this->userType = $userType; - /** - * @param int $userType - * - * @return Member - */ - public function setUserType(int $userType): self { - $this->userType = $userType; + return $this; + } - return $this; - } + /** + * @return int + */ + public function getUserType(): int { + return $this->userType; + } - /** - * @return int - */ - public function getUserType(): int { - return $this->userType; - } + /** + * @return int + * @deprecated 22.0.0 + */ + public function getType(): int { + return $this->getUserType(); + } - /** - * @return int - * @deprecated 22.0.0 - */ - public function getType(): int { - return $this->getUserType(); - } + /** + * @param string $instance + * + * @return Member + */ + public function setInstance(string $instance): self { + $this->instance = $instance; - /** - * @param string $instance - * - * @return Member - */ - public function setInstance(string $instance): self { - $this->instance = $instance; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getInstance(): string { + return $this->instance; + } - /** - * @return string - */ - public function getInstance(): string { - return $this->instance; - } + /** + * @return bool + */ + public function isLocal(): bool { + return $this->getManager()->isLocalInstance($this->getInstance()); + } - /** - * @return bool - */ - public function isLocal(): bool { - return $this->getManager()->isLocalInstance($this->getInstance()); - } + /** + * @param FederatedUser $invitedBy + * + * @return Member + */ + public function setInvitedBy(FederatedUser $invitedBy): Member { + $this->invitedBy = $invitedBy; - /** - * @param FederatedUser $invitedBy - * - * @return Member - */ - public function setInvitedBy(FederatedUser $invitedBy): Member { - $this->invitedBy = $invitedBy; + return $this; + } - return $this; - } + /** + * @return FederatedUser + */ + public function getInvitedBy(): FederatedUser { + return $this->invitedBy; + } - /** - * @return FederatedUser - */ - public function getInvitedBy(): FederatedUser { - return $this->invitedBy; - } + /** + * @return bool + */ + public function hasInvitedBy(): bool { + return !is_null($this->invitedBy); + } - /** - * @return bool - */ - public function hasInvitedBy(): bool { - return !is_null($this->invitedBy); - } + /** + * @return bool + */ + public function hasRemoteInstance(): bool { + return !is_null($this->remoteInstance); + } - /** - * @return bool - */ - public function hasRemoteInstance(): bool { - return !is_null($this->remoteInstance); - } + /** + * @param RemoteInstance $remoteInstance + * + * @return Member + */ + public function setRemoteInstance(RemoteInstance $remoteInstance): self { + $this->remoteInstance = $remoteInstance; - /** - * @param RemoteInstance $remoteInstance - * - * @return Member - */ - public function setRemoteInstance(RemoteInstance $remoteInstance): self { - $this->remoteInstance = $remoteInstance; + return $this; + } - return $this; - } + /** + * @return RemoteInstance + */ + public function getRemoteInstance(): RemoteInstance { + return $this->remoteInstance; + } - /** - * @return RemoteInstance - */ - public function getRemoteInstance(): RemoteInstance { - return $this->remoteInstance; - } + /** + * @return bool + */ + public function hasBasedOn(): bool { + return !is_null($this->basedOn); + } - /** - * @return bool - */ - public function hasBasedOn(): bool { - return !is_null($this->basedOn); - } + /** + * @param Circle $basedOn + * + * @return $this + */ + public function setBasedOn(Circle $basedOn): self { + $this->basedOn = $basedOn; - /** - * @param Circle $basedOn - * - * @return $this - */ - public function setBasedOn(Circle $basedOn): self { - $this->basedOn = $basedOn; + return $this; + } - return $this; - } + /** + * @return Circle + */ + public function getBasedOn(): Circle { + return $this->basedOn; + } - /** - * @return Circle - */ - public function getBasedOn(): Circle { - return $this->basedOn; - } + /** + * @return bool + */ + public function hasInheritedBy(): bool { + return !is_null($this->inheritedBy); + } - /** - * @return bool - */ - public function hasInheritedBy(): bool { - return !is_null($this->inheritedBy); - } + /** + * @param FederatedUser $inheritedBy + * + * @return $this + */ + public function setInheritedBy(FederatedUser $inheritedBy): self { + $this->inheritedBy = $inheritedBy; - /** - * @param FederatedUser $inheritedBy - * - * @return $this - */ - public function setInheritedBy(FederatedUser $inheritedBy): self { - $this->inheritedBy = $inheritedBy; + return $this; + } - return $this; - } + /** + * @return FederatedUser + */ + public function getInheritedBy(): FederatedUser { + return $this->inheritedBy; + } - /** - * @return FederatedUser - */ - public function getInheritedBy(): FederatedUser { - return $this->inheritedBy; - } + /** + * @return bool + */ + public function hasInheritanceFrom(): bool { + return !is_null($this->inheritanceFrom); + } - /** - * @return bool - */ - public function hasInheritanceFrom(): bool { - return !is_null($this->inheritanceFrom); - } + /** + * @param Member $inheritanceFrom + * + * @return $this + */ + public function setInheritanceFrom(Member $inheritanceFrom): self { + $this->inheritanceFrom = $inheritanceFrom; - /** - * @param Member $inheritanceFrom - * - * @return $this - */ - public function setInheritanceFrom(Member $inheritanceFrom): self { - $this->inheritanceFrom = $inheritanceFrom; + return $this; + } - return $this; - } + /** + * @return Member|null + */ + public function getInheritanceFrom(): ?Member { + return $this->inheritanceFrom; + } - /** - * @return Member|null - */ - public function getInheritanceFrom(): ?Member { - return $this->inheritanceFrom; - } + /** + * @param int $level + * + * @return Member + */ + public function setLevel(int $level): self { + $this->level = $level; - /** - * @param int $level - * - * @return Member - */ - public function setLevel(int $level): self { - $this->level = $level; + return $this; + } - return $this; - } + /** + * @return int + */ + public function getLevel(): int { + return $this->level; + } - /** - * @return int - */ - public function getLevel(): int { - return $this->level; - } + /** + * @param string $status + * + * @return Member + */ + public function setStatus(string $status): self { + $this->status = $status; - /** - * @param string $status - * - * @return Member - */ - public function setStatus(string $status): self { - $this->status = $status; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getStatus(): string { + return $this->status; + } - /** - * @return string - */ - public function getStatus(): string { - return $this->status; - } + /** + * @param array $notes + * + * @return Member + */ + public function setNotes(array $notes): self { + $this->notes = $notes; - /** - * @param array $notes - * - * @return Member - */ - public function setNotes(array $notes): self { - $this->notes = $notes; + return $this; + } - return $this; - } + /** + * @return array + */ + public function getNotes(): array { + return $this->notes; + } - /** - * @return array - */ - public function getNotes(): array { - return $this->notes; - } + /** + * @param string $key + * + * @return string + */ + public function getNote(string $key): string { + return $this->get($key, $this->notes); + } - /** - * @param string $key - * - * @return string - */ - public function getNote(string $key): string { - return $this->get($key, $this->notes); - } + /** + * @param string $key + * + * @return array + */ + public function getNoteArray(string $key): array { + return $this->getArray($key, $this->notes); + } - /** - * @param string $key - * - * @return array - */ - public function getNoteArray(string $key): array { - return $this->getArray($key, $this->notes); - } + /** + * @param string $key + * @param string $note + * + * @return $this + */ + public function setNote(string $key, string $note): self { + $this->notes[$key] = $note; - /** - * @param string $key - * @param string $note - * - * @return $this - */ - public function setNote(string $key, string $note): self { - $this->notes[$key] = $note; + return $this; + } - return $this; - } + /** + * @param string $key + * @param array $note + * + * @return $this + */ + public function setNoteArray(string $key, array $note): self { + $this->notes[$key] = $note; - /** - * @param string $key - * @param array $note - * - * @return $this - */ - public function setNoteArray(string $key, array $note): self { - $this->notes[$key] = $note; + return $this; + } - return $this; - } + /** + * @param string $key + * @param JsonSerializable $obj + * + * @return $this + */ + public function setNoteObj(string $key, JsonSerializable $obj): self { + $this->notes[$key] = $obj; - /** - * @param string $key - * @param JsonSerializable $obj - * - * @return $this - */ - public function setNoteObj(string $key, JsonSerializable $obj): self { - $this->notes[$key] = $obj; + return $this; + } - return $this; - } + /** + * @param string $displayName + * + * @return Member + */ + public function setDisplayName(string $displayName): self { + if ($displayName !== '') { + $this->displayName = $displayName; + } - /** - * @param string $displayName - * - * @return Member - */ - public function setDisplayName(string $displayName): self { - if ($displayName !== '') { - $this->displayName = $displayName; + return $this; } - return $this; - } + /** + * @param int $displayUpdate + * + * @return Member + */ + public function setDisplayUpdate(int $displayUpdate): self { + $this->displayUpdate = $displayUpdate; - /** - * @param int $displayUpdate - * - * @return Member - */ - public function setDisplayUpdate(int $displayUpdate): self { - $this->displayUpdate = $displayUpdate; + return $this; + } - return $this; - } + /** + * @return int + */ + public function getDisplayUpdate(): int { + return $this->displayUpdate; + } - /** - * @return int - */ - public function getDisplayUpdate(): int { - return $this->displayUpdate; - } + /** + * @return string + */ + public function getDisplayName(): string { + return $this->displayName; + } - /** - * @return string - */ - public function getDisplayName(): string { - return $this->displayName; - } + /** + * @param string $contactId + * + * @return Member + */ + public function setContactId(string $contactId): self { + $this->contactId = $contactId; - /** - * @param string $contactId - * - * @return Member - */ - public function setContactId(string $contactId): self { - $this->contactId = $contactId; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getContactId(): string { + return $this->contactId; + } - /** - * @return string - */ - public function getContactId(): string { - return $this->contactId; - } + /** + * @param string $contactMeta + * + * @return Member + */ + public function setContactMeta(string $contactMeta): self { + $this->contactMeta = $contactMeta; - /** - * @param string $contactMeta - * - * @return Member - */ - public function setContactMeta(string $contactMeta): self { - $this->contactMeta = $contactMeta; + return $this; + } - return $this; - } + /** + * @return string + */ + public function getContactMeta(): string { + return $this->contactMeta; + } - /** - * @return string - */ - public function getContactMeta(): string { - return $this->contactMeta; - } + /** + * @param Circle $circle + * + * @return self + */ + public function setCircle(Circle $circle): self { + $this->circle = $circle; - /** - * @param Circle $circle - * - * @return self - */ - public function setCircle(Circle $circle): self { - $this->circle = $circle; + return $this; + } - return $this; - } + /** + * @return Circle + */ + public function getCircle(): Circle { + return $this->circle; + } - /** - * @return Circle - */ - public function getCircle(): Circle { - return $this->circle; - } + /** + * @return bool + */ + public function hasCircle(): bool { + return (!is_null($this->circle)); + } - /** - * @return bool - */ - public function hasCircle(): bool { - return (!is_null($this->circle)); - } + /** + * @param int $joined + * + * @return Member + */ + public function setJoined(int $joined): self { + $this->joined = $joined; - /** - * @param int $joined - * - * @return Member - */ - public function setJoined(int $joined): self { - $this->joined = $joined; + return $this; + } - return $this; - } + /** + * @return int + */ + public function getJoined(): int { + return $this->joined; + } - /** - * @return int - */ - public function getJoined(): int { - return $this->joined; - } + /** + * @return bool + */ + public function hasMemberships(): bool { + return !is_null($this->memberships); + } - /** - * @return bool - */ - public function hasMemberships(): bool { - return !is_null($this->memberships); - } + /** + * @param array $memberships + * + * @return self + */ + public function setMemberships(array $memberships): IEntity { + $this->memberships = $memberships; - /** - * @param array $memberships - * - * @return self - */ - public function setMemberships(array $memberships): IEntity { - $this->memberships = $memberships; + return $this; + } - return $this; - } + /** + * @return Membership[] + */ + public function getMemberships(): array { + if (is_null($this->memberships)) { + $this->getManager()->getMemberships($this); + } - /** - * @return Membership[] - */ - public function getMemberships(): array { - if (is_null($this->memberships)) { - $this->getManager()->getMemberships($this); + return $this->memberships; } - return $this->memberships; - } + /** + * @param string $singleId + * @param bool $detailed + * + * @return Membership + * @throws MembershipNotFoundException + * @throws RequestBuilderException + */ + public function getLink(string $singleId, bool $detailed = false): Membership { + if ($singleId !== '') { + $this->getManager()->getLink($this, $singleId, $detailed); + } + + throw new MembershipNotFoundException(); + } - /** - * @param string $singleId - * @param bool $detailed - * - * @return Membership - * @throws MembershipNotFoundException - * @throws RequestBuilderException - */ - public function getLink(string $singleId, bool $detailed = false): Membership { - if ($singleId !== '') { - $this->getManager()->getLink($this, $singleId, $detailed); + /** + * @param string $circleId + * @param bool $detailed + * + * @return Membership + * @throws MembershipNotFoundException + * @throws RequestBuilderException + * @deprecated - use getLink(); + */ + public function getMembership(string $circleId, bool $detailed = false): Membership { + return $this->getLink($circleId, $detailed); } - - throw new MembershipNotFoundException(); - } - /** - * @param string $circleId - * @param bool $detailed - * - * @return Membership - * @throws MembershipNotFoundException - * @throws RequestBuilderException - * @deprecated - use getLink(); - */ - public function getMembership(string $circleId, bool $detailed = false): Membership { - return $this->getLink($circleId, $detailed); - } + /** + * @param Member $member + * @param bool $full + * + * @return bool + */ + public function compareWith(Member $member, bool $full = true): bool { + if ($this->getId() !== $member->getId() + || $this->getCircleId() !== $member->getCircleId() + || $this->getSingleId() !== $member->getSingleId() + || $this->getUserId() !== $member->getUserId() + || $this->getUserType() <> $member->getUserType() + || $this->getInstance() !== $member->getInstance()) { + return false; + } - /** - * @param Member $member - * @param bool $full - * - * @return bool - */ - public function compareWith(Member $member, bool $full = true): bool { - if ($this->getId() !== $member->getId() - || $this->getCircleId() !== $member->getCircleId() - || $this->getSingleId() !== $member->getSingleId() - || $this->getUserId() !== $member->getUserId() - || $this->getUserType() <> $member->getUserType() - || $this->getInstance() !== $member->getInstance()) { - return false; - } + if ($full + && ($this->getLevel() <> $member->getLevel() + || $this->getStatus() !== $member->getStatus())) { + return false; + } - if ($full - && ($this->getLevel() <> $member->getLevel() - || $this->getStatus() !== $member->getStatus())) { - return false; + return true; } - return true; - } + /** + * @param array $data + * + * @return $this + * @throws InvalidItemException + */ + public function import(array $data): IDeserializable { + if ($this->get('userId', $data) === '') { + throw new InvalidItemException(); + } - /** - * @param array $data - * - * @return $this - * @throws InvalidItemException - */ - public function import(array $data): IDeserializable { - if ($this->get('userId', $data) === '') { - throw new InvalidItemException(); - } - - $this->setId($this->get('id', $data)); - $this->setCircleId($this->get('circleId', $data)); - $this->setSingleId($this->get('singleId', $data)); - $this->setUserId($this->get('userId', $data)); - $this->setUserType($this->getInt('userType', $data)); - $this->setInstance($this->get('instance', $data)); - $this->setLevel($this->getInt('level', $data)); - $this->setStatus($this->get('status', $data)); - $this->setDisplayName($this->get('displayName', $data)); - $this->setDisplayUpdate($this->getInt('displayUpdate', $data)); - $this->setNotes($this->getArray('notes', $data)); - $this->setContactId($this->get('contactId', $data)); - $this->setContactMeta($this->get('contactMeta', $data)); - $this->setJoined($this->getInt('joined', $data)); - - try { - /** @var Circle $circle */ - $circle = $this->deserialize($this->getArray('circle', $data), Circle::class); - $this->setCircle($circle); - } catch (InvalidItemException $e) { - } - - try { - /** @var Circle $circle */ - $circle = $this->deserialize($this->getArray('basedOn', $data), Circle::class); - $this->setBasedOn($circle); - } catch (InvalidItemException $e) { - } - - try { - /** @var FederatedUser $invitedBy */ - $invitedBy = $this->deserialize($this->getArray('invitedBy', $data), FederatedUser::class); - $this->setInvitedBy($invitedBy); - } catch (InvalidItemException $e) { - } - - try { - /** @var FederatedUSer $inheritedBy */ - $inheritedBy = $this->deserialize($this->getArray('inheritedBy', $data), Membership::class); - $this->setInheritedBy($inheritedBy); - } catch (InvalidItemException $e) { - } - - return $this; - } + $this->setId($this->get('id', $data)); + $this->setCircleId($this->get('circleId', $data)); + $this->setSingleId($this->get('singleId', $data)); + $this->setUserId($this->get('userId', $data)); + $this->setUserType($this->getInt('userType', $data)); + $this->setInstance($this->get('instance', $data)); + $this->setLevel($this->getInt('level', $data)); + $this->setStatus($this->get('status', $data)); + $this->setDisplayName($this->get('displayName', $data)); + $this->setDisplayUpdate($this->getInt('displayUpdate', $data)); + $this->setNotes($this->getArray('notes', $data)); + $this->setContactId($this->get('contactId', $data)); + $this->setContactMeta($this->get('contactMeta', $data)); + $this->setJoined($this->getInt('joined', $data)); + + try { + /** @var Circle $circle */ + $circle = $this->deserialize($this->getArray('circle', $data), Circle::class); + $this->setCircle($circle); + } catch (InvalidItemException $e) { + } + try { + /** @var Circle $circle */ + $circle = $this->deserialize($this->getArray('basedOn', $data), Circle::class); + $this->setBasedOn($circle); + } catch (InvalidItemException $e) { + } - /** - * @param array $data - * @param string $prefix - * - * @return IQueryRow - * @throws MemberNotFoundException - */ - public function importFromDatabase(array $data, string $prefix = ''): IQueryRow { - if ($this->get($prefix . 'single_id', $data) === '') { - throw new MemberNotFoundException(); - } + try { + /** @var FederatedUser $invitedBy */ + $invitedBy = $this->deserialize($this->getArray('invitedBy', $data), FederatedUser::class); + $this->setInvitedBy($invitedBy); + } catch (InvalidItemException $e) { + } - $this->setId($this->get($prefix . 'member_id', $data)); - $this->setCircleId($this->get($prefix . 'circle_id', $data)); - $this->setSingleId($this->get($prefix . 'single_id', $data)); - $this->setUserId($this->get($prefix . 'user_id', $data)); - $this->setUserType($this->getInt($prefix . 'user_type', $data)); - $this->setInstance($this->get($prefix . 'instance', $data)); - $this->setLevel($this->getInt($prefix . 'level', $data)); - $this->setStatus($this->get($prefix . 'status', $data)); - $this->setDisplayName($this->get($prefix . 'cached_name', $data)); - $this->setNotes($this->getArray($prefix . 'note', $data)); - $this->setContactId($this->get($prefix . 'contact_id', $data)); - $this->setContactMeta($this->get($prefix . 'contact_meta', $data)); + try { + /** @var FederatedUSer $inheritedBy */ + $inheritedBy = $this->deserialize($this->getArray('inheritedBy', $data), Membership::class); + $this->setInheritedBy($inheritedBy); + } catch (InvalidItemException $e) { + } - $cachedUpdate = $this->get($prefix . 'cached_update', $data); - if ($cachedUpdate !== '') { - $this->setDisplayUpdate(DateTime::createFromFormat('Y-m-d H:i:s', $cachedUpdate)->getTimestamp()); + return $this; } - $joined = $this->get($prefix . 'joined', $data); - if ($joined !== '') { - $this->setJoined(DateTime::createFromFormat('Y-m-d H:i:s', $joined)->getTimestamp()); - } - if ($this->getInstance() === '') { - $this->setInstance($this->getManager()->getLocalInstance()); - } + /** + * @param array $data + * @param string $prefix + * + * @return IQueryRow + * @throws MemberNotFoundException + */ + public function importFromDatabase(array $data, string $prefix = ''): IQueryRow { + if ($this->get($prefix . 'single_id', $data) === '') { + throw new MemberNotFoundException(); + } + + $this->setId($this->get($prefix . 'member_id', $data)); + $this->setCircleId($this->get($prefix . 'circle_id', $data)); + $this->setSingleId($this->get($prefix . 'single_id', $data)); + $this->setUserId($this->get($prefix . 'user_id', $data)); + $this->setUserType($this->getInt($prefix . 'user_type', $data)); + $this->setInstance($this->get($prefix . 'instance', $data)); + $this->setLevel($this->getInt($prefix . 'level', $data)); + $this->setStatus($this->get($prefix . 'status', $data)); + $this->setDisplayName($this->get($prefix . 'cached_name', $data)); + $this->setNotes($this->getArray($prefix . 'note', $data)); + $this->setContactId($this->get($prefix . 'contact_id', $data)); + $this->setContactMeta($this->get($prefix . 'contact_meta', $data)); + + $cachedUpdate = $this->get($prefix . 'cached_update', $data); + if ($cachedUpdate !== '') { + $this->setDisplayUpdate(DateTime::createFromFormat('Y-m-d H:i:s', $cachedUpdate)->getTimestamp()); + } - $this->getManager()->manageImportFromDatabase($this, $data, $prefix); + $joined = $this->get($prefix . 'joined', $data); + if ($joined !== '') { + $this->setJoined(DateTime::createFromFormat('Y-m-d H:i:s', $joined)->getTimestamp()); + } + + if ($this->getInstance() === '') { + $this->setInstance($this->getManager()->getLocalInstance()); + } - // in case invitedBy is not obtainable from 'invited_by', we reach data from 'note' - if (!$this->hasInvitedBy()) { - $invitedByArray = $this->getNoteArray('invitedBy'); - if (!empty($invitedByArray)) { - try { - $invitedBy = new FederatedUser(); - $this->setInvitedBy($invitedBy->import($invitedByArray)); - } catch (InvalidItemException $e) { + $this->getManager()->manageImportFromDatabase($this, $data, $prefix); + + // in case invitedBy is not obtainable from 'invited_by', we reach data from 'note' + if (!$this->hasInvitedBy()) { + $invitedByArray = $this->getNoteArray('invitedBy'); + if (!empty($invitedByArray)) { + try { + $invitedBy = new FederatedUser(); + $this->setInvitedBy($invitedBy->import($invitedByArray)); + } catch (InvalidItemException $e) { + } } } - } - return $this; - } + return $this; + } - /** - * @return string[] - * @throws UnknownInterfaceException - */ - public function jsonSerialize(): array { - $arr = [ - 'id' => $this->getId(), - 'circleId' => $this->getCircleId(), - 'singleId' => $this->getSingleId(), - 'userId' => $this->getUserId(), - 'userType' => $this->getUserType(), - 'instance' => $this->getManager()->fixInstance($this->getInstance()), - 'local' => $this->isLocal(), - 'level' => $this->getLevel(), - 'status' => $this->getStatus(), - 'displayName' => $this->getDisplayName(), - 'displayUpdate' => $this->getDisplayUpdate(), - 'notes' => $this->getNotes(), - 'contactId' => $this->getContactId(), - 'contactMeta' => $this->getContactMeta(), - 'joined' => $this->getJoined() - ]; + /** + * @return string[] + * @throws UnknownInterfaceException + */ + public function jsonSerialize(): array { + $arr = [ + 'id' => $this->getId(), + 'circleId' => $this->getCircleId(), + 'singleId' => $this->getSingleId(), + 'userId' => $this->getUserId(), + 'userType' => $this->getUserType(), + 'instance' => $this->getManager()->fixInstance($this->getInstance()), + 'local' => $this->isLocal(), + 'level' => $this->getLevel(), + 'status' => $this->getStatus(), + 'displayName' => $this->getDisplayName(), + 'displayUpdate' => $this->getDisplayUpdate(), + 'notes' => $this->getNotes(), + 'contactId' => $this->getContactId(), + 'contactMeta' => $this->getContactMeta(), + 'joined' => $this->getJoined() + ]; + + if ($this->hasInvitedBy()) { + $arr['invitedBy'] = $this->getInvitedBy(); + } - if ($this->hasInvitedBy()) { - $arr['invitedBy'] = $this->getInvitedBy(); - } + if ($this->hasBasedOn()) { + $arr['basedOn'] = $this->getBasedOn(); + } - if ($this->hasBasedOn()) { - $arr['basedOn'] = $this->getBasedOn(); - } + if ($this->hasInheritedBy()) { + $arr['inheritedBy'] = $this->getInheritedBy(); + } - if ($this->hasInheritedBy()) { - $arr['inheritedBy'] = $this->getInheritedBy(); - } + if ($this->hasInheritanceFrom()) { + $arr['inheritanceFrom'] = $this->getInheritanceFrom(); + } - if ($this->hasInheritanceFrom()) { - $arr['inheritanceFrom'] = $this->getInheritanceFrom(); - } + if ($this->hasCircle()) { + $arr['circle'] = $this->getCircle(); + } - if ($this->hasCircle()) { - $arr['circle'] = $this->getCircle(); - } + if ($this->hasMemberships()) { + $arr['memberships'] = $this->getMemberships(); + } - if ($this->hasMemberships()) { - $arr['memberships'] = $this->getMemberships(); - } + if ($this->hasRemoteInstance()) { + $arr['remoteInstance'] = $this->getRemoteInstance(); + } - if ($this->hasRemoteInstance()) { - $arr['remoteInstance'] = $this->getRemoteInstance(); + return $arr; } - return $arr; - } + /** + * @param int $level + * + * @return int + * @throws ParseMemberLevelException + */ + public static function parseLevelInt(int $level): int { + if (!array_key_exists($level, self::$DEF_LEVEL)) { + $all = implode(', ', array_keys(self::$DEF_LEVEL)); + throw new ParseMemberLevelException('Available levels: ' . $all, 121); + } - /** - * @param int $level - * - * @return int - * @throws ParseMemberLevelException - */ - public static function parseLevelInt(int $level): int { - if (!array_key_exists($level, self::$DEF_LEVEL)) { - $all = implode(', ', array_keys(self::$DEF_LEVEL)); - throw new ParseMemberLevelException('Available levels: ' . $all, 121); + return $level; } - return $level; - } + /** + * @param string $levelString + * + * @return int + * @throws ParseMemberLevelException + */ + public static function parseLevelString(string $levelString): int { + $levelString = ucfirst(strtolower($levelString)); + $level = array_search($levelString, Member::$DEF_LEVEL); - /** - * @param string $levelString - * - * @return int - * @throws ParseMemberLevelException - */ - public static function parseLevelString(string $levelString): int { - $levelString = ucfirst(strtolower($levelString)); - $level = array_search($levelString, Member::$DEF_LEVEL); + if (!$level) { + $all = implode(', ', array_values(self::$DEF_LEVEL)); + throw new ParseMemberLevelException('Available levels: ' . $all, 121); + } - if (!$level) { - $all = implode(', ', array_values(self::$DEF_LEVEL)); - throw new ParseMemberLevelException('Available levels: ' . $all, 121); + return (int)$level; } - return (int)$level; - } + /** + * @param string $typeString + * + * @return int + * @throws UserTypeNotFoundException + */ + public static function parseTypeString(string $typeString): int { + $typeString = strtolower($typeString); + if (array_key_exists($typeString, Member::$TYPE)) { + return (int)$typeString; + } - /** - * @param string $typeString - * - * @return int - * @throws UserTypeNotFoundException - */ - public static function parseTypeString(string $typeString): int { - $typeString = strtolower($typeString); - if (array_key_exists($typeString, Member::$TYPE)) { - return (int)$typeString; - } + $type = array_search($typeString, Member::$TYPE); + if ($type === false) { + $all = implode(', ', array_values(self::$TYPE)); + throw new UserTypeNotFoundException('Available types: ' . $all); + } - $type = array_search($typeString, Member::$TYPE); - if ($type === false) { - $all = implode(', ', array_values(self::$TYPE)); - throw new UserTypeNotFoundException('Available types: ' . $all); + return (int)$type; } - - return (int)$type; } -} diff --git a/lib/Search/GlobalScaleUsers.php b/lib/Search/GlobalScaleUsers.php index f05f69450..97b3c0c82 100644 --- a/lib/Search/GlobalScaleUsers.php +++ b/lib/Search/GlobalScaleUsers.php @@ -87,8 +87,8 @@ public function search(string $search): array { try { $users = $this->retrieveJson($request); } catch ( - RequestNetworkException | - RequestResultNotJsonException $e + RequestNetworkException | + RequestResultNotJsonException $e ) { $this->miscService->log( 'Issue while search users from lookup: ' . get_class($e) . ' ' . $e->getMessage() diff --git a/lib/Service/ConfigService.php b/lib/Service/ConfigService.php index 649c4c305..77097f2ec 100644 --- a/lib/Service/ConfigService.php +++ b/lib/Service/ConfigService.php @@ -124,7 +124,7 @@ class ConfigService { public const GS_LOOKUP_INSTANCES = '/instances'; public const GS_LOOKUP_USERS = '/users'; - +c // deprecated -- removing in NC25 public const CIRCLES_CONTACT_BACKEND = 'contact_backend'; public const CIRCLES_ACCOUNTS_ONLY = 'accounts_only'; // only UserType=1 @@ -366,10 +366,10 @@ public function sendPasswordByMail(Circle $circle): bool { */ public function enforcePasswordOnSharedFile(Circle $circle): bool { if ($this->config->getAppValue( - 'core', - 'shareapi_enforce_links_password', - 'no' - ) === 'yes') { + 'core', + 'shareapi_enforce_links_password', + 'no' + ) === 'yes') { return true; } @@ -665,9 +665,9 @@ public function displayFederatedUser( $name = ($displayName) ? $federatedUser->getDisplayName() : $federatedUser->getUserId(); if ($federatedUser->getUserType() === Member::TYPE_MAIL) { return $name . ' ' . $this->displayInstance( - $federatedUser->getInstance(), - self::DISPLAY_PARENTHESIS - ); + $federatedUser->getInstance(), + self::DISPLAY_PARENTHESIS + ); } if (!$displayInstance) { diff --git a/lib/Service/EventsService.php b/lib/Service/EventsService.php index f4af04d99..9d7ffc653 100644 --- a/lib/Service/EventsService.php +++ b/lib/Service/EventsService.php @@ -213,11 +213,11 @@ public function onMemberNew(DeprecatedCircle $circle, DeprecatedMember $member) $this->publishEvent( $event, array_merge( - [$member], - $this->membersRequest->forceGetMembers( - $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true - ) - ) + [$member], + $this->membersRequest->forceGetMembers( + $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true + ) + ) ); $this->dispatch('\OCA\Circles::onMemberNew', ['circle' => $circle, 'member' => $member]); @@ -271,11 +271,11 @@ private function onMemberInvited(DeprecatedCircle $circle, DeprecatedMember $mem $this->publishEvent( $event, array_merge( - [$member], - $this->membersRequest->forceGetMembers( - $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true - ) - ) + [$member], + $this->membersRequest->forceGetMembers( + $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true + ) + ) ); $this->dispatch('\OCA\Circles::onMemberInvited', ['circle' => $circle, 'member' => $member]); @@ -305,11 +305,11 @@ private function onMemberRequesting(DeprecatedCircle $circle, DeprecatedMember $ $this->publishEvent( $event, array_merge( - [$member], - $this->membersRequest->forceGetMembers( - $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true - ) - ) + [$member], + $this->membersRequest->forceGetMembers( + $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true + ) + ) ); $this->dispatch('\OCA\Circles::onMemberRequesting', ['circle' => $circle, 'member' => $member]); @@ -340,11 +340,11 @@ public function onMemberLeaving(DeprecatedCircle $circle, DeprecatedMember $memb $this->publishEvent( $event, array_merge( - [$member], - $this->membersRequest->forceGetMembers( - $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true - ) - ) + [$member], + $this->membersRequest->forceGetMembers( + $circle->getUniqueId(), DeprecatedMember::LEVEL_MODERATOR, 0, true + ) + ) ); $this->dispatch('\OCA\Circles::onMemberLeaving', ['circle' => $circle, 'member' => $member]); @@ -931,7 +931,7 @@ private function createNotification( ->setUser($userId) ->setObject($object, $objectId) ->setSubject( - $subject, [$authorName, $circle->getName(), json_encode($circle)] + $subject, [$authorName, $circle->getName(), json_encode($circle)] ); return $notification; diff --git a/lib/Service/FederatedUserService.php b/lib/Service/FederatedUserService.php index e94336565..94efd5454 100644 --- a/lib/Service/FederatedUserService.php +++ b/lib/Service/FederatedUserService.php @@ -182,7 +182,6 @@ public function __construct( IUserSession $userSession, IUserManager $userManager, IGroupManager $groupManager, - ICacheFactory $cacheFactory, FederatedEventService $federatedEventService, MembershipService $membershipService, CircleRequest $circleRequest, @@ -640,7 +639,7 @@ public function setOwnerAsCurrentUser(string $circleId): void { $probe = new CircleProbe(); $probe->includeSystemCircles() ->includePersonalCircles(); - + $localCircle = $this->circleRequest->getCircle($circleId, null, $probe); if ($this->configService->isLocalInstance($localCircle->getInstance())) { $this->setCurrentUser($localCircle->getOwner()); @@ -1289,7 +1288,7 @@ private function cacheSingleCircle(FederatedUser $federatedUser, Circle $singleC /** * @param FederatedUser $federatedUser - * + *i * @return string */ private function generateCacheKey(FederatedUser $federatedUser): string { diff --git a/lib/Service/MembersService.php b/lib/Service/MembersService.php index e1558f6b9..db5006ab5 100644 --- a/lib/Service/MembersService.php +++ b/lib/Service/MembersService.php @@ -730,8 +730,8 @@ private function getGlobalScaleUserDisplayName(string $ident): string { return $this->get('name.value', $users); } catch ( - RequestNetworkException | - RequestResultNotJsonException $e + RequestNetworkException | + RequestResultNotJsonException $e ) { } diff --git a/lib/Service/RemoteUpstreamService.php b/lib/Service/RemoteUpstreamService.php index e5346e845..271c66788 100644 --- a/lib/Service/RemoteUpstreamService.php +++ b/lib/Service/RemoteUpstreamService.php @@ -310,7 +310,7 @@ public function confirmEvent(FederatedEvent $event): void { // * // */ // private function removeDeprecatedEvents() { -//// $this->deprecatedEvents(); + //// $this->deprecatedEvents(); // // } } diff --git a/lib/ShareByCircleProviderDeprecated.php b/lib/ShareByCircleProviderDeprecated.php index 2ab31d66f..7e6888a59 100644 --- a/lib/ShareByCircleProviderDeprecated.php +++ b/lib/ShareByCircleProviderDeprecated.php @@ -592,15 +592,15 @@ public function getShareByToken($token) { $cursor = $qb->select('*') ->from('share') ->where( - $qb->expr() - ->eq( - 'share_type', - $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_CIRCLE) - ) + $qb->expr() + ->eq( + 'share_type', + $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_CIRCLE) + ) ) ->andWhere( - $qb->expr() - ->eq('token', $qb->createNamedParameter($token)) + $qb->expr() + ->eq('token', $qb->createNamedParameter($token)) ) ->execute(); @@ -648,19 +648,19 @@ private function getShareByPersonalToken($token) { ->from('share', 's') ->from('circle_tokens', 'ct') ->where( - $qb->expr() - ->eq( - 's.share_type', - $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_CIRCLE) - ) + $qb->expr() + ->eq( + 's.share_type', + $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_CIRCLE) + ) ) ->andWhere( - $qb->expr() - ->eq('ct.token', $qb->createNamedParameter($token)) + $qb->expr() + ->eq('ct.token', $qb->createNamedParameter($token)) ) ->andWhere( - $qb->expr() - ->eq('ct.share_id', 's.id') + $qb->expr() + ->eq('ct.share_id', 's.id') ); $cursor = $qb->execute(); @@ -809,11 +809,11 @@ private function assignShareObjectSharesProperties(IShare $share, $data) { $share->setSharedWithAvatar(CirclesService::getCircleIcon($data['circle_type'])) ->setSharedWithDisplayName( - sprintf( - '%s (%s, %s)', $name, - $this->l10n->t(DeprecatedCircle::TypeLongString($data['circle_type'])), - $this->miscService->getDisplayName($data['circle_owner'], true) - ) + sprintf( + '%s (%s, %s)', $name, + $this->l10n->t(DeprecatedCircle::TypeLongString($data['circle_type'])), + $this->miscService->getDisplayName($data['circle_owner'], true) + ) ); } } @@ -982,11 +982,11 @@ public function getAllShares(): iterable { $qb->select('*') ->from('share') ->where( - $qb->expr() - ->orX( - $qb->expr() - ->eq('share_type', $qb->createNamedParameter(IShare::TYPE_CIRCLE)) - ) + $qb->expr() + ->orX( + $qb->expr() + ->eq('share_type', $qb->createNamedParameter(IShare::TYPE_CIRCLE)) + ) ); $cursor = $qb->execute(); diff --git a/lib/Tools/ISignedModel.php b/lib/Tools/ISignedModel.php index 67dcdc0a1..33e1550db 100644 --- a/lib/Tools/ISignedModel.php +++ b/lib/Tools/ISignedModel.php @@ -53,6 +53,4 @@ public function getSignature(): string; * @return array */ public function signedData(): array; - } - diff --git a/lib/Tools/Model/Request.php b/lib/Tools/Model/Request.php index 0675fd049..60424ff85 100644 --- a/lib/Tools/Model/Request.php +++ b/lib/Tools/Model/Request.php @@ -688,8 +688,8 @@ public function getQueryString(): string { case self::QS_VAR_DUPLICATE: default: return '?' . preg_replace( - '/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', http_build_query($this->getParams()) - ); + '/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', http_build_query($this->getParams()) + ); } } diff --git a/lib/Tools/Traits/TNCLogger.php b/lib/Tools/Traits/TNCLogger.php index 9b0077350..e918b12ce 100644 --- a/lib/Tools/Traits/TNCLogger.php +++ b/lib/Tools/Traits/TNCLogger.php @@ -72,12 +72,12 @@ public function throwable(Throwable $t, int $level = 3, array $serializable = [] $this->logger() ->log( - $level, - $message, - [ - 'app' => $this->setup('app'), - 'exception' => $t - ] + $level, + $message, + [ + 'app' => $this->setup('app'), + 'exception' => $t + ] ); } @@ -112,12 +112,12 @@ public function exception(Exception $e, $level = 3, array $serializable = []): v $this->logger() ->log( - $level, - $message, - [ - 'app' => $this->setup('app'), - 'exception' => $e - ] + $level, + $message, + [ + 'app' => $this->setup('app'), + 'exception' => $e + ] ); } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 9a4ec2494..58443f856 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -10,3 +10,4 @@ \OC_App::loadApp('circles'); OC_Hook::clear(); +ion g diff --git a/tests/unit/lib/Controller/LocalControllerTest.php b/tests/unit/lib/Controller/LocalControllerTest.php index d7f461273..d0fdec353 100644 --- a/tests/unit/lib/Controller/LocalControllerTest.php +++ b/tests/unit/lib/Controller/LocalControllerTest.php @@ -92,15 +92,15 @@ public function setUp(): void { $this->configService = $this->createMock(ConfigService::class); $this->configService->expects($this->any())->method('getAppValueBool')->with(ConfigService::FRONTEND_ENABLED)->willReturn(true); $this->localController = new LocalController(Application::APP_ID, - $this->request, - $this->userSession, - $this->federatedUserService, - $this->circleService, - $this->memberService, - $this->membershipService, - $this->permissionService, - $this->searchService, - $this->configService); + $this->request, + $this->userSession, + $this->federatedUserService, + $this->circleService, + $this->memberService, + $this->membershipService, + $this->permissionService, + $this->searchService, + $this->configService); } /**