You are here

public function WebformEntityPrintWebformExporter::writeSubmission in Webform 6.x

Same name and namespace in other branches
  1. 8.5 modules/webform_entity_print/src/Plugin/WebformExporter/WebformEntityPrintWebformExporter.php \Drupal\webform_entity_print\Plugin\WebformExporter\WebformEntityPrintWebformExporter::writeSubmission()

Write submission to export.

Parameters

\Drupal\webform\WebformSubmissionInterface $webform_submission: A webform submission.

Overrides WebformExporterBase::writeSubmission

File

modules/webform_entity_print/src/Plugin/WebformExporter/WebformEntityPrintWebformExporter.php, line 100

Class

WebformEntityPrintWebformExporter
Defines a Webform Entity Print PDF exporter.

Namespace

Drupal\webform_entity_print\Plugin\WebformExporter

Code

public function writeSubmission(WebformSubmissionInterface $webform_submission) {
  $configuration = $this
    ->getConfiguration();

  // Make sure Webform Entity Print template is used.
  // @see webform_entity_print_entity_view_alter()
  $this->request->request
    ->set('_webform_entity_print', TRUE);

  // Set view mode.
  // @see \Drupal\webform\WebformSubmissionViewBuilder::view
  $this->request->request
    ->set('_webform_submissions_view_mode', $configuration['view_mode']);

  // Get print engine.
  $export_type_id = $this
    ->getExportTypeId();
  $print_engine = $this->printEngineManager
    ->createSelectedInstance($export_type_id);

  // Get scheme.
  $scheme = 'temporary';

  // Get file name.
  $file_extension = $this
    ->getExportTypeFileExtension();
  $file_name = $this
    ->getSubmissionBaseName($webform_submission) . '.' . $file_extension;

  // Save printable document.
  $temporary_file_path = $this->printBuilder
    ->savePrintable([
    $webform_submission,
  ], $print_engine, $scheme, $file_name);
  if ($temporary_file_path) {
    $this
      ->addToArchive(file_get_contents($temporary_file_path), $file_name);
    $this->fileSystem
      ->delete($temporary_file_path);
  }
}