diff --git a/packages/ep_theme/Classes/Command/MigrateGridelementsCommand.php b/packages/ep_theme/Classes/Command/MigrateGridelementsCommand.php index ee7d9b4..4781b46 100644 --- a/packages/ep_theme/Classes/Command/MigrateGridelementsCommand.php +++ b/packages/ep_theme/Classes/Command/MigrateGridelementsCommand.php @@ -161,7 +161,10 @@ class MigrateGridelementsCommand extends Command $output->writeln(sprintf('%6d other rows with grid values, cleared', $leftovers)); } if ($input->getOption('report')) { - $this->writeReport((string)$input->getOption('report'), $report); + if (!$this->writeReport((string)$input->getOption('report'), $report)) { + $output->writeln(sprintf('Cannot write the report to %s, nothing migrated.', $input->getOption('report'))); + return Command::FAILURE; + } $output->writeln(sprintf('Report: %d rows in %s', count($report), $input->getOption('report'))); } if ($updates === [] && $leftovers === 0) { @@ -194,19 +197,22 @@ class MigrateGridelementsCommand extends Command /** * @param list, 1: string, 2: string, 3: string}> $rows */ - private function writeReport(string $file, array $rows): void + private function writeReport(string $file, array $rows): bool { + $handle = @fopen($file, 'wb'); + if ($handle === false) { + return false; + } $titles = []; - foreach ($this->connectionPool->getConnectionForTable('pages')->select(['uid', 'title'], 'pages', ['sys_language_uid' => 0])->iterateAssociative() as $page) { + foreach ($this->connectionPool->getConnectionForTable('pages')->executeQuery('SELECT uid, title FROM pages WHERE sys_language_uid = 0')->iterateAssociative() as $page) { $titles[(int)$page['uid']] = $page['title']; } - $handle = fopen($file, 'wb'); fputcsv($handle, ['uid', 'pid', 'page', 'CType', 'header', 'hidden', 'group', 'reason', 'action'], escape: ''); foreach ($rows as [$row, $group, $reason, $action]) { fputcsv($handle, [ $row['uid'], $row['pid'], $titles[(int)$row['pid']] ?? '', $row['CType'], $row['header'], $row['hidden'], $group, $reason, $action, ], escape: ''); } - fclose($handle); + return fclose($handle); } }