runner = new RestoreRunner( $repository ?? new WpRestoreRepository(), $storage ?? new WpObjectStorage(), $webhooks ?? new WebhookSender(), $database ?? new WpDatabaseDumper(), $files ?? new WpFileSystem(), $maintenance ?? new WpMaintenanceMode(), $crypto ?? new WpCrypto(), $logger ?? new WpLogger(), // BackupManager implements SafetyBackupMaker. Passed explicitly rather than // constructed inside the runner so the two orchestrators never form a cycle. $safetyBackups ?? new BackupManager(), // Nos réglages vivent dans la table des options du SITE, donc dans le dump : // sans ceci, l'import rembobinerait la clé d'API et les identifiants de // stockage de cette installation, et restaurer déconnecterait le site. $settings ?? AttachmentJournal::build(), ); } /** * @param string|null $expectedChecksum SHA-256 recorded when the archive was * uploaded. Verified before anything is decrypted or written. */ /** * @param string|null $baseCloudPath Sauvegarde COMPLÈTE sur laquelle appliquer * un différentiel. Exigée par le moteur pour * ce mode : sans elle, il refuse plutôt que * de remonter une fraction du site avec l'air * d'avoir réussi. */ public function restore( int $restoreId, string $cloudPath, string $scope, bool $safetyBackup, ?string $expectedChecksum = null, ?string $baseCloudPath = null, ?string $baseChecksum = null, ): void { $this->runner->restore($restoreId, $cloudPath, $scope, $safetyBackup, $expectedChecksum, $baseCloudPath, $baseChecksum); } }