Skip to content

Instantly share code, notes, and snippets.

@cukabeka
Last active December 11, 2015 12:58
Show Gist options
  • Save cukabeka/4604535 to your computer and use it in GitHub Desktop.
Save cukabeka/4604535 to your computer and use it in GitHub Desktop.
<?php
/**
*=============================================
* REDAXO-Modul: do form!
* Bereich: Eingabe
* Version: 4.5 ajax
* Redaxo Version: 4.3
* Module-id: 364
* Thomas Skerbis / www.klxm.de
* Hinweise:
*
* Formulargenerator für PHPMAILER
* Required Addons: TinyMCE, PHPMAiler
*
* Datum: 12.01.2013
* Ursprung: Formular-Generator Redaxo 3.2 Demo, do form! 2
* Typ: Modifikation / Erweiterung
*=============================================
*/
// EINGABE EINSTELLUNGEN
// zur Vereinfachung der Eingabemaske
// Erweiterte Funktionen in der Moduleingabe freischalten
// Es sind evtl. Anpassungen im ausgabe-Code erforderlich
$uploadon=false; // UPLOADS AKTIVIEREN true oder false
$sessionson=false; // SESSIONS AKTIVIEREN true oder false
$bccon=true; // BCC AKTIVIEREN true oder false
$sslon=false; // SSL-Umschalter - Muss in der Ausgabe angepasst werden
// Version
$doformversion="4.5";
// Definition des Standard-Formulars
$defaultdata="
text|Nachname|1|||name
text|Vorname|1|||checkfield
text|Firma |
text|Straße|
text|PLZ|1|||plz
text|Ort|1|||
text|Telefon||||tel
text|Telefax||||tel
text|E-Mail|1|||sender
textarea|Ihre Nachricht: |1|
info|Geben Sie bitte nichmal Ihren Ihren Vornamen ein
text|Vorname|1|||check
";
/**
* Convert a shorthand byte value from a PHP configuration directive to an integer value
* @param string $value
* @return int
*/
if (!function_exists('convertBytes')) {
function convertBytes( $value ) {
if ( is_numeric( $value ) ) {
return $value;
} else {
$value = trim ($value);
$value_length = strlen( $value );
$qty = substr( $value, 0, $value_length - 1 );
$unit = strtolower( substr( $value, $value_length - 1 ) );
switch ( $unit ) {
case 'g':
$qty *= 1024;
case 'm':
$qty *= 1024;
case 'k':
$qty *= 1024;
}
return $qty;
}
}
}
?>
<style type="text/css">
<!--
.formgenheadline {
color: #FFF;
background-color: #003366;
display: block;
padding-left: 10px;
font-family: Tahoma, Geneva, sans-serif;
padding-top: 2px;
padding-right: 2px;
padding-bottom: 2px;
font-weight: bold;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 3px;
border-left-width: 1px;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
font-style: normal;
}
.doform {
background-color: #DFE7DF;
padding-left: 1.2em;
padding-bottom: 1.2em;
}
.doleft {
float: left;
width: 240px;
background-color: #FFF;
margin-right: 1.2em;
margin-top: 1.2em;
padding: 0.5em;
border: 1px solid #999;
}
.doform .inp100 {
background-color: #eeeeee;
border: 1px solid #CCC;
}
.formbg {
background-color:#E0E2E8;
}
.formgenerror {
color: #FFFFFF;
background-color: #990000;
border: 6px dashed #FFCC00;
margin: 5px;
padding: 5px;
}
.formgen_manual {
color: #333333;
font-size: 1.2em;
background-color: #eeeeee;
}
.formgenconfig {
background-color: #333;
font-family: "Courier New", Courier, monospace;
color: #FFF;
font-size: 1.2em;
width: 95%;
margin-right: 2em;
height: 250px;
border: 1px solid #999;
}
.formgen_sample {
background-color: #FFF;
font-family: "Courier New", Courier, monospace;
color: #333333;
font-size: 1.2em;
width: 95%;
border: 1px solid #999;
}
.formgenalias { color: #999999;
}
#formgenblock {
width: 540px;
padding: 10px;
}
.infotext {color: #999999; font-style: italic; }
.formgentitle {
color: #6E97C1;
background-color: #F1F1F1;
display: block;
padding-left: 10px;
font-family: Geneva, Arial, Helvetica, sans-serif;
padding-top: 2px;
padding-right: 2px;
padding-bottom: 2px;
font-weight: bolder;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 3px;
border-left-width: 1px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-top-color: #CCCCCC;
border-right-color: #333333;
border-bottom-color: #999;
border-left-color: #666666;
font-style: italic;
font-size: 20px;
margin-bottom: 6px;
}
.infotext2 {
color: #37D749;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
}
.myDivs .formgenheadline {
background-color: #990000;
color: #FFF;
}
.formnavi {
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
background-color: #333;
padding-top: 4px;
padding-right: 10px;
padding-bottom: 15px;
padding-left: 10px;
color: #DFE7DF;
}
.formnavi a {
border-bottom-width: 3px;
border-bottom-style: solid;
border-bottom-color: #333;
padding: 0.3em;
color: #FFF;
font-weight: bold;
text-decoration: none;
margin-right: 0.5em;
font-family: Tahoma, Geneva, sans-serif;
margin-left: 0em;
font-size: 1.2em;
}
.doleftdoc {
float: left;
width: 120px;
background-color: #FFF;
margin-right: 1.2em;
margin-top: 1.2em;
padding: 0.5em;
border: 1px solid #999;
}
.doleftdoc2 {
float: left;
width: 420px;
background-color: #FFF;
margin-right: 1.2em;
margin-top: 1.2em;
padding: 0.5em;
border: 1px solid #999;
}
.formnavi a:hover {
border-bottom-width: 3px;
border-bottom-style: solid;
border-bottom-color: #93BB3D;
padding: 0.3em;
color: #FFC;
font-weight: bold;
text-decoration: none;
margin-right: 0.5em;
font-family: Tahoma, Geneva, sans-serif;
margin-left: 0em;
font-size: 1.2em;
}
-->
</style>
<script language="JavaScript" type="text/javascript">
<!--
function doIt(theValue)
{
var divs=document.getElementsByTagName("DIV");
for (var i=0;i<divs.length;i++)
{
if (divs[i].className=="myDivs")
{
divs[i].style.display=(( theValue=="every" || divs[i].id==theValue)?"block":"none");
};
}
}
//-->
</script>
<div class="formnavi"><a href="http://wiki.redaxo.de/index.php?n=R4.DoForm" target="_blank">WIKI</a><a href="#anleitung" id="anzeige" onclick="javascript:document.getElementById('anleitung').style.display = 'block'" >Besipiel-einblenden </a>&nbsp;klxm do form! - Version: <?php echo $doformversion; ?>&nbsp;| <?php echo $REX['LANG']; ?></div>
<br/><?php $phpmcheck= OOAddon::isActivated('phpmailer');
if ($phpmcheck == 1)
{}
else { echo' <div class="formgenerror"> PHPMailer wurde nicht gefunden oder ist nicht aktiviert. <br/> Bitte installieren Sie das ADDON! </div>'; }
?>
<div class="formgenheadline"> Formularfelder</div>
<div class="doform" clas="doform">typ|label|pflicht|default|value/s|validierung <br/>
<textarea name="VALUE[3]" class="formgenconfig"><?php if ("REX_VALUE[3]" == '') {echo $defaultdata;} else {echo "REX_VALUE[3]";} ?>
</textarea>
</div>
<br />
<br />
<div class="formgenheadline">Versandeinstellungen</div>
<div class="doform">
<div class="doleft"><strong>Betreff:</strong><br />
<input type="text" name="VALUE[4]" value="REX_VALUE[4]" class="inp100" />
<br />
<strong>Bezeichnung f&uuml;r Senden-Button:</strong><br />
<input type="text" name="VALUE[7]" value="REX_VALUE[7]" class="inp100" />
<br />
<br />
HTML-MAIL<span class="infotext">
<select name="VALUE[12]">
<option value='ja' <?php if ("REX_VALUE[12]" == 'ja') echo 'selected'; ?>>ja</option>
<option value='nein' <?php if ("REX_VALUE[12]" == 'nein') echo 'selected'; ?>>nein</option >
</select>
<br />
</span><br />
<?php if ($sslon==true) { ?>
SSL-Übertragung<span class="infotext">
<select name="VALUE[18]">
<option value='nein' <?php if ("REX_VALUE[18]" == 'nein') echo 'selected'; ?>>nein</option>
<option value='SSL' <?php if ("REX_VALUE[18]" == 'SSL') echo 'selected'; ?>>Ja</option >
</select>
<br />
</span>(<em>ssldomain muss in der Modul-Ausgabe definiert sein</em>)
<?php } ?>
</div>
<div class="doleft"><strong>Email geht an:</strong><br />
<input type="text" name="VALUE[1]" value="REX_VALUE[1]" class="inp100" />
<span class="formgenalias">(%Mail%)</span><br />
<?php if ($bccon==true) { ?><strong>BCC an:</strong><br />
<input type="text" name="VALUE[11]" value="REX_VALUE[11]" class="inp100" />
<br /><?php } ?>
<br />
<strong>Soll eine Best&auml;tigungs-Email erstellt werden? </strong>
<select name="VALUE[10]" id="mySelect" onChange="doIt(this.value)">
<option value='Nein' <?php if ("REX_VALUE[10]" == 'nein') echo 'selected'; ?>>Nein</option>
<option value='ok' <?php if ("REX_VALUE[10]" == 'ok') echo 'selected'; ?>>Ja</option>
</select>
<br />
<em>(Funktioniert nur wenn Feld : |absendermail definiert ist)</em> </div><div style="clear:both"></div>
</div><?php if ($sessionson==true) { ?>
<div class="formgenheadline">Individuelle Sessionvariable (expert)</div>
<div class="doform">
<div class="doleft"><strong>Bezeichner für Sessionvariable:</strong><br/>
<input type="text" name="VALUE[16]" value="REX_VALUE[16]" class="inp100" />
<br />
<span class="infotext">z.B.: Warenkorb, nur für Session-Variablen erlaubte Zeichen, erntspricht: $_SESSION[&quot;Warenkorb&quot;]</span></div>
<div class="doleft">
<p><em><strong>Info</strong> Die Variable wird nach dem Versenden zurückgesetzt</em></p>
<p>Beispiel: Einsatz per <strong>sessionvar|Warenkorb</strong></p>
</div>
<div style="clear:both">Es handelt sich hierbei um ein hidden field. Eine Ausgabe muss ggf. selbst erstellt werden.</div>
</div>
<?php } ?>
<?php if ($uploadon==true) { ?>
<div class="formgenheadline">Uploads</div>
<div class="doform">
<div class="doleft"></span> <strong>Uploadordner:</strong> (z.B.: files/upload/)<br />
<input type="text" name="VALUE[14]" value="REX_VALUE[14]" class="inp100" />
<br/>
<?php
echo 'Maximale Dateiuploadgr&#246;&#223;e: ' . convertBytes( ini_get( 'upload_max_filesize' ) ) / 1048576 . 'MB';
?>
</div>
<div class="doleft">Die Uploads als Anhang versenden?
<select name="VALUE[15]">
<option value='Nein' <?php if ("REX_VALUE[15]" == 'nein') echo 'selected'; ?>>Nein</option>
<option value='Ja' <?php if ("REX_VALUE[15]" == 'Ja') echo 'selected'; ?>>Ja</option>
</select>
</div>
<div style="clear:both"></div>
</div>
<?php } ?>
<br />
<div id="ok" <?php if ("REX_VALUE[10]" == 'ok'){ echo 'style="display:block;"'; } else echo 'style="display:none;"'; ?> class="myDivs">
<div class="formgenheadline">Best&#228;tigungs-Email an den Absender</div>
<div class="doform">
<div class="doleft">
<strong>Betreff </strong>f&uuml;r die Best&auml;tigungs-Email:<br />
<input type="text" name="VALUE[17]" value="REX_VALUE[17]" class="inp100" />
<strong>Absenderadresse </strong>f&uuml;r die Best&auml;tigungs-Email:<br />
<input type="text" name="VALUE[2]" value="REX_VALUE[2]" class="inp100" />
<span class="formgenalias">(%Absender%)</span><br/>
<strong>Absender-Name:</strong><br />
<input type="text" name="VALUE[8]" value="REX_VALUE[8]" class="inp100" />
</div>
<div class="doleft"><strong>Original-Mail anh&auml;ngen?<br />
<select name="VALUE[13]">
<option value='nein' <?php if ("REX_VALUE[13]" == 'nein') echo 'selected'; ?>>nein</option >
<option value='ja' <?php if ("REX_VALUE[13]" == 'ja') echo 'selected'; ?>>ja</option>
</select>
<br/>
<br/>
Datei anh&#228;ngen: </strong>REX_MEDIA_BUTTON[1] </div>
<div style="clear:both"></div>
</div>
<div class="formgenheadline">E-Mail-Best&#228;tigungstext</div>
<div class="doform"><textarea name="VALUE[5]" class="formgenconfig" style="width:100%;height:80px;">REX_VALUE[5]</textarea>
<span class="formgen_sample1"><strong>Platzhalter für Bestätigungstext:</strong> <br />
%Betreff%, %Datum% , %Zeit%, %Absender%, %Mail% </span>, <br />
%Besuchermail% (wird durch sender gesetzt)<br/>
</div>
</div>
<br/>
<div class="formgenheadline"><strong>Danksagung</strong> (wird auf der Website angezeigt)</div>
<?php
$tinycheck= OOAddon::isActivated('tinymce');
if ($tinycheck == 1) {
?>
<textarea name="VALUE[6]" class="tinyMCEEditor" style="width:555px; height:250px;">REX_VALUE[6]</textarea>
<?php } else {
echo' <div class="formgenerror"> TINYMCE wurde nicht gefunden. <br/> Bitte installieren Sie das ADDON! </div>';
} ?>
<br/>
<div align="right">Bearbeitung: <a href="http://www.klxm.de" target="_blank">Thomas Skerbis - KLXM Crossmedia GmbH</a></div>
<div id="anleitung" style="<?php echo (!isset ($anleitung) || !$anleitung) ? 'display: none' : 'display: block'; ?>">
<div class="formgenheadline">Beispiel-Formular:</div>
<div class="doform">
<textarea name="demo" cols="80" rows="11" class="formgenconfig" style="width:95%;height:200px;">
fieldstart|Kontaktdaten
text|Name|1|||checkfield
text|Name|1|||name
text|Firma
text|Straße
text|PLZ|1|||plz
text|Ort|1
text|Telefon||||tel
text|Telefax||||tel
fieldend|
fieldstart|Weitere Angaben
divstart|cssklasse
radio|Geschlecht|0|Mann;Frau|m;w|
password|Ihr Passwort|1|||alpha
text|E-Mail|1|||sender
divend|
select|Auswahl|1||Birne;Apfel;Kirsche
checkbox|AGB gelesen?
fieldend|
info|Geben Sie bitte diesen Code oder nochmal Ihren Namen ein
text|Sicherheitscode|1|||check
textarea|Ihre Nachricht:|1|
upload|Upload JPG|0||jpg;jpeg;gif||0.5m
</textarea>
<br/>
<br/>
</div>
<div class="formgenheadline">Kurzbeschreibung:</div>
klxm do form! 4 basiert auf den in Redaxo 3.2 mitgelieferten Formular-Generator.<br />
Beim ersten Aufruf erstellt das Modul eine Konfiguration für ein Standard-Kontaktformular. <br/>
Im Beispiel-Formular sehen Sie Möglichkeiten zur Konfiguration. <br/>
<a href="http://wiki.redaxo.de/index.php?n=R4.DoForm" target="_blank">Eine ausf&uuml;hrliche Anleitung finden Sie im REDAXO Wiki.</a><br />
<br />
<strong>Empfehlung:</strong><br />
Wir empfehlen im PHP-Mailer die Einstellung SMTP-AUTH zu verwenden.
<br />
<br />
<br/>
<br />
<br />
<br />
<div class="doform">
<div class="doleftdoc"><strong>Validierung</strong> von Taxtfeldern </div>
<div class="doleftdoc2">
<ul>
<li>alpha (nur engl.Buchstaben) </li>
<li>url (URL)</li>
<li>digit (nur Zahlen)</li>
<li>plz (5 Zahlen)</li>
<li>plz4 (4 Zahlen)</li>
<li>tel (mindestens 6 Zahlen)</li>
<li>name prüft Namen und z.B. übliche Firmenbezeichnungen</li>
<li>mail (pr&uuml;ft eingegebene Email-Adressen) </li>
<li>sender (diese Adresse wird als Absendermail eingesetzt und gepr&uuml;ft)</li>
<li>check - Prüfen der Spamschutzeingabe (captchapic oder checkfield) <br/>
entspricht sonst der Validierung: name</li>
<li>checkfield (legt ein Vergleichsfeld fest das als Spamschutzcode gilt)</li>
</ul>
<p>&nbsp;</p>
</div>
<div style="clear:both"></div>
</div>
<br />
<br />
</div>
<?php
/**
*=============================================
* REDAXO-Modul: do form!
* Bereich: Ausgabe
* Version: 4.5
* Module-id: 364
* Thomas Skerbis / www.klxm.de
* Redaxo Version ab: 4.3
*
* Hinweise:
*
* Erforderliche Addons: TinyMCE, PHPMAiler
*
* Datum: 12.01.2013
* Ursprung: Formular-Generator Redaxo 3.2 Demo, do form! 2
* Typ: Modifikation / Erweiterung
*=============================================
*
* VALUE[1] - Email geht an
* VALUE[2] - (Ihre) Absenderadresse fuer die Bestaetigungs-Email
* VALUE[3] - Formularfelder
* VALUE[4] - Betreff
* VALUE[5] - E-Mail-Bestaetigungstext
* VALUE[6] - TinyMCE
* VALUE[7] - Bezeichnung fuer Senden-Button
* VALUE[8] - Absender-Name
* VALUE[9] - frei
* VALUE[10] - Soll eine Bestaetigungs-Email erstellt werden?
* VALUE[11] - BCC an
* VALUE[12] - HTML-EMAIL JA /NEIN
* VALUE[13] - Original anhaengen? JA / NEIN
* VALUE[14] - Uploadordner
* VALUE[15] - Upload als Mail versenden
* VALUE[16] - Bezeichner der Session-Variable
* VALUE[17] - Bestätigungsbetreff
* VALUE[18] - SSL-Schalter (JA/NEIN)
* VALUE[19] - frei
* VALUE[20] - frei
* REX_FILE[1] - Dateianhang an Absender (z.B. AGB)
*
*/
// =============================================
// Beim Classic-Mode entspricht der Absender der E-Mail dem Empfänger
// Bei false wird der Absender des PHPMailers verwendet
$fromclassic = true; // Absender = Empfänger?
$ftitel='<strong>Nachricht</strong>: REX_VALUE[4]'; // Überschrift / Betreff der HTML-E-Mail
$ssldomain = 'domain.tld'; // Domain ohne https://, kein Slash am Ende
$style = 'class="formerror"'; // Stildefinition Fehler
$formname = "doform"."REX_SLICE_ID"; // Formular ID generiert aus SLICE ID
$formdatum = date("d.m.Y"); // Datum
$formzeit = date("H:i"); // Uhrzeit
$formreq='&nbsp;<strong class="formreq">*</strong>'; // Markierung von Pflichtfeldern
$formbcc="REX_VALUE[11]"; // BCC-Feld
$sendfullmail="REX_VALUE[13]"; //Original in Bestätigungsmail
// Welche Felder sollen nicht in der E-Mail übertragen werden?
$ignore = array('captcha','sicherheitscode','ilink', 'ilink2', 'divstart', 'divend', 'fieldend', 'info','exlink');
// Bezeichnung des Sende-Buttons
$submitlabel = "REX_VALUE[7]";
// =============================================
// KONFIGURATION
// =============================================
// Captcha-Konfiguration / OPTIONAL
// Die folgende Variable muss angepasst werden:
// =============================================
// ID zum Captcha-Artikel der das Captcha-Template nutzt
$captchaID = 000;
$captchasource = htmlspecialchars(rex_getUrl($captchaID));
//==============================================
// Alternative: Externe Einbindung eines Captchas
// $captchasource="/redaxo/captcha/captcha.php";
// =============================================
// siehe: http://www.rexvideo.de/module/formulargenerator.html
// =============================================
// Pfad zum Dateianhang bei Bestätigungs-Email
// =============================================
$redaxofile = $REX['HTDOCS_PATH']."files/"."REX_FILE[1]";
/**
* Soll der komplette Upload-Pfad mit der Mail verschickt werden oder
* nur der Dateiname?
* Beispiel: files/upload/Foo.jpg
* default: false
*
* @param bool true - kompletter Pfad wird geschickt, false - nur der Dateiname
*/
$uploadpfad_mit_mailschicken = true;
$absendermail="";
$linkclass="";
/* --------------------------- SSL-Schalter ------------ */
if ('REX_VALUE[18]'=="SSL")
{
// SSL - SCHALTER
if ($REX['REDAXO']!=1) {
if($_SERVER['SERVER_PORT'] != 443)
{
$datei = $_SERVER['REQUEST_URI'];
// Domain anpassen
$ziel = $ssldomain.$datei;
header("Location: $ziel");
exit();
}
}
}
// Fehlermeldungen:
// =============================================
// Sprache 0 -- Hier Deutsch
if ($REX['CUR_CLANG'] == 0)
{
#### Achtung! Hinter <<< EOD darf kein Leerzeichen stehen.
$fError= <<<EOD
Leider konnten wir Ihre Anfrage nicht bearbeiten. <br /> Bitte überprüfen Sie Ihre Eingaben.
EOD;
$frel="<br />Sie haben versucht die Seite neu zu laden. Ihre Nachricht wurde bereits verschickt";
}
// Sprache 1 -- z.B. Englisch
if ($REX['CUR_CLANG'] == 1)
{
#### Achtung! Hinter <<< EOD darf kein Leerzeichen stehen.
$fError= <<<EOD
Please correct your Input
EOD;
$frel="<br />You have tried to reload this page. Your message has already been sent.";
}
$charset = $REX['LANG'];
if ($charset == 'en_gb' ) {
$acharset = '';
$mcharset='iso-8859-1';
}
else {
$acharset = '';
$mcharset='iso-8859-2';
}
if ($charset == 'de_de_utf8' or $charset == 'en_gb_utf8' ) {
$acharset = 'accept-charset="UTF-8"';
$mcharset='UTF-8';
}
// HTML-Vorlage
// HEADER
$doformhtml='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset='.$mcharset.'" />
<title>NACHRICHTEN-ÜBERMITTLUNG</title>
<style type="text/css">
<!--
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 1em;
color: #003366;
line-height: 1em;
background-color: #F9F9F9;
}
h1 { color: #003366;
background-color: #FFFFCC;
display: block;
clear: both;
font-size: 1.2em;
}
h2 { color: #003366;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: #999999;
display: block;
clear: both;
font-size: 0.9em;
}
.dfheader {
border-top-width: 6px;
border-top-style: solid;
border-top-color: #999999;
color: #FFFFFF;
background-color: #003366;;
padding-top: 0px;
padding-right: 2px;
padding-bottom: 0px;
padding-left: 2px;
text-align: center;
margin: 0px;
}
.slabel {
width: 230px;
display: block;
float: left;
margin-right: 5px;
color: #666666;
font-weight: normal;
}
br {
clear: both;
display: block;
}
-->
</style>
</head>
<body>
<div class="dfheader">
'.$ftitel.'
</div>
';
// footer
$doformhtmlfooter='<hr size="1" /><br />
<br /></body></html>';
$nonhtmlfooter="\n----------------------------------\n
";
// =============================================
// Ende der allgemeinen Konfiguration
//=============================================
$cupload=0;
$fcounter = 1;
$xcounter = 1;
/**
* prueft ob die Mindestanzahl an Argumenten mit der Vorgabe uebereinstimmt
*
* Achtung! Die Mindestanzahl an Elementen muss mit Array-Zaehlweise angegeben werden.
* D.h., die Zahlung beginnt inkl. der Null.
*
* @param int $mustHave - Mindestanzahl an Elementen
* @param array $elements - Elementa-Array
* @param string $formelement - Name des Elementes in dem der Check ausgefuehrt wird
* @return string
*/
if (!function_exists('doform_checkElements')) {
function doform_checkElements($mustHave, $elements, $formelement) {
global $REX;
// Diese Information ist nur im Backend zu sehen
if ($REX['REDAXO']) {
// $formelement darf nicht leer sein
if ($formelement == '') { return 'Der Formelementename wurde nicht erkannt. Siehe Funktion "doform_checkElements"<br />'; }
// $mustHave muss mind. 2 sein
if ((int) $mustHave < 2) { return $formelement.': Die Vorgabezahl darf nicht kleiner als 2 sein!<br />'; }
// $elements muss ein Array sein
if (!is_array($elements)) { return $formelement.': Das ubergebene Element ist kein Array.<br />'; }
$anzahlElemente = count ($elements);
if ($mustHave > count ($elements)) {
$fehlermeldung = 'Es wurden nicht genuegend Argumente fuer das Formualarfeld "'.$formelement.'" angegeben.<br />';
$fehlermeldung .= 'Angegeben wurden '.$anzahlElemente.' Argumente, benoetigt werden aber mind. '.$mustHave.' Argumente!<br />'."\n";
return $fehlermeldung;
} else {
return '';
}
} else {
return '';
}
}
}
/**
* Gibt eine Fehlermeldung vom Upload zurueck
*
* @param $error_code
* @see http://de.php.net/manual/en/features.file-upload.errors.php
* @return string Fehlermeldung
*/
if (!function_exists('file_upload_error_message')) {
function file_upload_error_message($error_code) {
switch ($error_code) {
case UPLOAD_ERR_INI_SIZE: // Fehler Nr.: 1
return 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
case UPLOAD_ERR_FORM_SIZE: // Fehler Nr.: 2
return 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
case UPLOAD_ERR_PARTIAL: // Fehler Nr.: 3
return 'The uploaded file was only partially uploaded';
case UPLOAD_ERR_NO_FILE: // Fehler Nr.: 4
return 'No file was uploaded';
case UPLOAD_ERR_NO_TMP_DIR: // Fehler Nr.: 6 (Introduced in PHP 4.3.10 and PHP 5.0.3.)
return 'Missing a temporary folder';
case UPLOAD_ERR_CANT_WRITE: // Fehler Nr.: 7 (Introduced in PHP 5.1.0.)
return 'Failed to write file to disk';
case UPLOAD_ERR_EXTENSION: // Fehler Nr.: 8 (Introduced in PHP 5.2.0.)
return 'File upload stopped by extension';
default:
return 'Unknown upload error';
}
}
}
/**
* Convert a shorthand byte value from a PHP configuration directive to an integer value
* @param string $value
* @return int
*/
if (!function_exists('convertBytes')) {
function convertBytes( $value ) {
if ( is_numeric( $value ) ) {
return $value;
} else {
$value = trim ($value);
$value_length = strlen($value);
$qty = substr( $value, 0, $value_length - 1 );
$unit = strtolower( substr( $value, $value_length - 1 ) );
switch ( $unit ) {
case 'g':
$qty *= 1024;
case 'm':
$qty *= 1024;
case 'k':
$qty *= 1024;
case 'b':
$qty = $qty;
}
return $qty;
}
}
}
#### Achtung! Hinter <<< End darf kein Leerzeichen stehen.
$rex_form_data = <<<End
REX_HTML_VALUE[3]
End;
#### Achtung! Hinter <<< End darf kein Leerzeichen stehen.
$mailbody = <<<End
End;
$responsemail = <<<End
REX_HTML_VALUE[5]
End;
if (isset($_POST['eingabe'])) { $eingabe = $_POST['eingabe']; }
$FORM = rex_post('FORM', 'array');
$formoutput = array();
$warning = array();
$warning_set = 0; // wird zu 1, wenn eine Fehler auftritt
$form_elements = array();
$form_elements = explode("\n", $rex_form_data);
$responsemail = str_replace("%Datum%", $formdatum, $responsemail);
$responsemail = str_replace("%Zeit%", $formzeit, $responsemail);
//Adresse die als Absenderadresse der Bestätigungs-Email eingegeben wurde
$responsemail = str_replace("%Absender%", "REX_VALUE[2]", $responsemail);
//Empfänderadresse die im Modul angegeben wurde
$responsemail = str_replace("%Mail%", "REX_VALUE[1]", $responsemail);
$responsemail = str_replace("%Betreff%", "REX_VALUE[4]", $responsemail);
$token = md5(uniqid('token'));
$formcaptcha = null;
$dfreload = null;
$mailbodyhtml = '';
$form_enctype = '';
/**
* Enthaelt die Dateiangaben der uebertragenen Datei und den Namen der Zieldatei
* Form: array ( targetFile => tempFile )
*
* @var array
*/
$upload_File = array();
for ($i=0; $i<count($form_elements); $i++) {
// ueberspringe Leerzeilen
if (trim($form_elements[$i]) == '') {
continue;
}
$element = explode("|", $form_elements[$i]);
$AFE[$i] = $element;
$formfield = 0;
if (!isset ($FORM[$formname]['el_'.$i])) { $FORM[$formname]['el_'.$i] = ''; }
if (!isset ($FORM[$formname][$formname.'send'])) { $FORM[$formname][$formname.'send'] = ''; }
if (!isset ($warning["el_".$i])) { $warning["el_".$i] = NULL; }
switch ($element[0]) {
case "svar":
case "sessionvar":
$formoutput[] = '
<input type="hidden" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.$_SESSION["REX_VALUE[16]"].'" />' ;
break;
// Gestaltungselemente
case "headline":
$formoutput[] = '<div class="formheadline">'.$element[1].'<input type="hidden" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.$element[1].'"/></div>';
break;
case "info":
$formoutput[] = '<div class="formhinweis">'.$element[1].'</div>';
break;
case "HTML":
$formoutput[] = '<div class="formhtml">'.$element[1].'</div>';
break;
case "exlink":
$formoutput[] = '<div class="formlink"><a href="'.$element[1].'" onclick="window.open(this.href); return false;">'.$element[2].'</a></div>';
break;
case "ilink":
case "ilink2":
if ($element[3]!="")
{
$linkclass='class="'.$element[3].'" ';
}
else
{
$linkclass="";
}
$formoutput[] = '<div class="formlink"><a '.$linkclass.'href="'.rex_getUrl($element[1]).$element[2].'">'.$element[4].'</a></div>';
break;
case "trennelement":
$formoutput[] = '<div class="formtrenn"><hr/></div>';
break;
case "fieldstart":
$formoutput[] = '<fieldset class="fieldset"><legend>'.$element[1].'</legend><input type="hidden" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.$element[1].'"/>';
$formfield = "on";
break;
case "fieldend":
$formoutput[] = '</fieldset>';
$formfield = "on";
break;
case "divstart":
$str = $element[1];
$first = $str[0];
$id = str_replace("#",'',$str);
if (!isset($element[2])) $element[2] = ''; // Zeile eingefügt - ### MW ###
if ($first == '#') {
$formoutput[] = '<div id="'.$id.'">'.$element[2];
}
else {
$formoutput[] = '<div class="'.$element[1].'">'.$element[2];
}
$formfield = "on";
break;
case "divend":
$formoutput[] = '</div>';
$formfield = "on";
break;
// Formular-Felder
case "checkbox":
$req='';
$cchecked="";
if (isset($element[2]) && $element[2] == 1) { $req = $formreq; }
if (!isset($element[3])) $element[3] = ''; // Zeile eingefügt - ### MW ###
if ((trim($FORM[$formname]["el_".$i] ) == "X" ) || ($FORM[$formname]["el_".$i] == '' && !$FORM[$formname][$formname."send"] && $element[3] == 1)){
$cchecked = ' checked="checked"';
$hidden="";
}
else {
$cchecked = '';
#$hidden = '<div><input type="hidden" name="FORM['.$formname.'][el_'.$i.']" value="0" /></div>';
$hidden="";
}
if (isset($element[2]) && $element[2] == 1 && $cchecked=="" && $FORM[$formname][$formname."send"] ) {
$warning["el_".$i] = $style;
$e = 1;
$warning_set = 1;
}
$formoutput[] =
$hidden.'
<span class="checkspan"><label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].$req.'</label>
<input type="checkbox" title="'.$element[1].'" class="formcheck" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'"value="X" '.$cchecked.' /></span><br/>';
break;
// Radio-Buttons von Markus Feustel 07.01.2008
case "radio":
$req='';
if (isset($element[2]) && $element[2] == 1) {$req = $formreq;}
if ((trim($FORM[$formname]["el_".$i] ) == 1 ) || ($FORM[$formname]["el_".$i] == '' && !$FORM[$formname][$formname."send"] && $element[3] == 1)) {
$checked = ' checked="checked"';
$hidden = '';
}
else {
$checked = "";
$hidden = '<input type="hidden" name="FORM['.$formname.'][el_'.$i.']" value="0" />';
}
if (trim ($FORM[$formname]["el_".$i]) == '' && trim ($element[5]) != '') {
$FORM[$formname]["el_".$i] = trim($element[5]);
}
if (isset($element[2]) && $element[2] == 1 && trim($FORM[$formname]["el_".$i]) == "" && $FORM[$formname][$formname."send"] == 1) {
$warning["el_".$i] = $style;
$warning_set = 1;
$e=1;
}
$ro = explode(';',trim($element[3]));
$val = explode(';',trim($element[4]));
$formlabel[$i] = '<label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].$req.'</label>';
// Inspiriert durch grizou
$fo = $formlabel[$i].'<div id="el_'.$i.'" >'."\n";
for ($xi=0; $xi < count ($ro); $xi++) {
if ($val[$xi] == trim($FORM[$formname]["el_".$i] )){ $checked = ' checked="checked"'; } else { $checked = ''; }
$fo .= '<br/><input type="radio" class="formradio" name="FORM['.$formname.'][el_'.$i.']" id="r'.$i.'_Rel_'.$xi.'" value="'.$val[$xi].'" '.$checked.' />'."\n";
$fo .= '<label class="formradio" '.$warning["el_".$i].'for="r'.$i.'_Rel_'.$xi.'" >'.$ro[$xi].'</label>'."\n";
}
$fo .='</div><br />'."\n";
$formoutput[$i] = $fo.'<br/>';
break;
// Ende Radio-Buttons
case "hidden":
case "password":
case "text":
$req='';
if (isset($element[2]) && $element[2] == 1) { $req = $formreq; }
// 14.08.2009: GET-VARIABLENABFRAGE von Tito übernommen,
// siehe http://forum.redaxo.de/ftopic11635-30.html
if ($FORM[$formname]["el_".$i] == '' && !$FORM[$formname][$formname.'send'] && isset($element[3])) { // " && isset($element[3])" eingefügt - ### MW ###
if (strchr($element[3],'GET_')) {
$get = explode('GET_',$element[3]);
$element[3] = rex_get($get[1]);
}
$FORM[$formname]["el_".$i] = trim($element[3]);
}
if (isset($element[2]) && $element[2] == 1 && (trim($FORM[$formname]["el_".$i]) == "" || trim($FORM[$formname]["el_".$i]) == trim($element[3])) && $FORM[$formname][$formname."send"] == 1) {
$warning["el_".$i] = $style;
$warning_set = 1;
}
// ### Validierung
// falls Pflichtelement oder Inhalt da und Formular abgeschickt
if (!isset($element[5])) $element[5] = ''; // Zeile eingefügt - ### MW ###
if ( (isset($element[2]) && $element[2] == 1) && (trim($FORM[$formname]["el_".$i]) != "") && ($FORM[$formname][$formname."send"] == 1 ) || (trim($element[5])!="" && $FORM[$formname][$formname."send"] == 1 && $element[2] != 1 && trim($FORM[$formname]["el_".$i]) != "") ) {
// checken, ob und welches Validierungsmodell gewaehlt
if (trim($element[5]) != '') {
// falls Validierung gefordert
$valid_ok = TRUE;
$inhalt = trim($FORM[$formname]["el_".$i]);
switch (trim($element[5])) {
case "mail":
if (!preg_match("#^.+@(.+\.)+([a-zA-Z]{2,6})$#",$inhalt)) $valid_ok = FALSE;
break;
case "sender":
case "absendermail":
if (!preg_match("#^.+@(.+\.)+([a-zA-Z]{2,6})$#",$inhalt)) {$valid_ok = FALSE;} else {$absendermail = $inhalt;}
break;
#Telefonnummern mindestens 6 Zahlen
case "tel":
case "telefon":
if (preg_match("#^[ \(\)\+0-9\/-]{6,}+$#",$inhalt)) {break;} else {$valid_ok = FALSE; } // Neu: 04.04.2011
break;
#Postleitzahlen
case "plz":
if (preg_match ("/^[0-9]{5}$/",$inhalt)) {break;} else {$valid_ok = FALSE; }
break;
case "plz4":
if (preg_match ("/^[0-9]{4}$/",$inhalt)) {break;} else {$valid_ok = FALSE; }
break;
#Namens-Prüfung bestimmte Zeichen sind nicht erlaubt 05.01.2010
case "name":
case "fname":
case "sname":
case "letters":
if ( preg_match("/^[^;,@%:._#+*'!\"§$\/()=?]+$/i", $inhalt) ) {break;} else {$valid_ok = FALSE; }
break;
#Nur Zahlen
case "digit":
if (!ctype_digit($inhalt)) $valid_ok = FALSE;
break;
#Nur Buchstaben
case "alpha":
if (!ctype_alpha($inhalt)) $valid_ok = FALSE;
break;
# URL
case "url":
$inhalt=trim($inhalt);
if (preg_match("#^(http|https|ftp)+(://www.)+([a-z0-9-_.]{2,}\.[a-z]{2,4})$#i",$inhalt)) {break;} else {$valid_ok = FALSE; }
break;
# legt das zu per check zu prüfende Feld fest
case "checkfield":
if (preg_match("/[\w\p{L}]/u",$inhalt)) {$_SESSION["formcheck"]=$inhalt; break;} else {$valid_ok = FALSE; }
break;
// Captchaabfrage
case "check":
case "captcha":
if(isset($_SESSION['token'])) {
if($_SESSION['token'] == $_POST['token']) {
$formcaptcha = 'off';
$valid_ok = FALSE;
$dfreload =$frel;
break;
}
}
if ($_SESSION["kcode"] == $inhalt) { $valid_ok = TRUE; break; }
if ($_SESSION["formcheck"]== $inhalt ) {
$valid_ok = TRUE; break;
} else {
$formcaptcha = 'off';
$valid_ok = FALSE; break;
}
} // switch (trim($element[5]))
if (!$valid_ok) {
$warning["el_".$i] = $style;
$warning_set = 1;
}
} // falls Validierung gefordert
}
// ### /Validierung
if($element[0]=="hidden")
{
$inptype="hidden";
}
if($element[0]=="password")
{
$inptype="password";
}
else
{
$inptype="text";
}
if ($formcaptcha == 'off')
{
if ($inptype=='hidden')
{
$formoutput[] = '
<input type="'.$inptype.'" class="formtext" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="" />';
}
else
{
$formoutput[] = '
<label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].$req.'</label>
<input type="'.$inptype.'" class="formtext" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="" /><br />
';
}
$formcaptcha = 'on';
} else {
$formoutput[] = '
<label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].$req.'</label>
<input type="'.$inptype.'" class="formtext" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.htmlspecialchars(stripslashes($FORM[$formname]["el_".$i])).'" /><br />
';
}
break;
case "textarea":
$req='';
$fehlerImFormaufbau = doform_checkElements(2, $element, 'textarea');
if (isset($element[2]) && $element[2] == 1) {$req = $formreq;}
if (isset($element[3]) && $FORM[$formname]["el_".$i] == '' && !$FORM[$formname][$formname."send"]){
$FORM[$formname]["el_".$i] = $element[3];
}
if (isset($element[2]) && isset($element[3]) && $element[2] == 1 &&
(trim($FORM[$formname]["el_".$i]) == "" || trim($FORM[$formname]["el_".$i]) == trim($element[3])) &&
$FORM[$formname][$formname."send"] == 1) {
$warning["el_".$i] = $style;
$warning_set = 1;
}
$formoutput[] = $fehlerImFormaufbau.'
<label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].$req.'</label>
<textarea class="formtextfield" cols="40" rows="10" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'">'.htmlspecialchars(stripslashes($FORM[$formname]["el_".$i])).'</textarea><br />';
break;
case "select":
$req='';
if (isset($element[2]) && $element[2] == 1) { $req = $formreq; }
$SEL = new select();
$SEL->set_name("FORM[".$formname."][el_".$i."]");
$SEL->set_id("el_".$i);
$SEL->set_size(1);
$SEL->set_style(' class="formselect"');
if ($FORM[$formname]["el_".$i] == "" && !$FORM[$formname][$formname."send"]){
$SEL->set_selected($element[3]); } else { $SEL->set_selected($FORM[$formname]["el_".$i]);
}
foreach (explode(";", trim($element[4])) as $v) {
$SEL->add_option( $v, $v);
}
if (isset($element[2]) && $element[2] == 1 && trim($FORM[$formname]["el_".$i] )== "" && $FORM[$formname][$formname."send"] == 1) {
$warning["el_".$i] = $style;
$warning_set = 1;
}
$formoutput[] = '
<label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].$req.'</label>
'.$SEL->out().'<br />';
break;
case "captchapic":
case "spamschutz":
//Session-Variable prüfen:
if ( !isset($_SESSION["kcode"]) ) {
session_start();
$_SESSION["kcode"]=''; // "$_SESSION["kcode"];" durch "$_SESSION["kcode"] = '';" ersetzt - ### MW ###
}
if ($REX['REDAXO'] == 1) { $formoutput[] = 'im Backend wird das Captchabild nicht angezeigt'; }
else {
$formoutput[] = '<img src="'.$captchasource.'" class="formcaptcha" alt="Security-Code" title="Security-Code" />'.$element[1].'<br/><br/>';
}
break;
case "date":
case "xdate":
$req=($element[2] == 1)?$formreq:'';
// TAGE
$AFE[$i.'_d'] = $element;
$form_element_ids[md5(strtolower(trim($element[1])).'_d')] = 'el_'.$i.'_d';
$SEL = new select();
$SEL->set_name("FORM[".$formname."][el_".$i."_d]");
$SEL->set_id("el_".$i.'_d');
$SEL->set_size(1);
$SEL->set_style(' class="date_day"');
if ($FORM[$formname]["el_".$i.'_d'] == "" && !$FORM[$formname][$formname."send"]){
$SEL->set_selected($element[3]); } else { $SEL->set_selected($FORM[$formname]["el_".$i.'_d']);
}
$SEL->add_option( '', '');
foreach (range(1,31) as $v){
$v = sprintf('%02d',$v);
$SEL->add_option( $v, $v);
}
if ($element[2] == 1 && trim($FORM[$formname]["el_".$i.'_d'] )== "" && $FORM[$formname][$formname."send"] == 1){
$warning["el_".$i.'_d'] = $style;
$warning_set = 1;
}
if ($element[2] == 1 && trim($FORM[$formname]["el_".$i.'_m'] )== "" && $FORM[$formname][$formname."send"] == 1){
$warning["el_".$i.'_d'] = $style;
$warning_set = 1;
}
if ($element[2] == 1 && trim($FORM[$formname]["el_".$i.'_y'] )== "" && $FORM[$formname][$formname."send"] == 1){
$warning["el_".$i.'_d'] = $style;
$warning_set = 1;
}
$formoutput[] = '
<label '.$warning["el_".$i.'_d'].' for="el_'.$i.'_d" >'.$element[1].$req.'</label>
'.$SEL->out();
// MONATE
$AFE[$i.'_m'] = $element;
$form_element_ids[md5(strtolower(trim($element[1])).'_m')] = 'el_'.$i.'_m';
$SEL = new select();
$SEL->set_name("FORM[".$formname."][el_".$i."_m]");
$SEL->set_id("el_".$i.'_m');
$SEL->set_size(1);
$SEL->set_style(' class="date_month"');
if ($FORM[$formname]["el_".$i.'_m'] == "" && !$FORM[$formname][$formname."send"]){
$SEL->set_selected($element[3]); } else { $SEL->set_selected($FORM[$formname]["el_".$i.'_m']);
}
$SEL->add_option( '', '');
foreach (range(1,12) as $v){
$v = sprintf('%02d',$v);
$SEL->add_option( $v, $v);
}
$formoutput[] = '
'.$SEL->out();
// JAHRE
$AFE[$i.'_y'] = $element;
$form_element_ids[md5(strtolower(trim($element[1])).'_y')] = 'el_'.$i.'_y';
$SEL = new select();
$SEL->set_name("FORM[".$formname."][el_".$i."_y]");
$SEL->set_id("el_".$i.'_y');
$SEL->set_size(1);
$SEL->set_style(' class="date_year"');
if ($FORM[$formname]["el_".$i.'_y'] == "" && !$FORM[$formname][$formname."send"]){
$SEL->set_selected($element[3]); } else { $SEL->set_selected($FORM[$formname]["el_".$i.'_y']);
}
$SEL->add_option( '', '');
if ($element[0]=="date")
{
$year = intval(date('Y'));
if ($element[4]=="")
{
$iival="5";
}
else
{
$iival=$element[4];
}
for($v=$year;$v<($year+$iival);$v++) {
$SEL->add_option( $v, $v);
}
}
else
{
$year = $element[3];
if ($year=="")
{
$year="1900";
}
$today=intval(date('Y'));
for($v=$year;$v<($today);$v++) {
$SEL->add_option( $v, $v);
}
}
$formoutput[] = '
'.$SEL->out().'<br />';
break;
case "zeit":
case "time":
$req=($element[2] == 1)?$formreq:'';
// STUNDEN
$AFE[$i.'_h'] = $element;
$form_element_ids[md5(strtolower(trim($element[1])).'_h')] = 'el_'.$i.'_h';
$SEL = new select();
$SEL->set_name("FORM[".$formname."][el_".$i."_h]");
$SEL->set_id("el_".$i.'_h');
$SEL->set_size(1);
$SEL->set_style(' class="time_hours"');
if ($FORM[$formname]["el_".$i.'_h'] == "" && !$FORM[$formname][$formname."send"]){
$SEL->set_selected($element[3]); } else { $SEL->set_selected($FORM[$formname]["el_".$i.'_h']);
}
$SEL->add_option( '', '');
foreach (range(0,23) as $v){
$v = sprintf('%02d',$v);
$SEL->add_option( $v, $v);
}
if ($element[2] == 1 && trim($FORM[$formname]["el_".$i.'_h'] )== "" && $FORM[$formname][$formname."send"] == 1){
$warning["el_".$i.'_h'] = $style;
$warning_set = 1;
}
if ($element[2] == 1 && trim($FORM[$formname]["el_".$i.'_n'] )== "" && $FORM[$formname][$formname."send"] == 1){
$warning["el_".$i.'_h'] = $style;
$warning_set = 1;
}
$formoutput[] = '
<label '.$warning["el_".$i.'_h'].' for="el_'.$i.'_h" >'.$element[1].$req.'</label>
'.$SEL->out();
// MINUTEN
$AFE[$i.'_n'] = $element;
$form_element_ids[md5(strtolower(trim($element[1])).'_n')] = 'el_'.$i.'_n';
$SEL = new select();
$SEL->set_name("FORM[".$formname."][el_".$i."_n]");
$SEL->set_id("el_".$i.'_n');
$SEL->set_size(1);
$SEL->set_style(' class="time_nutes"');
if ($FORM[$formname]["el_".$i.'_n'] == "" && !$FORM[$formname][$formname."send"]){
$SEL->set_selected($element[3]); } else { $SEL->set_selected($FORM[$formname]["el_".$i.'_n']);
}
$SEL->add_option( '', '');
foreach (range(0,59,15) as $v){
$v = sprintf('%02d',$v);
$SEL->add_option( $v, $v);
}
$formoutput[] = '
'.$SEL->out().'<br />';
break;
//############
// ENDE DATUMSABFRAGE
// Upload
case "upload":
$fehlerImFormaufbau = doform_checkElements(5, $element, 'Upload');
$req = '';
$error_message = '';
// wird true, wenn keine Datei uebergeben wurde
$upload_keineDateivorhanden = false;
if (isset($element[2]) && $element[2] == 1) {
$req = $formreq;
}
/*if ($FORM[$formname]['el_'.$i] == '' && !$FORM[$formname][$formname.'send']) {
$FORM[$formname]["el_".$i] = trim($element[3]);
} */
if (isset($element[6]) && trim ($element[6]) != '')
{
$upload_MaxSice = trim ($element[6]);
} else {
$upload_MaxSice = 0;
}
//DBO('before: '.$upload_MaxSice);
/*
* Hier muesste noch eine Pruefung auf Dateiendungen rein.
* Wie können diese Dateiendungen pro Uploadfeld einzeln uebergeben werden?
* Antwort:
* Wie bei einem Select-Feld (-:
*
*/
if (!empty($_FILES)) {
//DBO($_FILES);
// Dieses IF-Konstrukt kann man bestimmt noch kuerzer schreiben!?
if ($_FILES['FORM']['error'][$formname]['el_'.$i] === UPLOAD_ERR_OK) {
// upload ok
} elseif ($req == '' && $_FILES['FORM']['error'][$formname]['el_'.$i] === UPLOAD_ERR_NO_FILE) {
// upload ok aber keine Datei vorhanden
$upload_keineDateivorhanden = true;
} else {
$error_message .= file_upload_error_message($_FILES['FORM']['error'][$formname]['el_'.$i]);
$warning["el_".$i] = $style;
$warning_set = 1;
}
// verarbeite die Dateiuebergabe nur, wenn auch ein Datei vorhanden ist und
// kein weiterer Fehler auftrat
// alexplus: http://forum.redaxo.de/ftopic11635-150.html
if (!$upload_keineDateivorhanden && $error_message == '') {
$targetPath = "REX_VALUE[14]";
$tempFile = $_FILES['FORM']['tmp_name'][$formname]['el_'.$i];
$preTarget = time()."_".$_FILES['FORM']['name'][$formname]['el_'.$i];
// Leerzeichen ersetzen durch _
$targetFile = str_replace(" ","_", $preTarget );
$targetPathFile = str_replace('//','/',$targetPath) . $targetFile;
// Multimail
$cupload++;
$domailfile[$cupload]=$targetFile;
/**
* Beispielaufbau:
* array (
* 0 => 'jpg',
* 1 => 'jpeg',
* 2 => 'gif',
* )
* @var upload_Extensions
*/
$upload_Extensions = array();
$upload_Extensions_errormessage = '';
$zaehler_element = count(explode(";", trim($element[4])));
$zaehler_element_z = 0;
foreach (explode(";", trim($element[4])) as $v) {
if ($v != '') {
$upload_Extensions[] = $v;
$upload_Extensions_errormessage .= '.'.$v;
}
$zaehler_element_z++;
if ($zaehler_element_z < $zaehler_element) {
$upload_Extensions_errormessage .= ' | ';
}
}
$fileParts = pathinfo($_FILES['FORM']['name'][$formname]['el_'.$i]);
if (isset ($fileParts['extension']) and $fileParts['extension'] != '' and in_array ($fileParts['extension'], $upload_Extensions))
{
$upload_File[$targetPathFile] = $tempFile;
$FORM[$formname]['el_'.$i] = ($uploadpfad_mit_mailschicken) ? $targetPathFile : $targetFile;
} else {
// Warnung ueber nicht erlaubte Datei ausgeben
$warning["el_".$i] = $style;
$warning_set = 1;
$error_message .= '<div class="forminfo">Die Datei kann nicht hochgeladen werden. Evtl. liegt es an einem falschen Dateityp. Erlaubt ist hier nur: '.$upload_Extensions_errormessage.'</div>';
}
if ($_FILES['FORM']['size'][$formname]['el_'.$i] < convertBytes($upload_MaxSice))
{
// alles ok
} else {
// Warnung ueber zu grosse Datei ausgeben
$warning["el_".$i] = $style;
$warning_set = 1;
$error_message .= 'Die Datei "'.htmlspecialchars($targetFile).'" ist zu gro&#223;!<br />' ;
$error_message .= 'Erlaubt sind maximal '. convertBytes($upload_MaxSice) / 1048576 . ' MB';
}
} // if (!$upload_keineDateivorhanden && $error_message == '')
} // if (!empty($_FILES))
if (isset ($error_message) and $error_message != '') {
$error_message = '<p>'. $error_message .'</p>';
} else {
$error_message = '';
}
$form_tmp = '';
$form_tmp .= $fehlerImFormaufbau;
$form_tmp .= $error_message;
$form_tmp .= "\n".'<label '.$warning["el_".$i].' for="FORM['.$formname.'][el_'.$i.']" >'.$element[1].$req.'</label>'."\n";
$form_tmp .= '<input type="file" name="FORM['.$formname.'][el_'.$i.']" id="FORM['.$formname.'][el_'.$i.']" /><br/>'."\n";
$formoutput[] = $form_tmp;
$form_enctype = 'enctype="multipart/form-data"';
break;
}
}
// BEGIN :: Uploadverarbeitung
$uploadpfad = "REX_VALUE[14]";
// pruefe Pfad auf Vorhandensein und Schreibrechte
// Wenn Pfad nicht vorhanden, ignoriere die weitere Verarbeitung.
if (isset ($uploadpfad) and $uploadpfad != '' and $REX['REDAXO']) {
// ... dum die dum ... Pfadpruefung erfolgt hier ...
// beginnt der Uploadpfad nicht mit einem Slash, muss es sich um einen lokalen
// Ordner handeln der vom Backend aus erweitert werden muss
if (substr ($uploadpfad, 0, 1) != '/') {
$uploadpfad_tmp = '../'.$uploadpfad;
} else {
$uploadpfad_tmp = $uploadpfad;
}
if (rex_is_writable($uploadpfad_tmp) !== true) {
echo rex_warning('Der Uploadpfad "'.$uploadpfad_tmp.'" ist nicht beschreibbar.<br />
Pruefe die Schreibrechte oder lasse die Angaben zum Uploadordner leer, wenn kein Uploadfeld genutzt wird.');
}
}
// =================AUSGABE-KOPF============================
$out = '
<form class="formgen doajax" id="'.$formname.'" action="'.rex_getUrl(REX_ARTICLE_ID).'" '.$acharset.' method="post" '.$form_enctype.'>
<div><input type="hidden" name="FORM['.$formname.']['.$formname.'send]" value="1" /><input type="hidden" name="ctype" value="ctype" /></div>
<input type="hidden" name="token" value="'.$token.'" />';
// =================Formular-generieren=====================
foreach ($formoutput as $v){
if ($formfield != "on") //wenn keine DIVs oder Fieldsets verwendet werden
{
$out .= '<div class="formblock">'.$v.'</div>';
}
else
{
$out .= $v;
}
}
// =================AUSGABE-FUSS============================
$out .= '
<div class="formblock">
<input type="submit" name="FORM['.$formname.']['.$formname.'submit]" value="'.$submitlabel.'" class="formsubmit" />
</div>
</form>
';
// =================SEND MAIL===============================
if (isset($FORM[$formname][$formname.'send']) && $FORM[$formname][$formname.'send'] == 1 && !$warning_set ) {
// BEGIN :: Uploadverarbeitung
//$uploadpfad = "REX_VALUE[14]";
// pruefe Pfad auf Vorhandensein und Schreibrechte
// Wenn Pfad nicht vorhanden, ignoriere die weitere Verarbeitung.
if (isset ($uploadpfad) and $uploadpfad != '' and count ($upload_File) > 0) {
// ... dum die dum ... Pfadpruefung erfolgt hier ...
foreach ($upload_File as $targetFile => $tempFile) {
move_uploaded_file ($tempFile, $targetFile);
}
} // if (isset ($uploadpfad) and $uploadpfad != '')
// END :: Uploadverarbeitung
$_SESSION['token'] = $_POST['token'];
unset($_SESSION["kcode"]); //Captcha-Variable zurücksetzen
unset($_SESSION["formcheck"]); // Vergleichsfeld festlegen
// Selbsdefinierte Sessionvariable zurücksetzen
if ("REX_VALUE[16]" !="")
{
unset($_SESSION["REX_VALUE[16]"]);
}
$mail = new rex_mailer(); // Mailer initialisieren
$mail->AddAddress("REX_VALUE[1]"); // Empfänger
if ($fromclassic==true)
{
$mail->Sender = "REX_VALUE[1]"; //Absenderadresse als Return-Path
$mail->From = "REX_VALUE[1]"; //Absenderadresse
$mail->FromName = "REX_VALUE[1]"; // Abdendername entspricht Empfängeradresse
}
if ( $absendermail != '')
{
$mail->AddReplyTo($absendermail); // Antwort an Absender per Reply-To - Besucher
}
if ($formbcc != '')
{
$mail->AddBCC($formbcc);
}
$mail->Subject = "REX_VALUE[4]"; // Betreff
$mail->CharSet = $mcharset; // Zeichensatz
//Ausgabe der einzelnen E-Mail-Zeilen
//dbo($FORM[$formname]);
foreach ($FORM[$formname] as $k => $v)
{
$matches = array();
if(preg_match('~el_[0-9]+_(d|m|y|h|n)~',$k,$matches)) {
switch($matches[1]) {
case 'd': // TAG
$mailbodyhtml.= '<span class="slabel">'.$fcounter.'. '.$AFE[preg_replace("#el_#","",$k)][1].": </span>".stripslashes($v);
$mailbody .= $xcounter.'. '.$AFE[preg_replace("#el_#","",$k)][1].":".stripslashes($v);
$fcounter++;$xcounter++;
break;
case 'm': // MONAT
$mailbodyhtml.= '.'.stripslashes($v);
$mailbody .= '.'.stripslashes($v);
break;
case 'y': // JAHR
$mailbodyhtml.= '.'.stripslashes($v).'<br />';
$mailbody .= '.'.stripslashes($v)."\n";
break;
case 'h': // STUNDEN
$mailbodyhtml.= '<span class="slabel">'.$fcounter.'. '.$AFE[preg_replace('#_.*#','',preg_replace("#el_#","",$k))][1].": </span>".stripslashes($v);
$mailbody .= $xcounter.'. '.$AFE[preg_replace("#el_#","",$k)][1].":".stripslashes($v);
break;
case 'n': // MINUTEN
$mailbodyhtml.= ':'.stripslashes($v).'<br />';
$mailbody .= ':'.stripslashes($v)."\n";
$fcounter++;$xcounter++;
break;
}
}
else {
// HTML-AUSGABE und Plaintext erstellen
$key = preg_replace('#el_#','',$k);
if ($k != $formname.'submit' && $k != $formname.'send' &&
(!isset ($AFE[$key][5]) || $AFE[$key][5] != 'captcha') &&
stripslashes($v) != '' && isset ($AFE[$key][1]) &&
!in_array($AFE[$key][0], $ignore))
{
$v = strip_tags($v);
switch ($AFE[$key][0])
{
case "fieldstart":
$mailbodyhtml.='<h1>'.stripslashes($v).'</h1>';
$mailbody.="\n".'***'.stripslashes($v)."\n".'---------------------------------------------------------'."\n";
break;
case "headline":
$mailbodyhtml.='<h2>'.stripslashes($v).'</h2>';
$mailbody.="\n".'---'.stripslashes($v)."\n".'---------------------------------------------------------'."\n";
break;
default:
$mailbodyhtml.= '<span class="slabel">'.$fcounter.'. '.$AFE[$key][1].": </span>".stripslashes($v).'<br />';
$mailbody .= $xcounter.'. '.$AFE[$key][1].": ".stripslashes($v)."\n";
$fcounter++;
$xcounter++;
}
}
}
}
// HTML-EMAIL JA /NEIN
if ("REX_VALUE[12]" == 'ja')
{
$mail->IsHTML(true);
$mail->Body = $doformhtml.nl2br($mailbodyhtml).$doformhtmlfooter;
$mail->AltBody = $mailbody.$nonhtmlfooter;
}
else
{
$mail->Body = $mailbody.$nonhtmlfooter;
}
// Dateianhänge versenden. 01.04.2011
if (is_array($domailfile)and "REX_VALUE[15]"=="Ja" and $cupload>"0")
{
foreach ($domailfile as $dfile)
{
$mail->AddAttachment("REX_VALUE[14]".$dfile);
}
}
if(!function_exists('doppelversand')){
function doppelversand(){
}
$mail->Send(); // Versenden an Empfänger
}
// =================MAIL-RESPONDER============================
$responder = "REX_VALUE[10]";
if (isset($FORM[$formname][$formname.'send']) && $FORM[$formname][$formname.'send'] == 1 &&
$responder == 'ok' && !$warning_set && isset($absendermail))
{
$mail = new rex_mailer();
$mail->AddAddress($absendermail);
$mail->Sender = "REX_VALUE[2]";
$mail->From = "REX_VALUE[2]";
$mail->FromName = "REX_VALUE[8]";
$mail->Subject = "REX_VALUE[17]";
$mail->CharSet = $mcharset;
#### Datei (z.B. AGB) versenden ####
if ("REX_FILE[1]" != '') {
$mail->AddAttachment($redaxofile);
}
if ($sendfullmail != 'ja')
{
$mail->Body = $responsemail.$nonhtmlfooter;
}
else
{
if ("REX_VALUE[12]" == 'ja')
{
$mail->IsHTML(true);
$mail->Body = $doformhtml.nl2br($responsemail).'<hr/>'.nl2br($mailbodyhtml).$doformhtmlfooter;
$mail->AltBody = $mailbody.$nonhtmlfooter;
}
else
{
$mail->Body = $responsemail."\n-----------------------------------------------\n".$mailbody.$nonhtmlfooter;
}
}
/*
Doppelversand verhindern
Doppelversand verhindern, siehe: http://forum.redaxo.de/ftopic11974.html
*/
if(!function_exists('doppelversand2'))
{
function doppelversand2() {}
$mail->Send(); // Versenden an Absender
}
}
// =================MAIL-RESPONDER-ENDE=========================
?>
<div id="form-module-thanks">REX_HTML_VALUE[6]</div>
<?php
$noform = 1;
}
else {
$noform = 0;
}
if ($warning_set) {
echo '<div class="forminfo">'; echo($fError.$dfreload ); echo '</div>';
print $out;
} else {
if ($noform != 1) {
print $out;
}
}
?>
/*
REDAXO-Modul: doForm! 2.x - 4.4.1
Beschreibung: CSS-DEMO
Bereich: CSS
Für: do form! 2.x bis 4.4.1
Stand: 20.04.2009
Version: 1.0
--------------------------------------------------------------------------
HINWEISE:
--------------------------------------------------------------------------
!! Das CSS berücksichtigt nicht alle möglichen Felder
!! Farben nicht 1 zu 1 übernehmen
!! ist ja nicht wirklich hübsch
Weitere Infos zu den CSS hier:
http://wiki.redaxo.de/index.php?n=R4.DoForm
-------------------------------------------------------
*/
/* Formular Definition */
/*//////////////////////////////////////////////////////////////////////////////*
/* Div das das Formular umschließt */
.formgen {
font-size: 1em;
padding-right: 10px;
padding-left: 10px;
}
/* Was passiert wenn auf das Label geklickt wird? */
label,
select,
input[type=checkbox],
input[type=radio],
input[type=button],
input[type=submit]
{
cursor : pointer;
}
.formgen form
{
line-height : 120%;
}
/*
Wie sehen die einzelnen Blöcke aus?
Jedes Feld wird von einem DIV umschlossen, das hier definiert werden kann
*/
.formgen .formblock
{
margin-bottom: 15px;
margin-top: 10px;
padding-top: 3px;
padding-bottom: 3px;
padding-right: 2px;
padding-left: 5px;
}
.forminfo
{
width: 360px;
margin-bottom: 15px;
background-color: #FFCC33;
padding-top: 3px;
padding-bottom: 3px;
padding-right: 2px;
padding-left: 5px;
font-weight: bold;
border: 5px dashed #990000;
}
/*
Verhalten von br-Tags
*/
.formgen br
{
clear : both;
}
/*
--------- FORMULAR-OBJEKTE ------------
*/
/* Mehrzeiliges Eingabefeld */
.formgen .formtextfield
{
width: 400px;
height: 200px;
margin-left: 4px;
border: 1px solid #003366;
background-color: #DFEEDD;
}
/* Textfeld */
.formgen .formtext
{
width: 250px;
margin-left: 4px;
padding-bottom: 4px;
font-size: 1em;
background-color: #E9EBF3;
border: 1px solid #003366;
}
.formgen input:focus, .formgen input:hover,
.formgen select:focus, .formgen select:hover,
.formgen textarea:focus, .formgen textarea:hover {
border-bottom-color: #000000;
background-color: #FFCC66;
}
/* Label */
.formgen label {
width: 120px;
clear: left;
float: left;
height: 20px;
font-weight: bold;
color: #003399;
}
/* Aussehen der Select-Ausgabe */
.formgen .formselect
{
width: 200px;
background-color: #33FF33;
margin-left: 4px;
color: #000000;
}
/* Sende-Button */
.formgen .formsubmit
{
width: 100%;
text-align: center;
background-color: #006699;
border: 1px solid #FFCC33;
float: right;
color: #FFFFFF;
}
/* Fieldsetbeschriftung */
.formgen legend {
color: #FFFFFF;
background-color: #990000;
width: 150px;
}
.formgen .fieldset {
margin-bottom: 10px;
}
/* -------------- AUSGABEN / Fehlermeldungen --------*/
/* Markierung der Labels bei Fehler */
.formgen .formerror {
border-bottom-width: 1px;
color: #990000;
}
.formgen .formcaptcha
{
border: 2px solid #990000;
vertical-align: top;
float: left;
margin-right: 10px;
}
.formgen .formreq {
color: #006633;
}
.formgen .formheadline {
color: #993300;
background-color: #FFF7EA;
padding-top: 4px;
padding-bottom: 4px;
margin-top: 5px;
margin-bottom: 5px;
font-style: italic;
}
/*//////////////////////////////////////////////////////////////////////////////*
/* Ende der Formulardefinition */
do form! ist ein Generator für E-Mail-Formulare. Die E-Mails können wahlweise im HTML oder Text-Format gesendet werden. Eine automatische Bestätigungs-Email an den Absender steht als Option zur Verfügung. Die Danke-Seite kann mittels WYSIWYG-Editor (TinyMCE) gestaltet werden. Es werden verschiedene Spamschutz-Lösungen unterstützt.
Wiki: http://www.redaxo.org/de/wiki/index.php?n=R4.DoForm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment