Nachdem ich es ausgefüllt habe, erhalte ich jedoch folgende Meldung im Fenster: Zwei Dinge:
1) Die Fehlermeldung hat fehlende Platzhalter, obwohl diese in in der .po Datei (form_assistent.po) vorhanden ist:
Ab Zeile 404
Code: Alles auswählen
#: classes/class.pifa.form.php:545
msgid "MISSING_RECIPIENT_ADDRESS"
msgstr "Empfänger-Adresse fehlt"
2) Das weitaus wichtigere Problem:
Die Config des Formulars sieht so aus: Die obige Fehlermeldung soll (soweit ich es verstanden habe) angeben, dass die Empfängeradresse fehlt.
So hab ich denn im Code mal nach der Stelle geschaut, welche die Exception wirft (class.pifa_form.php):
Code: Alles auswählen
public function toMailRecipient(array $opt) {
print_r($opt);
if (0 == strlen(trim($opt['from']))) {
$msg = Pifa::i18n('MISSING_SENDER_ADDRESS');
throw new PifaMailException($msg);
}
if (0 == strlen(trim($opt['fromName']))) {
$msg = Pifa::i18n('MISSING_SENDER_NAME');
throw new PifaMailException($msg);
}
if (0 == strlen(trim($opt['to']))) {
$msg = Pifa::i18n('MISSING_RECIPIENT_ADDRESS');
throw new PifaMailException($msg);
}
if (0 == strlen(trim($opt['subject']))) {
$msg = Pifa::i18n('MISSING_SUBJECT');
throw new PifaMailException($msg);
}
if (0 == strlen(trim($opt['body']))) {
$msg = Pifa::i18n('MISSING_EMAIL_BODY');
throw new PifaMailException($msg);
}
Ist das nicht so gedacht würde ich in jedem Fall eine checkbox hinzufügen, wo man die beiden Mail-Varianten optional deaktivieren kann.
Der Code um die Benutzermail nicht zu versenden, wenn bei Vorlage "keine" gewählt wurde würde so aussehen :
Datei: class.pifa.mailed_form_processor.php ab Zeile 60 (hinzugefügt wurde die IF-Schachtelung des toMailRecipient-Aufrufs.
Code: Alles auswählen
if(!empty($this->getModule()->getSetting('pifaform_mail_client_template'))){
// send mail
$this->getForm()->toMailRecipient(array(
'from' => $this->getModule()->getSetting('pifaform_mail_client_from_email'),
'fromName' => $this->getModule()->getSetting('pifaform_mail_client_from_name'),
'to' => $values['email'],
'subject' => $subject,
'body' => $body,
'charSet' => 'UTF-8'
));
}
Hier fehlt also schon einmal die Abfrage, dass die Exception nur geworfen wird, wenn tatsächlich auch eine Benutzermail gesendet werden soll... womit wir direkt zur nächsten Frage kommen...
Wo wird die Reciepient-Mailadresse hergeholt?
Schaut man in die Datei class.pifa.mailed_form_processor.php in Zeile 61, wird deutlich, dass er $values['email'] abruft, also ein Textfeld mit dem Spaltennamen "email" erwartet.
Meiner Meinung nach sollte sowas "sauber" in der Fehlermeldung dokumentiert werden... und nicht lediglich Missing Reciepient ausgegeben werden - da suchen sich sonst selbst erfahrene Contenido-Programmierer nen Wolf.