[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • [erledigt] XForm: Bedingte Aktion db2email (Kopie an Sender)
Seite 1 von 1

[erledigt] XForm: Bedingte Aktion db2email (Kopie an Sender)

Verfasst: 12. Sep 2013, 02:59
von gemüsebrühe
Liebe Redaxaner (-innen),

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"
"checkboxlabel": Hier wird der Labelname der Checkbox aus dem Formular eingetragen, mit der Absender die Kopie anfordern kann.

"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";

  }

}

Mit besten Grüßen

Re: [erledigt] XForm: Bedingte Aktion db2email (Kopie an Sen

Verfasst: 23. Aug 2016, 09:32
von Fanello
Ist schon ein älterer Beitrag, ich frische den aber kurz mal auf.
Sehe ich das also richtig, dass es mit Formbuilder von xform nicht möglich ist einzustellen, dass der Sender auch eine Kopie der Mail erhalten soll?