eZ\Bundle\EzPublishMigrationBundle\Command\LegacyStorage\RegenerateUrlAliasesCommand::doRestoreGlobalAliases PHP Method

doRestoreGlobalAliases() protected method

Restores global URL aliases from the backup table.
See also: eZ\Bundle\EzPublishMigrationBundle\Command\LegacyStorage\RegenerateUrlAliasesCommand::restoreGlobalAliases()
protected doRestoreGlobalAliases ( )
    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('');
    }