You are here

protected function WebformSubmissionExportImportController::createResponse in Webform 8.5

Same name and namespace in other branches
  1. 6.x modules/webform_submission_export_import/src/Controller/WebformSubmissionExportImportController.php \Drupal\webform_submission_export_import\Controller\WebformSubmissionExportImportController::createResponse()

Create a response containing submission CSV example.

Parameters

bool $download: TRUE is response should be downloaded.

Return value

\Symfony\Component\HttpFoundation\Response A response containing submission CSV example.

2 calls to WebformSubmissionExportImportController::createResponse()
WebformSubmissionExportImportController::download in modules/webform_submission_export_import/src/Controller/WebformSubmissionExportImportController.php
Returns the Webform submission export example CSV download.
WebformSubmissionExportImportController::view in modules/webform_submission_export_import/src/Controller/WebformSubmissionExportImportController.php
Returns the Webform submission export example CSV view.

File

modules/webform_submission_export_import/src/Controller/WebformSubmissionExportImportController.php, line 116

Class

WebformSubmissionExportImportController
Provides route responses for webform submission export/import.

Namespace

Drupal\webform_submission_export_import\Controller

Code

protected function createResponse($download = FALSE) {
  $webform = $this->importer
    ->getWebform();

  // From: http://obtao.com/blog/2013/12/export-data-to-a-csv-file-with-symfony/
  $response = new StreamedResponse(function () {
    $handle = fopen('php://output', 'r+');
    $header = $this->importer
      ->exportHeader();
    fputcsv($handle, $header);
    for ($i = 1; $i <= 3; $i++) {
      $webform_submission = $this
        ->generateSubmission($i);
      $record = $this->importer
        ->exportSubmission($webform_submission);
      fputcsv($handle, $record);
    }
    fclose($handle);
  });
  $response->headers
    ->set('Content-Type', $download ? 'text/csv' : 'text/plain');
  $response->headers
    ->set('Content-Disposition', ($download ? 'attachment' : 'inline') . '; filename=' . $webform
    ->id() . '.csv');
  return $response;
}