public static function WebformEntityPrintAttachment::getFileContent in Webform 8.5
Same name and namespace in other branches
- 6.x modules/webform_entity_print_attachment/src/Element/WebformEntityPrintAttachment.php \Drupal\webform_entity_print_attachment\Element\WebformEntityPrintAttachment::getFileContent()
Get a webform attachment's file content.
Parameters
array $element: The webform attachment element.
\Drupal\webform\WebformSubmissionInterface $webform_submission: A webform submission.
Return value
mixed|string The attachment's file content.
Overrides WebformAttachmentInterface::getFileContent
File
- modules/
webform_entity_print_attachment/ src/ Element/ WebformEntityPrintAttachment.php, line 29
Class
- WebformEntityPrintAttachment
- Provides a 'webform_entity_print_attachment' element.
Namespace
Drupal\webform_entity_print_attachment\ElementCode
public static function getFileContent(array $element, WebformSubmissionInterface $webform_submission) {
/** @var \Drupal\entity_print\Plugin\EntityPrintPluginManagerInterface $print_engine_manager */
$print_engine_manager = \Drupal::service('plugin.manager.entity_print.print_engine');
/** @var \Drupal\entity_print\PrintBuilderInterface $print_builder */
$print_builder = \Drupal::service('entity_print.print_builder');
// Make sure Webform Entity Print template is used.
// @see webform_entity_print_entity_view_alter()
\Drupal::request()->request
->set('_webform_entity_print', TRUE);
// Set view mode or render custom twig.
// @see \Drupal\webform\WebformSubmissionViewBuilder::view
// @see webform_entity_print_attachment_webform_submission_view_alter()
$view_mode = isset($element['#view_mode']) ? $element['#view_mode'] : 'html';
if ($view_mode === 'twig') {
$webform_submission->_webform_view_mode_twig = $element['#template'];
}
\Drupal::request()->request
->set('_webform_submissions_view_mode', $view_mode);
// Get scheme.
$scheme = 'temporary';
// Get filename.
$file_name = 'webform-entity-print-attachment--' . $webform_submission
->getWebform()
->id() . '-' . $webform_submission
->id() . '.pdf';
// Save printable document.
$export_type_id = static::getExportTypeId($element);
$print_engine = $print_engine_manager
->createSelectedInstance($export_type_id);
$temporary_file_path = $print_builder
->savePrintable([
$webform_submission,
], $print_engine, $scheme, $file_name);
if ($temporary_file_path) {
$contents = file_get_contents($temporary_file_path);
\Drupal::service('file_system')
->delete($temporary_file_path);
}
else {
// Log error.
$context = [
'@filename' => $file_name,
];
\Drupal::logger('webform_entity_print')
->error("Unable to generate '@filename'.", $context);
$contents = '';
}
return $contents;
}