Adapt existing migrators to new API

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2022-04-12 16:25:13 +02:00 committed by Vincent Petry
parent a77ffe8593
commit 0fd72f4355
No known key found for this signature in database
GPG Key ID: E055D6A4D513575C
4 changed files with 45 additions and 45 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}