Automattic\WooCommerce\Admin\Features\Blueprint

RestApi::export()publicWC 1.0

Handle the export request.

Method of the class: RestApi{}

No Hooks.

Return

\WP_HTTP_Response. The response object.

Usage

$RestApi = new RestApi();
$RestApi->export( $request );
$request(\WP_REST_Request) (required)
The request object.

RestApi::export() code WC 9.7.1

public function export( $request ) {
	$payload = $request->get_param( 'steps' );
	$steps   = $this->steps_payload_to_blueprint_steps( $payload );

	$export_as_zip = $request->get_param( 'export_as_zip' );
	$exporter      = new ExportSchema();

	if ( isset( $payload['plugins'] ) ) {
		$exporter->onBeforeExport(
			'installPlugin',
			function ( ExportInstallPluginSteps $exporter ) use ( $payload ) {
				$exporter->filter(
					function ( array $plugins ) use ( $payload ) {
						return array_intersect_key( $plugins, array_flip( $payload['plugins'] ) );
					}
				);
			}
		);
	}

	if ( isset( $payload['themes'] ) ) {
		$exporter->onBeforeExport(
			'installTheme',
			function ( ExportInstallThemeSteps $exporter ) use ( $payload ) {
				$exporter->filter(
					function ( array $plugins ) use ( $payload ) {
						return array_intersect_key( $plugins, array_flip( $payload['themes'] ) );
					}
				);
			}
		);
	}

	$data = $exporter->export( $steps, $export_as_zip );

	if ( $export_as_zip ) {
		$zip  = new ZipExportedSchema( $data );
		$data = $zip->zip();
		$data = site_url( str_replace( ABSPATH, '', $data ) );
	}

	return new \WP_HTTP_Response(
		array(
			'data' => $data,
			'type' => $export_as_zip ? 'zip' : 'json',
		)
	);
}