protected function doRestoreGlobalAliases()
{
$totalCount = $this->getTotalBackupCount(static::GLOBAL_ALIAS_BACKUP_TABLE);
$passCount = ceil($totalCount / $this->bulkCount);
$createdAliasCount = 0;
$conflictCount = 0;
if ($totalCount === 0) {
$this->output->writeln('Could not find any backed up global URL aliases, nothing to restore.');
$this->output->writeln('');
return;
}
$queryBuilder = $this->connection->createQueryBuilder();
$queryBuilder->select('*')->from(static::GLOBAL_ALIAS_BACKUP_TABLE)->orderBy('id', 'ASC');
$this->output->writeln("Restoring {$totalCount} custom URL alias(es).");
$progressBar = $this->getProgressBar($totalCount);
$progressBar->start();
for ($pass = 0; $pass <= $passCount; ++$pass) {
$rows = $this->loadPassData($queryBuilder, $pass);
foreach ($rows as $row) {
try {
$this->setMigrationTable();
$this->urlAliasHandler->createGlobalUrlAlias($row['resource'], $row['path'], (bool) $row['forwarding'], $row['language_code'], (bool) $row['always_available']);
$createdAliasCount += 1;
$this->setDefaultTable();
} catch (ForbiddenException $e) {
$conflictCount += 1;
} catch (Exception $e) {
$this->setDefaultTable();
throw $e;
}
}
$progressBar->advance(count($rows));
}
$progressBar->finish();
$this->output->writeln('');
$this->output->writeln("Done. Restored {$createdAliasCount} custom URL alias(es) " . "with {$conflictCount} conflict(s).");
$this->output->writeln('');
}