ich habe mit XForm ein Kontaktformular erstellt. Mit einer Checkbox soll der Nutzer entscheiden können, ob ihm eine Kopie seiner Nachricht zugesendet wird.
Da ich in den Bordmitteln nicht fündig geworden bin, habe ich nun eine abgewandelte Aktion "rex_xform_action_db2email_conditional_copy" erstellt, die die ursprüngliche db2email-Aktion dahingehend ergänzt, dass eine Abfrage vorgeschaltet wird, die prüft, ob die betreffende Checkbox gecheckt ist.
Die neue Signatur lautet:
Code: Alles auswählen
"action|db2email_conditional_copy|checkboxlabel|emailtemplate|emaillabel"
"emaillabel": Hier wird das Label des E-Mail-Adressfeldes eingetragen, in das der Absender seine Adresse einträgt.
Klasse:
Code: Alles auswählen
<?php
/**
* XForm
*
* @author jan.kristinus[at]redaxo[dot]de Jan Kristinus
* @author <a href="http://www.yakamara.de">www.yakamara.de</a>
*
* @package redaxo4
* @version svn:$Id$
*/
class rex_xform_action_db2email_conditional_copy extends rex_xform_action_abstract
{
function execute()
{
global $REX;
// Label der Checkbox
$checkbox_label = $this->getElement(2);
/* Abfragen, ob die Checkbox aktiviert ist */
if($this->params["value_pool"]["email"][$checkbox_label]==1){
$template_name = $this->getElement(3);
if($etpl = rex_xform_emailtemplate::getTemplate($template_name))
{
// ----- find mailto
$mail_to = $REX['ERROR_EMAIL']; // default
// finde email label in list
/* if ($this->getElement(4) != FALSE && $this->getElement(4) != "")
{
foreach($this->params["value_pool"]["email"] as $key => $value)
if ($this->getElement(4)==$key)
{
$mail_to = $value;
break;
}
}*/
// ---- fix mailto from definition
//if ($this->getElement(5) != FALSE && $this->getElement(5) != "")
// $mail_to = $this->getElement(5);
// Mailto -> emaillabel (siehe Signatur)
$mail_to = $this->params["value_pool"]["email"][$this->getElement(4)];
$etpl = rex_xform_emailtemplate::replaceVars($etpl,$this->params["value_pool"]["email"]);
$etpl['mail_to'] = $mail_to;
$etpl['mail_to_name'] = $mail_to;
if($etpl['attachments'] != "")
{
$f = explode(",",$etpl['attachments']);
$etpl['attachments'] = array();
foreach($f as $v)
{
$etpl['attachments'][] = array("name"=>$v,"path"=>$REX["INCLUDE_PATH"].'/../../files/'.$v);
}
}else
{
$etpl['attachments'] = array();
}
if ($this->params["debug"])
{
echo "<hr /><pre>"; var_dump($etpl); echo "</pre><hr />";
}
if(!rex_xform_emailtemplate::sendMail($etpl, $template_name))
{
echo "error - email sent";
return FALSE;
}else
{
return TRUE;
}
}
return FALSE;
}
else {
return FALSE;
}
}
function getDescription()
{
return "action|db2email_conditional_copy|checkboxlabel|emailtemplate|emaillabel";
}
}