public function WebformInvitationDownloadForm::submitForm in Webform Invitation 8
Same name and namespace in other branches
- 2.0.x src/Form/WebformInvitationDownloadForm.php \Drupal\webform_invitation\Form\WebformInvitationDownloadForm::submitForm()
Form submission handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormInterface::submitForm
File
- src/
Form/ WebformInvitationDownloadForm.php, line 70
Class
- WebformInvitationDownloadForm
- Allows to download the list of generated codes.
Namespace
Drupal\webform_invitation\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
/** @var \Drupal\webform\Entity\Webform $webform */
$webform = $form_state
->getValue('webform');
$webform_id = $webform
->id();
// Get all not used codes from DB table.
$query = $this->database
->select('webform_invitation_codes', 'c')
->fields('c');
$query
->condition('webform', $webform_id);
$query
->condition('used', 0);
$codes = $query
->execute();
// This is the XLS header.
$xlshead = pack("s*", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
// This is the XLS footer.
$xlsfoot = pack("s*", 0xa, 0x0);
$data = '';
$row = 0;
// Process all codes as rows into file.
while ($code = $codes
->fetchAssoc()) {
$url = Url::fromRoute('entity.webform.canonical', [
'webform' => $webform_id,
], [
'query' => [
'code' => $code['code'],
],
'absolute' => TRUE,
])
->toString();
$data .= $this
->xlsCell($row, 0, $url);
$row++;
}
// Provide file directly for download.
$filename = 'webform-invitation-codes-' . $webform_id . '.xls';
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
header('Content-Disposition: attachment;filename=' . $filename);
header('Content-Transfer-Encoding: binary');
echo $xlshead . $data . $xlsfoot;
// This is important.
exit;
}