protected function execute(InputInterface $input, OutputInterface $output)
{
$bulkCount = $input->getArgument('bulk_count');
$dryRun = $input->getOption('dry-run');
/** @var \eZ\Publish\Core\Persistence\Database\DatabaseHandler $databaseHandler */
$databaseHandler = $this->getContainer()->get('ezpublish.connection');
$warningStyle = new OutputFormatterStyle('red');
$output->getFormatter()->setStyle('warning', $warningStyle);
$output->writeln($this->getProcessedHelp());
$query = $databaseHandler->createSelectQuery();
$subQuery = $query->subSelect();
$this->initSelectQuery($subQuery);
$query->select($query->expr->count('*'))->from($query->alias($subQuery, 't1'));
$stmt = $query->prepare();
$stmt->execute();
$totalCount = $stmt->fetchColumn();
$output->writeln(array('Found total of Content objects for update: ' . $totalCount, ''));
if ($totalCount == 0) {
$output->writeln('Nothing to process, exiting.');
return;
}
$helper = $this->getHelper('question');
$question = new ConfirmationQuestion('<question>Are you sure you want to proceed?</question> ', false);
if (!$helper->ask($input, $output, $question)) {
$output->writeln('');
return;
}
$query = $databaseHandler->createSelectQuery();
$this->initSelectQuery($query);
$passCount = ceil($totalCount / $bulkCount);
$progress = new ProgressBar($output, $totalCount);
$progress->setFormat(' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%');
$output->writeln('');
$progress->start();
for ($pass = 0; $pass <= $passCount; ++$pass) {
$rows = $this->loadData($query, $bulkCount, $pass);
foreach ($rows as $row) {
$this->updateAlwaysAvailableFlag($output, $progress, $row['id'], $row['current_version'], $row['initial_language_id'], $dryRun);
$progress->advance();
}
}
$progress->finish();
$output->writeln('');
}