$email = false;
$tmp = Files::tempnam() . '.pdf';
+ $raw = '';
$fdfFields = '%FDF-1.2
1 0 obj<</FDF<< /Fields[' . "\n";
foreach ($fields as $k => $v) {
+ $rawValue = $v;
if (in_array($k, $emailFields)) {
$email = $v;
}
if (str_starts_with($v, ':checked:')) {
- $val = 'V/' . utf8_decode(ucfirst(substr($v, 9)));
+ $rawValue = ucfirst(substr($v, 9));
+ $val = 'V/' . $this->_escapeFDF($rawValue);
} else {
- $val = 'V(' . utf8_decode($v) . ')';
+ $val = 'V(' . $this->_escapeFDF($v) . ')';
}
- $fdfFields .= '<</T(' . utf8_decode($k) . ')/' . $val . '>>' . "\n";
+ $fdfFields .= '<</T(' . $this->_escapeFDF($k) . ')/' . $val . '>>' . "\n";
+ $raw .= $k . ': ' . $rawValue . "\n";
}
if (!$email) {
$recipient = $link['target'] ?: $fluidbook->pdfform_to;
// Admin email
- Mail::raw($this->_replace($fluidbook->pdfform_email_body), function (Message $message) use ($fluidbook, $recipient, $email, $fields, $tmp, $fdf) {
+ Mail::raw($this->_replace($fluidbook->pdfform_email_body, $raw), function (Message $message) use ($fluidbook, $recipient, $email, $fields, $tmp, $fdf) {
$message->to($recipient);
if ($email) {
$message->replyTo($email);
});
// User email
if ($fluidbook->pdfform_copy_user && $email) {
- Mail::raw($this->_replace($fluidbook->pdfform_email_body_user), function (Message $message) use ($fluidbook, $recipient, $email, $fields, $tmp, $fdf) {
+ Mail::raw($this->_replace($fluidbook->pdfform_email_body_user, $raw), function (Message $message) use ($fluidbook, $recipient, $email, $fields, $tmp, $fdf) {
$message->to($email);
$message->replyTo($recipient);
$message->subject($this->_replace($fluidbook->pdfform_email_subject_user));
}
- protected function _replace($c)
+ protected function _escapeFDF($v)
+ {
+ return utf8_decode(str_replace(['\\', '(', ')'], ['\\\\', '\(', '\)'], $v));
+ }
+
+ protected function _replace($c, $raw = '')
{
$c = str_replace('%formname%', $this->_pdfform_link['name'], $c);
+ $c = str_replace('%raw%', $raw, $c);
return $c;
}
}
$this->_addSettingField('', FormSeparator::class);
$this->_addSettingField('pdfform_to', Email::class, __('Destinataire par défaut'), ['hint' => __('Le destinataire pourra être redéfini pour chaque formulaire dans l\'éditeur de liens')]);
$this->_addSettingField('pdfform_email_subject', Text::class, __('Sujet des emails pour le destinataire'), ['default' => '%formname%']);
- $this->_addSettingField('pdfform_email_body', Textarea::class, __('Texte des emails pour le destinataire'));
+ $this->_addSettingField('pdfform_email_body', Textarea::class, __('Texte des emails pour le destinataire'), ['default' => '%raw%']);
}