diff options
Diffstat (limited to 'lib/public/Accounts')
-rw-r--r-- | lib/public/Accounts/IAccount.php | 29 | ||||
-rw-r--r-- | lib/public/Accounts/IAccountManager.php | 141 | ||||
-rw-r--r-- | lib/public/Accounts/IAccountProperty.php | 25 | ||||
-rw-r--r-- | lib/public/Accounts/IAccountPropertyCollection.php | 26 | ||||
-rw-r--r-- | lib/public/Accounts/PropertyDoesNotExistException.php | 24 | ||||
-rw-r--r-- | lib/public/Accounts/UserUpdatedEvent.php | 43 |
6 files changed, 160 insertions, 128 deletions
diff --git a/lib/public/Accounts/IAccount.php b/lib/public/Accounts/IAccount.php index 383f21068a9..f9218f5fdf6 100644 --- a/lib/public/Accounts/IAccount.php +++ b/lib/public/Accounts/IAccount.php @@ -3,26 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Julius Härtl <jus@bitgrid.net> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\Accounts; @@ -35,13 +17,12 @@ use OCP\IUser; * @since 15.0.0 */ interface IAccount extends \JsonSerializable { - /** * Set a property with data * * @since 15.0.0 * - * @param string $property Must be one of the PROPERTY_ prefixed constants of \OCP\Accounts\IAccountManager + * @param string $property Must be one of the PROPERTY_ prefixed constants of \OCP\Accounts\IAccountManager * @param string $value * @param string $scope Must be one of the VISIBILITY_ prefixed constants of \OCP\Accounts\IAccountManager * @param string $verified \OCP\Accounts\IAccountManager::NOT_VERIFIED | \OCP\Accounts\IAccountManager::VERIFICATION_IN_PROGRESS | \OCP\Accounts\IAccountManager::VERIFIED @@ -135,7 +116,7 @@ interface IAccount extends \JsonSerializable { public function setPropertyCollection(IAccountPropertyCollection $propertyCollection): IAccount; /** - * Returns the requestes propery collection (multi-value properties) + * Returns the requested property collection (multi-value properties) * * @throws PropertyDoesNotExistException against invalid collection name * @since 22.0.0 @@ -155,7 +136,7 @@ interface IAccount extends \JsonSerializable { * @param string $verified \OCP\Accounts\IAccountManager::NOT_VERIFIED | \OCP\Accounts\IAccountManager::VERIFICATION_IN_PROGRESS | \OCP\Accounts\IAccountManager::VERIFIED * @return IAccountProperty[] */ - public function getFilteredProperties(string $scope = null, string $verified = null): array; + public function getFilteredProperties(?string $scope = null, ?string $verified = null): array; /** * Get the related user for the account data diff --git a/lib/public/Accounts/IAccountManager.php b/lib/public/Accounts/IAccountManager.php index ae5f6b1e542..ae5535ef13b 100644 --- a/lib/public/Accounts/IAccountManager.php +++ b/lib/public/Accounts/IAccountManager.php @@ -3,28 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Julius Härtl <jus@bitgrid.net> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\Accounts; @@ -38,7 +18,6 @@ use OCP\IUser; * */ interface IAccountManager { - /** * Contact details visible locally only * @@ -69,35 +48,70 @@ interface IAccountManager { public const SCOPE_PUBLISHED = 'v2-published'; /** - * Contact details only visible locally + * The list of allowed scopes * - * @deprecated 21.0.1 + * @since 25.0.0 */ - public const VISIBILITY_PRIVATE = 'private'; + public const ALLOWED_SCOPES = [ + self::SCOPE_PRIVATE, + self::SCOPE_LOCAL, + self::SCOPE_FEDERATED, + self::SCOPE_PUBLISHED, + ]; /** - * Contact details visible on trusted federated servers. - * - * @deprecated 21.0.1 + * @since 15.0.0 */ - public const VISIBILITY_CONTACTS_ONLY = 'contacts'; + public const PROPERTY_AVATAR = 'avatar'; /** - * Contact details visible on trusted federated servers and in the public lookup server. - * - * @deprecated 21.0.1 + * @since 15.0.0 */ - public const VISIBILITY_PUBLIC = 'public'; - - public const PROPERTY_AVATAR = 'avatar'; public const PROPERTY_DISPLAYNAME = 'displayname'; + + /** + * @since 27.0.0 + * @deprecated 27.0.0 only added for backwards compatibility with provisioning_api UsersController::getCurrentUser + */ + public const PROPERTY_DISPLAYNAME_LEGACY = 'display-name'; + + /** + * @since 15.0.0 + */ public const PROPERTY_PHONE = 'phone'; + + /** + * @since 15.0.0 + */ public const PROPERTY_EMAIL = 'email'; + + /** + * @since 15.0.0 + */ public const PROPERTY_WEBSITE = 'website'; + + /** + * @since 15.0.0 + */ public const PROPERTY_ADDRESS = 'address'; + + /** + * @since 15.0.0 + * @deprecated 32.0.0 + */ public const PROPERTY_TWITTER = 'twitter'; /** + * @since 32.0.0 + */ + public const PROPERTY_BLUESKY = 'bluesky'; + + /** + * @since 26.0.0 + */ + public const PROPERTY_FEDIVERSE = 'fediverse'; + + /** * @since 23.0.0 */ public const PROPERTY_ORGANISATION = 'organisation'; @@ -122,10 +136,59 @@ interface IAccountManager { */ public const PROPERTY_PROFILE_ENABLED = 'profile_enabled'; + /** + * @since 30.0.0 + */ + public const PROPERTY_BIRTHDATE = 'birthdate'; + + /** + * @since 31.0.0 + */ + public const PROPERTY_PRONOUNS = 'pronouns'; + + /** + * The list of allowed properties + * + * @since 25.0.0 + */ + public const ALLOWED_PROPERTIES = [ + self::PROPERTY_ADDRESS, + self::PROPERTY_AVATAR, + self::PROPERTY_BIOGRAPHY, + self::PROPERTY_BIRTHDATE, + self::PROPERTY_DISPLAYNAME, + self::PROPERTY_EMAIL, + self::PROPERTY_FEDIVERSE, + self::PROPERTY_HEADLINE, + self::PROPERTY_ORGANISATION, + self::PROPERTY_PHONE, + self::PROPERTY_PROFILE_ENABLED, + self::PROPERTY_PRONOUNS, + self::PROPERTY_ROLE, + self::PROPERTY_TWITTER, + self::PROPERTY_BLUESKY, + self::PROPERTY_WEBSITE, + ]; + + + /** + * @since 22.0.0 + */ public const COLLECTION_EMAIL = 'additional_mail'; + /** + * @since 15.0.0 + */ public const NOT_VERIFIED = '0'; + + /** + * @since 15.0.0 + */ public const VERIFICATION_IN_PROGRESS = '1'; + + /** + * @since 15.0.0 + */ public const VERIFIED = '2'; /** @@ -152,9 +215,9 @@ interface IAccountManager { * Search for users based on account data * * @param string $property - property or property collection name – since - * NC 22 the implementation MAY add a fitting property collection into the - * search even if a property name was given e.g. email property and email - * collection) + * NC 22 the implementation MAY add a fitting property collection into the + * search even if a property name was given e.g. email property and email + * collection) * @param string[] $values * @return array * diff --git a/lib/public/Accounts/IAccountProperty.php b/lib/public/Accounts/IAccountProperty.php index 94866fc4807..c9d05bfb6ca 100644 --- a/lib/public/Accounts/IAccountProperty.php +++ b/lib/public/Accounts/IAccountProperty.php @@ -3,26 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Julius Härtl <jus@bitgrid.net> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\Accounts; @@ -34,7 +16,6 @@ use InvalidArgumentException; * @since 15.0.0 */ interface IAccountProperty extends \JsonSerializable { - /** * Set the value of a property * @@ -51,6 +32,7 @@ interface IAccountProperty extends \JsonSerializable { * @since 15.0.0 * * @param string $scope + * @psalm-param IAccountManager::SCOPE_* $scope * @return IAccountProperty * @throws InvalidArgumentException (since 22.0.0) */ @@ -90,6 +72,7 @@ interface IAccountProperty extends \JsonSerializable { * @since 15.0.0 * * @return string + * @psalm-return IAccountManager::SCOPE_* */ public function getScope(): string; diff --git a/lib/public/Accounts/IAccountPropertyCollection.php b/lib/public/Accounts/IAccountPropertyCollection.php index 0d4c416cbaa..8fde9781d1f 100644 --- a/lib/public/Accounts/IAccountPropertyCollection.php +++ b/lib/public/Accounts/IAccountPropertyCollection.php @@ -1,29 +1,10 @@ <?php declare(strict_types=1); - /** - * @copyright Copyright (c) 2021 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @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 <https://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCP\Accounts; use InvalidArgumentException; @@ -37,9 +18,8 @@ use JsonSerializable; * @since 22.0.0 */ interface IAccountPropertyCollection extends JsonSerializable { - /** - * retuns the collection name + * returns the collection name * * @since 22.0.0 */ diff --git a/lib/public/Accounts/PropertyDoesNotExistException.php b/lib/public/Accounts/PropertyDoesNotExistException.php index 17c629fdc3e..1d27ef1df30 100644 --- a/lib/public/Accounts/PropertyDoesNotExistException.php +++ b/lib/public/Accounts/PropertyDoesNotExistException.php @@ -1,25 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Julius Härtl <jus@bitgrid.net> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\Accounts; @@ -30,7 +13,6 @@ namespace OCP\Accounts; * */ class PropertyDoesNotExistException extends \Exception { - /** * Constructor * @param string $msg the error message diff --git a/lib/public/Accounts/UserUpdatedEvent.php b/lib/public/Accounts/UserUpdatedEvent.php new file mode 100644 index 00000000000..fe9ea62a302 --- /dev/null +++ b/lib/public/Accounts/UserUpdatedEvent.php @@ -0,0 +1,43 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCP\Accounts; + +use OCP\EventDispatcher\Event; +use OCP\IUser; + +/** + * This event is triggered when the account data of a user was updated. + * + * @since 28.0.0 + */ +class UserUpdatedEvent extends Event { + /** + * @since 28.0.0 + */ + public function __construct( + protected IUser $user, + protected array $data, + ) { + parent::__construct(); + } + + /** + * @since 28.0.0 + */ + public function getUser(): IUser { + return $this->user; + } + + /** + * @since 28.0.0 + */ + public function getData(): array { + return $this->data; + } +} |