aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/UserMigration
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public/UserMigration')
-rw-r--r--lib/public/UserMigration/IExportDestination.php25
-rw-r--r--lib/public/UserMigration/IImportSource.php24
-rw-r--r--lib/public/UserMigration/IMigrator.php29
-rw-r--r--lib/public/UserMigration/ISizeEstimationMigrator.php26
-rw-r--r--lib/public/UserMigration/TMigratorBasicVersionHandling.php23
-rw-r--r--lib/public/UserMigration/UserMigrationException.php21
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;