Advertisement
Guest User

xForm Beispiel PHP E-Mail Bestellformular

a guest
Feb 19th, 2016
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.35 KB | None | 0 0
  1. <?php
  2.  
  3. // aus xForm generierter Formular-Code
  4. $xform = new rex_xform();
  5. $xform->setObjectparams('form_skin', 'default');
  6. $xform->setObjectparams('form_showformafterupdate', 0);
  7. $xform->setObjectparams('real_field_names', true);
  8.  
  9. $xform->setValueField('fieldset', array("fieldset_product","Produkt"));
  10. $xform->setValueField('select_sql', array("production","Produkt","SELECT id, name from rex_xf_productions ORDER BY name","REQUEST","","0","","0","1"));
  11. $xform->setValueField('checkbox', array("order_type","Ansichtskopie","nein,ja","0"));
  12. $xform->setValueField('radio', array("customer_type","Lizenz","Privatperson,Schule,Medienzentrum,Kreis-Online-Lizenz","","Privatperson"));
  13. $xform->setValueField('fieldset', array("fieldset_customer","Kunden-Daten"));
  14. $xform->setValueField('text', array("name","Name"));
  15. $xform->setValueField('text', array("phone","Telefon"));
  16. $xform->setValueField('text', array("mail","E-Mail-Adresse"));
  17. $xform->setValueField('textarea', array("message","Ihre Nachricht"));
  18. $xform->setValueField('text', array("street","Straße / Hausnummer"));
  19. $xform->setValueField('text', array("zip","PLZ","","","zip"));
  20. $xform->setValueField('text', array("city","Ort"));
  21. $xform->setValueField('fieldset', array("fieldset_order"));
  22. $xform->setValueField('select', array("channel","Wie wurden Sie auf uns aufmerksam?","Werbung,Google,Newsletter,Medienzentren,Empfehlung,Keine Angabe=0","","0","0","1"));
  23. $xform->setValueField('checkbox', array("agb","Ich habe die AGB gelesen und akzeptiert","nein,ja","0"));
  24. $xform->setValueField('checkbox', array("newsletter","Newsletter","nein,ja","1"));
  25. $xform->setValueField('datestamp', array("datestamp","mysql","","1"));
  26.  
  27. $xform->setValidateField('empty', array("name","Bitte geben Sie im Feld \"Name\" einen Ansprechpartner an."));
  28. $xform->setValidateField('empty', array("mail","Bitte geben Sie im Feld \"E-Mail\" eine E-Mail-Adresse an."));
  29. $xform->setValidateField('email', array("mail","Bitte geben Sie im Feld \"E-Mail\" eine korrekte E-Mail-Adresse an und prüfen Sie sie auf Tippfehler."));
  30.  
  31. // Angepasste Parameter
  32.  
  33. $xform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
  34. $xform->setActionField('createdb', array('rex_xf_order'));
  35. $xform->setActionField('db', array('rex_xf_order'));
  36. $xform->setObjectparams("form_action", seo42::getFullUrl($REX['ARTICLE_ID'], '', 'submit=1&production='. rex_request("production", "int")));
  37.  
  38. // Wenn das Formular abgesendet wurde
  39. if (($form = $xform->getForm()) == '') {
  40.  
  41.    $form_values = $xform->objparams['value_pool']['email'];
  42.    
  43.    // E-Mail-Template aus xForm-Tabelle holen
  44.    $sql = rex_sql::factory();
  45.    $sql->debugsql = 0;
  46.    $email_template = $sql->getArray('SELECT * FROM rex_xform_email_template WHERE name = "order" LIMIT 1');
  47.    $email_template = $email_template[0];
  48.    
  49.    $productions = $sql->getArray('SELECT * FROM rex_xf_productions WHERE id = '.(int) $form_values['production'].'');
  50.  
  51.    // Platzhalter im Template befüllen
  52.    $placeholders['###production###']     = $productions[0]['name'];
  53.    $placeholders['###order_type###']     = $form_values['order_type'];
  54.    $placeholders['###customer_type###'] = $form_values['customer_type'];
  55.    
  56.    $placeholders['###name###'] = $form_values['name'];
  57.    $placeholders['###phone###'] = $form_values['phone'];
  58.    $placeholders['###mail###'] = $form_values['mail'];
  59.    $placeholders['###message###'] = rex_a79_textile(str_replace('<br />','',htmlspecialchars_decode($form_values['message'],ENT_QUOTES)));
  60.    
  61.    $placeholders['###street###'] = $form_values['street'];
  62.    $placeholders['###zip###'] = $form_values['zip'];
  63.    $placeholders['###city###'] = $form_values['city'];
  64.    
  65.    $placeholders['###channel###'] = $form_values['channel'];
  66.    $placeholders['###agb###'] = $form_values['agb'];
  67.    $placeholders['###newsletter###'] = $form_values['newsletter'];
  68.    $placeholders['###datestamp###'] = date("d.m.Y - H:i", strtotime($form_values['datestamp']));
  69.    
  70.    $search = array_keys($placeholders);
  71.    $replace = array_values($placeholders);
  72.    
  73.    $email_template['body_html'] = str_replace($search, $replace, $email_template['body_html']);
  74.  
  75.  
  76.    // rex_mailer für den Mailversand vorbereiten
  77.    $mail = new rex_mailer();
  78.  
  79.    if($formData['email']) {
  80.       $mail->AddAddress($form_values['email'], $form_values['name']);
  81.    }
  82.    $mail->AddAddress($email_template['mail_from']);
  83.    $mail->WordWrap = 80;
  84.    $mail->From = $email_template['mail_from'];
  85.    $mail->FromName = $email_template['mail_from_name'];
  86.    $mail->Sender =  $email_template['mail_from'];
  87.    $mail->Subject =  $email_template['subject'];
  88.    $mail->Body = $email_template['body_html'];
  89.    $mail->AltBody = strip_tags($email_template['body_html']);
  90.  
  91.    // Mail senden und bei Erfolg eine Nachricht im Browser ausgeben.
  92.  
  93.    if ($mail->Send()) {
  94.       // Wer bei der Modul-Eingabe kein MarkItUp verwendet, kann hier auch einen hardcodierten Text in $msg einsetzen.
  95.       $msg = rex_a79_textile(str_replace('<br />','',htmlspecialchars_decode('REX_VALUE[1]',ENT_QUOTES)));
  96.    } else {
  97.       // s.o.
  98.       $msg = rex_a79_textile(str_replace('<br />','',htmlspecialchars_decode('REX_VALUE[2]',ENT_QUOTES)));
  99.    }
  100.    
  101.    echo '<div id="xform_info">' . $msg . '</div>';
  102.  
  103. } else {
  104.    // Wenn ($form = $xform->getForm()) == '') false ist, dann wurde kein Formular abgesendet. Stattdessen soll das Formular ausgegeben werden.
  105.    echo $form;
  106. }
  107.  
  108. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement