Mit diesem Code möchte ich das umsetzen, was bisher nur bedingt gelingt.
1. Das Timingproblem konnte ich noch nicht lösen, den Rest schon, bis auf
2. auch der Benutzer erhält die Datei im Mail-Anhang, obwohl ich das (vermutlich falsch) ausgeklammert habe.
3. if ($form->id === 15) hat nicht funktioniert, deshalb der Umweg über $form_id
Vielleicht hast du noch ein Tipp/Lösungsansatz für mich.
Code:
public function onVisformsAfterFormSave($context, $form, $fields)
{
// Skip plugin if context is wrong
$allowedContexts = array('com_visforms.form', 'mod_visforms.form', 'plg_vfformview.form');
if (!in_array($context, $allowedContexts)) {
return true;
}
$app = JFactory::getApplication();
// only perform action, if we are in front end
if ($app->isAdmin()) {
return true;
}
// Formularaufrufe zum Test loggen
$form_id = $form->id;
$logfile = fopen("php/AfterFormSave_$form_id.log","a");
fputs($logfile,
date("d.m.Y; H:i:s",time()) . // Datum, Uhrzeit
"; " . $_SERVER['REMOTE_ADDR'] . // IP-Adresse
"\n");
fclose($logfile);
// SubmitHandler aufrufen wenn eine entsprechende php-Datei für ein Formular existiert
if (file_exists("php/vf_submit_$form_id.php")) {
include("php/vf_submit_$form_id.php");
}
return true;
}
public function onVisformsEmailPrepare($context, $mail, $form)
{
// Skip plugin if context is wrong
if (($context != 'com_visforms.form.receiptmail') && ($context != 'com_visforms.form.resultmail')) {
return true;
}
$app = JFactory::getApplication();
if ($app->isAdmin()) {
return true;
}
$form_id = $form->id;
// nur bei Formular 15 und nur für Ergebnismail ausführen
if (($form_id == 15) && ($context = 'com_visforms.form.resultmail')) {
$file = 'pfad_und_datename.csv';
$file = JPath::clean(JPATH_ROOT . '/' . $file);
if (JFile::exists($file)) {
$mail->addAttachment($file);
}
}
return true;
}
public function onVisformsEditMailPrepare($context, $mail, $form)
{
// Skip plugin if context is wrong
if (($context != 'com_visforms.form.receiptmail') && ($context != 'com_visforms.form.resultmail')) {
return true;
}
$app = JFactory::getApplication();
if ($app->isAdmin()) {
return true;
}
$form_id = $form->id;
// nur bei Formular 15 und nur für Ergebnismail ausführen
if (($form_id == 15) && ($context = 'com_visforms.form.resultmail')) {
$file = 'documents/liste.csv';
$file = JPath::clean(JPATH_ROOT . '/' . $file);
if (JFile::exists($file)) {
$mail->addAttachment($file);
}
}
return true;
}