diff options
Diffstat (limited to 'lib/public/UserMigration')
-rw-r--r-- | lib/public/UserMigration/IExportDestination.php | 25 | ||||
-rw-r--r-- | lib/public/UserMigration/IImportSource.php | 24 | ||||
-rw-r--r-- | lib/public/UserMigration/IMigrator.php | 29 | ||||
-rw-r--r-- | lib/public/UserMigration/ISizeEstimationMigrator.php | 26 | ||||
-rw-r--r-- | lib/public/UserMigration/TMigratorBasicVersionHandling.php | 23 | ||||
-rw-r--r-- | lib/public/UserMigration/UserMigrationException.php | 21 |
6 files changed, 45 insertions, 103 deletions
diff --git a/lib/public/UserMigration/IExportDestination.php b/lib/public/UserMigration/IExportDestination.php index 65d228faeb9..ee53d2eccb3 100644 --- a/lib/public/UserMigration/IExportDestination.php +++ b/lib/public/UserMigration/IExportDestination.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2022 Côme Chilliet <come.chilliet@nextcloud.com> - * - * @author Côme Chilliet <come.chilliet@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: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\UserMigration; @@ -32,7 +15,6 @@ use OCP\Files\Folder; * @since 24.0.0 */ interface IExportDestination { - /** * Adds a file to the export * @@ -60,11 +42,12 @@ interface IExportDestination { * * @param Folder $folder folder to copy to the export archive. * @param string $destinationPath Full path to the folder in the export archive. Parent directories will be created if needed. + * @param ?callable(\OCP\Files\Node):bool $nodeFilter Callback to filter nodes to copy * @throws UserMigrationException * * @since 24.0.0 */ - public function copyFolder(Folder $folder, string $destinationPath): void; + public function copyFolder(Folder $folder, string $destinationPath, ?callable $nodeFilter = null): void; /** * @param array<string,int> $versions Migrators and their versions. diff --git a/lib/public/UserMigration/IImportSource.php b/lib/public/UserMigration/IImportSource.php index da2c87ba241..3818895932e 100644 --- a/lib/public/UserMigration/IImportSource.php +++ b/lib/public/UserMigration/IImportSource.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2022 Côme Chilliet <come.chilliet@nextcloud.com> - * - * @author Côme Chilliet <come.chilliet@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: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\UserMigration; @@ -32,6 +15,9 @@ use OCP\Files\Folder; * @since 24.0.0 */ interface IImportSource { + /** + * @since 24.0.0 + */ public const PATH_USER = 'user.json'; /** diff --git a/lib/public/UserMigration/IMigrator.php b/lib/public/UserMigration/IMigrator.php index d02e5df0683..8ce2cca8f98 100644 --- a/lib/public/UserMigration/IMigrator.php +++ b/lib/public/UserMigration/IMigrator.php @@ -3,26 +3,8 @@ declare(strict_types=1); /** - * @copyright 2022 Christopher Ng <chrng8@gmail.com> - * - * @author Christopher Ng <chrng8@gmail.com> - * @author Côme Chilliet <come.chilliet@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: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\UserMigration; @@ -34,7 +16,6 @@ use Symfony\Component\Console\Output\OutputInterface; * @since 24.0.0 */ interface IMigrator { - /** * Export user data * @@ -44,7 +25,7 @@ interface IMigrator { public function export( IUser $user, IExportDestination $exportDestination, - OutputInterface $output + OutputInterface $output, ): void; /** @@ -56,7 +37,7 @@ interface IMigrator { public function import( IUser $user, IImportSource $importSource, - OutputInterface $output + OutputInterface $output, ): void; /** @@ -94,6 +75,6 @@ interface IMigrator { * @since 24.0.0 */ public function canImport( - IImportSource $importSource + IImportSource $importSource, ): bool; } diff --git a/lib/public/UserMigration/ISizeEstimationMigrator.php b/lib/public/UserMigration/ISizeEstimationMigrator.php new file mode 100644 index 00000000000..2d1f3466f2c --- /dev/null +++ b/lib/public/UserMigration/ISizeEstimationMigrator.php @@ -0,0 +1,26 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCP\UserMigration; + +use OCP\IUser; + +/** + * @since 25.0.0 + */ +interface ISizeEstimationMigrator { + /** + * Returns an estimate of the exported data size in KiB. + * Should be fast, favor performance over accuracy. + * + * @since 25.0.0 + * @since 27.0.0 return value may overflow from int to float + */ + public function getEstimatedExportSize(IUser $user): int|float; +} diff --git a/lib/public/UserMigration/TMigratorBasicVersionHandling.php b/lib/public/UserMigration/TMigratorBasicVersionHandling.php index 9010d14a173..b33425a023d 100644 --- a/lib/public/UserMigration/TMigratorBasicVersionHandling.php +++ b/lib/public/UserMigration/TMigratorBasicVersionHandling.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2022 Côme Chilliet <come.chilliet@nextcloud.com> - * - * @author Côme Chilliet <come.chilliet@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: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\UserMigration; @@ -48,7 +31,7 @@ trait TMigratorBasicVersionHandling { * @since 24.0.0 */ public function canImport( - IImportSource $importSource + IImportSource $importSource, ): bool { $version = $importSource->getMigratorVersion($this->getId()); if ($version === null) { diff --git a/lib/public/UserMigration/UserMigrationException.php b/lib/public/UserMigration/UserMigrationException.php index ed8c28a6208..f1b1d83466e 100644 --- a/lib/public/UserMigration/UserMigrationException.php +++ b/lib/public/UserMigration/UserMigrationException.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2022 Côme Chilliet <come.chilliet@nextcloud.com> - * - * @author Côme Chilliet <come.chilliet@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: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCP\UserMigration; |