option('dry-run'); if (! $assigner->enabled() && ! $dryRun) { $this->warn('Zuordnung ist aus (CANONICAL_ASSIGNMENT_ENABLED). Mit --dry-run lässt sich das Ergebnis trotzdem ansehen.'); return self::SUCCESS; } $verbose = (bool) $this->option('verbose-pairs'); $result = $assigner->assignAll($dryRun, function (int $canonicalId, int $duplicateId, bool $changed) use ($verbose): void { if ($verbose) { $this->line(sprintf(' %d ← %d%s', $canonicalId, $duplicateId, $changed ? '' : ' (unverändert)')); } }); $this->info(sprintf( '%s%d Paare, %d %s.', $dryRun ? '[Dry-Run] ' : '', $result['pairs'], $result['changed'], $dryRun ? 'würden geändert' : 'geändert', )); // rel=canonical steckt in den gecachten Meldungsseiten, die Sitemaps // (1 h) nennen nur die Erstquelle — nach einer Zuordnung über den // Bestand sollen beide sofort den neuen Stand zeigen. if (! $dryRun && $result['changed'] > 0) { WebCaches::forgetPublicPages(); $this->line('Seiten- und Sitemap-Caches geleert.'); } return self::SUCCESS; } }