mirror of
https://github.com/nextcloud/server.git
synced 2025-10-26 19:21:34 +00:00
Adapt existing migrators to new API
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
parent
a77ffe8593
commit
0fd72f4355
@ -225,18 +225,20 @@ class CalendarMigrator implements IMigrator {
|
||||
$output->writeln('No calendars to export…');
|
||||
}
|
||||
|
||||
/**
|
||||
* @var string $name
|
||||
* @var VCalendar $vCalendar
|
||||
*/
|
||||
foreach ($calendarExports as ['name' => $name, 'vCalendar' => $vCalendar]) {
|
||||
// Set filename to sanitized calendar name appended with the date
|
||||
$filename = preg_replace('/[^a-zA-Z0-9-_ ]/um', '', $name) . '_' . date('Y-m-d') . CalendarMigrator::FILENAME_EXT;
|
||||
$exportPath = CalendarMigrator::EXPORT_ROOT . $filename;
|
||||
try {
|
||||
/**
|
||||
* @var string $name
|
||||
* @var VCalendar $vCalendar
|
||||
*/
|
||||
foreach ($calendarExports as ['name' => $name, 'vCalendar' => $vCalendar]) {
|
||||
// Set filename to sanitized calendar name appended with the date
|
||||
$filename = preg_replace('/[^a-zA-Z0-9-_ ]/um', '', $name) . '_' . date('Y-m-d') . CalendarMigrator::FILENAME_EXT;
|
||||
$exportPath = CalendarMigrator::EXPORT_ROOT . $filename;
|
||||
|
||||
if ($exportDestination->addFileContents($exportPath, $vCalendar->serialize()) === false) {
|
||||
throw new CalendarMigratorException('Could not export calendars');
|
||||
$exportDestination->addFileContents($exportPath, $vCalendar->serialize());
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
throw new CalendarMigratorException('Could not export calendars', 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -205,26 +205,26 @@ class ContactsMigrator implements IMigrator {
|
||||
$output->writeln('No contacts to export…');
|
||||
}
|
||||
|
||||
/**
|
||||
* @var string $name
|
||||
* @var string $displayName
|
||||
* @var ?string $description
|
||||
* @var VCard[] $vCards
|
||||
*/
|
||||
foreach ($addressBookExports as ['name' => $name, 'displayName' => $displayName, 'description' => $description, 'vCards' => $vCards]) {
|
||||
// Set filename to sanitized address book name appended with the date
|
||||
$basename = preg_replace('/[^a-zA-Z0-9-_ ]/um', '', $name) . '_' . date('Y-m-d');
|
||||
$exportPath = ContactsMigrator::PATH_ROOT . $basename . '.' . ContactsMigrator::FILENAME_EXT;
|
||||
$metadataExportPath = ContactsMigrator::PATH_ROOT . $basename . '.' . ContactsMigrator::METADATA_EXT;
|
||||
try {
|
||||
/**
|
||||
* @var string $name
|
||||
* @var string $displayName
|
||||
* @var ?string $description
|
||||
* @var VCard[] $vCards
|
||||
*/
|
||||
foreach ($addressBookExports as ['name' => $name, 'displayName' => $displayName, 'description' => $description, 'vCards' => $vCards]) {
|
||||
// Set filename to sanitized address book name appended with the date
|
||||
$basename = preg_replace('/[^a-zA-Z0-9-_ ]/um', '', $name) . '_' . date('Y-m-d');
|
||||
$exportPath = ContactsMigrator::PATH_ROOT . $basename . '.' . ContactsMigrator::FILENAME_EXT;
|
||||
$metadataExportPath = ContactsMigrator::PATH_ROOT . $basename . '.' . ContactsMigrator::METADATA_EXT;
|
||||
|
||||
if ($exportDestination->addFileContents($exportPath, $this->serializeCards($vCards)) === false) {
|
||||
throw new ContactsMigratorException('Could not export address book');
|
||||
}
|
||||
$exportDestination->addFileContents($exportPath, $this->serializeCards($vCards);
|
||||
|
||||
$metadata = array_filter(['displayName' => $displayName, 'description' => $description]);
|
||||
if ($exportDestination->addFileContents($metadataExportPath, json_encode($metadata)) === false) {
|
||||
throw new ContactsMigratorException('Could not export address book metadata');
|
||||
$metadata = array_filter(['displayName' => $displayName, 'description' => $description]);
|
||||
$exportDestination->addFileContents($metadataExportPath, json_encode($metadata);
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
throw new CalendarMigratorException('Could not export address book', 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -74,18 +74,16 @@ class TrashbinMigrator implements IMigrator {
|
||||
try {
|
||||
$trashbinFolder = $this->root->get('/'.$uid.'/files_trashbin');
|
||||
if (!$trashbinFolder instanceof Folder) {
|
||||
throw new UserMigrationException('Could not export trashbin, /'.$uid.'/files_trashbin is not a folder');
|
||||
throw new UserMigrationException('/'.$uid.'/files_trashbin is not a folder');
|
||||
}
|
||||
$output->writeln("Exporting trashbin files…");
|
||||
if ($exportDestination->copyFolder($trashbinFolder, static::PATH_FILES_FOLDER) === false) {
|
||||
throw new UserMigrationException("Could not export trashbin.");
|
||||
}
|
||||
$exportDestination->copyFolder($trashbinFolder, static::PATH_FILES_FOLDER);
|
||||
$originalLocations = \OCA\Files_Trashbin\Trashbin::getLocations($uid);
|
||||
if ($exportDestination->addFileContents(static::PATH_LOCATIONS_FILE, json_encode($originalLocations)) === false) {
|
||||
throw new UserMigrationException("Could not export trashbin.");
|
||||
}
|
||||
$exportDestination->addFileContents(static::PATH_LOCATIONS_FILE, json_encode($originalLocations);
|
||||
} catch (NotFoundException $e) {
|
||||
$output->writeln("No trashbin to export…");
|
||||
} catch (UserMigrationException $e) {
|
||||
throw new UserMigrationException("Could not export trashbin: ".$e->getMessage(), 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -74,20 +74,20 @@ class AccountMigrator implements IMigrator {
|
||||
public function export(IUser $user, IExportDestination $exportDestination, OutputInterface $output): void {
|
||||
$output->writeln('Exporting account information in ' . AccountMigrator::PATH_ACCOUNT_FILE . '…');
|
||||
|
||||
$account = $this->accountManager->getAccount($user);
|
||||
if ($exportDestination->addFileContents(AccountMigrator::PATH_ACCOUNT_FILE, json_encode($account)) === false) {
|
||||
throw new AccountMigratorException('Could not export account information');
|
||||
}
|
||||
try {
|
||||
$account = $this->accountManager->getAccount($user);
|
||||
$exportDestination->addFileContents(AccountMigrator::PATH_ACCOUNT_FILE, json_encode($account));
|
||||
|
||||
$avatar = $this->avatarManager->getAvatar($user->getUID());
|
||||
if ($avatar->isCustomAvatar()) {
|
||||
$avatarFile = $avatar->getFile(-1);
|
||||
$exportPath = AccountMigrator::PATH_ROOT . AccountMigrator::AVATAR_BASENAME . '.' . $avatarFile->getExtension();
|
||||
$avatar = $this->avatarManager->getAvatar($user->getUID());
|
||||
if ($avatar->isCustomAvatar()) {
|
||||
$avatarFile = $avatar->getFile(-1);
|
||||
$exportPath = AccountMigrator::PATH_ROOT . AccountMigrator::AVATAR_BASENAME . '.' . $avatarFile->getExtension();
|
||||
|
||||
$output->writeln('Exporting avatar to ' . $exportPath . '…');
|
||||
if ($exportDestination->addFileAsStream($exportPath, $avatarFile->read()) === false) {
|
||||
throw new AccountMigratorException('Could not export avatar');
|
||||
$output->writeln('Exporting avatar to ' . $exportPath . '…');
|
||||
$exportDestination->addFileAsStream($exportPath, $avatarFile->read());
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
throw new AccountMigratorException('Could not export account information', 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user