updates for V1.0.0

Dieser Commit ist enthalten in:
o.pinke 2025-07-28 09:44:27 +02:00
Ursprung 381994a727
Commit cb6d0140a7
3 geänderte Dateien mit 162 neuen und 515 gelöschten Zeilen

Datei anzeigen

@ -1,3 +1,10 @@
# module-cl-contactform
# Module CL Contact Form
contactform module based on w3concepts.form.v1
contact form module based on module w3concepts.form.v1.
I'm still working on new documentation. Meanwhile, you may use the documentation from original module.
See https://forum.contenido.org/viewtopic.php?f=110&t=5066&hilit=w3concepts.form.v1
If you want to use captcha, you need to download securimage 4.0.2 and install it in folder cms/securimage
Download https://github.com/dapphp/securimage/releases/tag/4.0.2
Be aware that this version may not be compatible to PHP 8.x. I am working on a compatible version.

Datei anzeigen

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<modulepackage><package_guid/>
<package_data/>
<module><name>CL Contactform</name>
<module><name>CL Contact Form</name>
<description>&lt;Ihre Modulbeschreibung&gt;
Autor:
@ -9,8 +9,9 @@ Version:</description>
<type>Content</type>
<input>?&gt;&lt;?php
/**
* Module cl-contactform input
* Module cl-contact_form input
*
* @package module/cl_contact_form
* @author Ortwin Pinke &lt;info@php-backoffice.de&gt;
*
* based on w3concepts.form.v1 from Andreas Kummer (2004-08-20)
@ -18,47 +19,67 @@ Version:</description>
*/
cInclude(&#039;frontend&#039;, &#039;includes/class.input.helper.php&#039;);
$oCfgTable = new UI_Config_Table();
$uiConfigTable = new UI_Config_Table();
$oField = new cHTMLTextbox(&quot;CMS_VAR[0]&quot;, &quot;CMS_VALUE[0]&quot;);
$oField-&gt;setWidth(30);
$oCfgTable-&gt;setCell(0, 0, mi18n(&quot;Zieladresse (alias@mydomain.com):&quot;));
$oCfgTable-&gt;setCell(0, 1, $oField-&gt;render());
$htmlField = new cHTMLSelectElement(&quot;CMS_VAR[10]&quot;, 200);
$htmlField-&gt;autoFill([
&#039;null&#039; =&gt; mi18n(&quot;Bitte wählen&quot;),
&#039;mail&#039; =&gt; mi18n(&quot;Mail (PHP)&quot;),
&#039;sendmail&#039; =&gt; mi18n(&quot;Sendmail&quot;),
&#039;smtp&#039; =&gt; mi18n(&quot;SMTP&quot;),
&#039;smtp_auth&#039; =&gt; mi18n(&quot;SMTP mit oAuth&quot;)
]);
$htmlField-&gt;setDefault(&quot;CMS_VALUE[10]&quot;);
$uiConfigTable-&gt;setRowCell(0, mi18n(&quot;Versand mit:&quot;));
$uiConfigTable-&gt;setRowCell(1, $htmlField-&gt;render());
$uiConfigTable-&gt;nextRow();
$oField = new cHTMLTextbox(&quot;CMS_VAR[1]&quot;, &quot;CMS_VALUE[1]&quot;);
$oField-&gt;setWidth(30);
$oCfgTable-&gt;setCell(1, 0, mi18n(&quot;Betreff:&quot;));
$oCfgTable-&gt;setCell(1, 1, $oField-&gt;render());
$htmlField = new cHTMLTextbox(&quot;CMS_VAR[0]&quot;, &quot;CMS_VALUE[0]&quot;);
$htmlField-&gt;setWidth(30);
$uiConfigTable-&gt;setRowCell(0, mi18n(&quot;Zieladresse (alias@mydomain.com):&quot;));
$uiConfigTable-&gt;setRowCell(1, $htmlField-&gt;render());
$uiConfigTable-&gt;nextRow();
$oField = new cHTMLTextbox(&quot;CMS_VAR[2]&quot;, &quot;CMS_VALUE[2]&quot;);
$oField-&gt;setWidth(30);
$oCfgTable-&gt;setCell(2, 0, mi18n(&quot;Antwortadresse (alias@mydomain.com):&quot;));
$oCfgTable-&gt;setCell(2, 1, $oField-&gt;render());
$htmlField = new cHTMLTextbox(&quot;CMS_VAR[1]&quot;, &quot;CMS_VALUE[1]&quot;);
$htmlField-&gt;setWidth(30);
$uiConfigTable-&gt;setRowCell(0, mi18n(&quot;Betreff:&quot;));
$uiConfigTable-&gt;setRowCell(1, $htmlField-&gt;render());
$uiConfigTable-&gt;nextRow();
$oField = new cHTMLTextbox(&quot;CMS_VAR[3]&quot;, &quot;CMS_VALUE[3]&quot;);
$oField-&gt;setWidth(30);
$oCfgTable-&gt;setCell(3, 0, mi18n(&quot;Emailname (z.B. Vorname Name):&quot;));
$oCfgTable-&gt;setCell(3, 1, $oField-&gt;render());
$htmlField = new cHTMLTextbox(&quot;CMS_VAR[2]&quot;, &quot;CMS_VALUE[2]&quot;);
$htmlField-&gt;setWidth(30);
$uiConfigTable-&gt;setRowCell(0, mi18n(&quot;Antwortadresse (alias@mydomain.com):&quot;));
$uiConfigTable-&gt;setRowCell(1, $htmlField-&gt;render());
$uiConfigTable-&gt;nextRow();
$oField = new cHTMLTextbox(&quot;CMS_VAR[4]&quot;, &quot;CMS_VALUE[4]&quot;);
$oField-&gt;setWidth(8);
$oCfgTable-&gt;setCell(4, 0, mi18n(&quot;Hintergrundfarbe bei Fehlern (z.B. red):&quot;));
$oCfgTable-&gt;setCell(4, 1, $oField-&gt;render());
$oCfgTable-&gt;render(true);
$htmlField = new cHTMLTextbox(&quot;CMS_VAR[3]&quot;, &quot;CMS_VALUE[3]&quot;);
$htmlField-&gt;setWidth(30);
$uiConfigTable-&gt;setRowCell(0, mi18n(&quot;Emailname (z.B. Vorname Name):&quot;));
$uiConfigTable-&gt;setRowCell(1, $htmlField-&gt;render());
$uiConfigTable-&gt;nextRow();
$htmlField = new cHTMLTextbox(&quot;CMS_VAR[4]&quot;, &quot;CMS_VALUE[4]&quot;);
$htmlField-&gt;setWidth(8);
$uiConfigTable-&gt;setRowCell(0, mi18n(&quot;Hintergrundfarbe bei Fehlern (z.B. red):&quot;));
$uiConfigTable-&gt;setRowCell(1, $htmlField-&gt;render());
$uiConfigTable-&gt;nextRow();
$uiConfigTable-&gt;render(true);
?&gt;&lt;?php</input>
<output>&lt;?php
global $sess;
/**
* Module cl-contactform output
* Module cl-contact_form output
*
* @package module/cl_contact_form
* @author Ortwin Pinke &lt;info@php-backoffice.de&gt;
*
* based on w3concepts.form.v1 from Andreas Kummer (2004-08-20)
* modified and adapted to Contenido 4.8 under PHP 5.x by Murat Purc (2013-08-24)
*/
use PHPMailer\PHPMailer\PHPMailer;
$sFrontEndPath = cRegistry::getClientConfig(cRegistry::getClientId())[&#039;path&#039;][&#039;frontend&#039;] . &#039;securimage&#039; . DIRECTORY_SEPARATOR;
$captchaInstalled = false;
if (is_readable($sFrontEndPath)) {
@ -68,14 +89,15 @@ if (is_readable($sFrontEndPath)) {
$captchaInstalled = true;
}
class w3form
class FormGenerator
{
public $emailAdresses;
private array $email = [&#039;adresses&#039; =&gt; &#039;&#039;, &#039;from&#039; =&gt; [&#039;name&#039; =&gt; &#039;&#039;, &#039;email&#039; =&gt; &#039;&#039;], &#039;message&#039; =&gt; &#039;&#039;, &#039;subject&#039; =&gt; &#039;&#039;];
private array $unraveled = [];
private array $form = [&#039;form&#039; =&gt; &#039;&#039;, &#039;answer&#039; =&gt; &#039;&#039;, &#039;colorError&#039; =&gt; &#039;&#039;];
public function __construct(private bool $captchaInstalled)
public function __construct(private bool $captchaInstalled, private cSession $cSession)
{
}
@ -85,18 +107,22 @@ class w3form
$this-&gt;unravel($this-&gt;suppress(&#039;sent&#039;));
$this-&gt;generateEmailMessage();
$oMailer = new PHPMailer();
$oMailer-&gt;CharSet = &quot;UTF-8&quot;;
$oMailer-&gt;AddAddress($this-&gt;email[&#039;adresses&#039;]);
$oMailer-&gt;From = $this-&gt;email[&#039;from&#039;][&#039;email&#039;];
$oMailer-&gt;FromName = $this-&gt;email[&#039;from&#039;][&#039;name&#039;];
$oMailer-&gt;Subject = $this-&gt;email[&#039;subject&#039;];
$oMailer-&gt;Body = $this-&gt;email[&#039;message&#039;];
$phpMailer = new \PHPMailer\PHPMailer\PHPMailer(true);
$phpMailer-&gt;isMail();
$phpMailer-&gt;isHTML(false);
$phpMailer-&gt;CharSet = &quot;UTF-8&quot;;
$phpMailer-&gt;AddAddress($this-&gt;email[&#039;adresses&#039;]);
$phpMailer-&gt;setFrom($this-&gt;email[&#039;from&#039;][&#039;email&#039;], $this-&gt;email[&#039;from&#039;][&#039;name&#039;]);
$phpMailer-&gt;Subject = $this-&gt;email[&#039;subject&#039;];
$phpMailer-&gt;Body = $this-&gt;email[&#039;message&#039;];
if ($oMailer-&gt;send()) {
return true;
try {
if ($phpMailer-&gt;send()) {
return true;
}
} catch (\PHPMailer\PHPMailer\Exception $e) {
echo $e-&gt;errorMessage();
}
return false;
}
@ -113,7 +139,7 @@ class w3form
private function add2Message($key, $value): void
{
if (strlen($key) &gt; 25 or strlen($value) &gt; 54) {
if (strlen($key) &gt; 25 || strlen($value) &gt; 54) {
$this-&gt;email[&#039;message&#039;] .= &quot;$key\n$value\n&quot;;
} else {
$this-&gt;email[&#039;message&#039;] .= $key;
@ -124,18 +150,16 @@ class w3form
private function generateEmailMessage(): void
{
if ($this-&gt;unraveled)
foreach ($this-&gt;unraveled as $key =&gt; $value) {
$this-&gt;add2Message($key, $value);
}
foreach ($this-&gt;unraveled as $key =&gt; $value) {
$this-&gt;add2Message($key, $value);
}
}
private function suppress(): array
private function suppress(...$suppress): array
{
$fields = [];
$suppress = func_get_args();
foreach ($_POST as $key =&gt; $value) {
if (array_search($key, $suppress) === false)
if (!in_array($key, $suppress))
$fields[$key] = $value;
}
return $fields;
@ -180,8 +204,9 @@ class w3form
{
$fields = explode(&#039;###&#039;, $form);
$field = [];
$fieldsCount = count($fields);
for ($i = 1; $i &lt; count($fields); $i = $i + 2) {
for ($i = 1; $i &lt; $fieldsCount; $i += 2) {
$attribute = explode(&#039;;&#039;, trim($fields[$i]));
foreach ($attribute as $attribute) {
$nameValue = explode(&#039;:&#039;, trim($attribute));
@ -198,7 +223,8 @@ class w3form
public function formOutput($sent = false): void
{
echo &#039;&lt;div class=&quot;textItem secondItem&quot;&gt;&lt;form action=&quot;&quot; method=&quot;POST&quot; class=&quot;form-horizontal&quot;&gt;&#039;;
$form_action = $this-&gt;cSession-&gt;url(&#039;front_content.php?idcat=&#039; . cRegistry::getCategoryId() . &#039;&amp;idart=&#039; . cRegistry::getArticleId());
echo &#039;&lt;form action=&quot;&#039; . $form_action . &#039;&quot; method=&quot;post&quot; class=&quot;form-horizontal&quot;&gt;&#039;;
echo &#039;&lt;input type=&quot;hidden&quot; name=&quot;sent&quot; value=&quot;true&quot; /&gt;&#039;;
$form = $this-&gt;form[&#039;form&#039;];
$formData = $this-&gt;formInterpretation($form);
@ -211,45 +237,60 @@ class w3form
echo $item;
}
}
echo &#039;&lt;/form&gt;&lt;/div&gt;&#039;;
echo &#039;&lt;/form&gt;&#039;;
}
public function formField($attribute, $sent): void
{
$style = &#039;&#039;;
$value = &#039;&#039;;
$parameter = &quot;name=\&quot;{$attribute[&#039;name&#039;]}\&quot;&quot;;
if ($sent &amp;&amp; !$this-&gt;formFieldCorrect($attribute))
$style = &quot;style=\&quot;background-color:{$this-&gt;form[&#039;colorError&#039;]};\&quot;&quot;;
switch ($attribute[&#039;type&#039;]) {
case &#039;select&#039;:
case &#039;password&#039;:
case &#039;text&#039;:
if (!empty($attribute[&#039;size&#039;]))
$parameter .= &quot; size=\&quot;{$attribute[&#039;size&#039;]}\&quot;&quot;;
break;
$parameter = empty($attribute[&#039;id&#039;]) ? &#039;id=&quot;&#039; . $attribute[&#039;name&#039;] . &#039;&quot;&#039; : &#039;id=&quot;&#039; . $attribute[&#039;id&#039;] . &#039;&quot;&#039;;
$parameter .= &#039; name=&quot;&#039; . $attribute[&#039;name&#039;] . &#039;&quot;&#039;;
if ($sent &amp;&amp; !$this-&gt;formFieldCorrect($attribute)) {
$style = &#039;style=&quot;background-color: &#039; . $this-&gt;form[&#039;colorError&#039;] . &#039;;&quot;&#039;;
}
if (!empty($attribute[&#039;class&#039;])) {
$parameter .= &#039; class=&quot;&#039; . $attribute[&#039;class&#039;] . &#039;&quot;&#039;;
}
if (!empty($attribute[&#039;placeholder&#039;])) {
$parameter .= &#039; placeholder=&quot;&#039; . $attribute[&#039;placeholder&#039;] . &#039;&quot;&#039;;
}
switch ($attribute[&#039;type&#039;]) {
case &#039;textarea&#039;:
case &#039;text&#039;:
if (!empty($attribute[&#039;size&#039;]))
$parameter .= &quot; size=\&quot;{$attribute[&#039;size&#039;]}\&quot;&quot;;
if (!empty($attribute[&#039;value&#039;]))
if (!empty($attribute[&#039;size&#039;])) {
$parameter .= &#039; size=&quot;&#039; . $attribute[&#039;size&#039;] . &#039;&quot;&#039;;
}
if (!empty($attribute[&#039;value&#039;])) {
$value = $attribute[&#039;value&#039;];
if (!empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]))
}
if (!empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;])) {
$value = $_POST[&quot;{$attribute[&#039;name&#039;]}&quot;];
}
break;
case &#039;select&#039;:
case &#039;password&#039;:
if (!empty($attribute[&#039;size&#039;])) {
$parameter .= &#039; size=&quot;&#039; . $attribute[&#039;size&#039;] . &#039;&quot;&#039;;
}
break;
}
if (isset($attribute[&#039;required&#039;]) || isset($attribute[&#039;mandantory&#039;])) {
$parameter .= &#039; required&#039;;
}
switch ($attribute[&#039;type&#039;]) {
case &#039;captcha&#039;:
if ($this-&gt;captchaInstalled) {
if ($sent) {
$captcha = @$_POST[&#039;ct_captcha&#039;];
$capId = @$_POST[&#039;captcha_id&#039;];
$captcha = @$_POST[&#039;lets_check&#039;];
$securimage = new Securimage();
if (!$securimage-&gt;check($captcha)) {
@ -260,9 +301,10 @@ class w3form
}
// show captcha HTML using Securimage::getCaptchaHtml()
$options = [];
$options[&#039;input_name&#039;] = &#039;ct_captcha&#039;; // change name of input element for form post input_text
$options[&#039;show_audio_button&#039;] = false;
$options[&#039;input_name&#039;] = &#039;lets_check&#039;; // change name of input element for form post input_text
$options[&#039;input_text&#039;] = mi18n(&quot;Zeichen eingeben&quot;);
$options[&#039;input_required&#039;] = false;
$options[&#039;input_required&#039;] = true;
if (!empty($_SESSION[&#039;ctform&#039;][&#039;captcha_error&#039;])) {
// error html to show in captcha output
@ -272,13 +314,13 @@ class w3form
echo &quot;&lt;div id=&#039;captcha_container_1&#039;&gt;\n&quot;;
echo Securimage::getCaptchaHtml($options);
echo &quot;\n&lt;/div&gt;\n&quot;;
echo &#039;&lt;script src=&quot;securimage/securimage.js&quot;&gt;&lt;/script&gt;&#039;;
}
break;
case &#039;text&#039;:
echo &quot;&lt;input type=\&quot;text\&quot; $parameter value=\&quot;$value\&quot; $style /&gt;&quot;;
break;
case &#039;email&#039;:
case &#039;password&#039;:
echo &quot;&lt;input type=\&quot;password\&quot; $parameter value=\&quot;$value\&quot; $style /&gt;&quot;;
echo &#039;&lt;input type=&quot;&#039;.$attribute[&#039;type&#039;].&#039;&quot; &#039;.$parameter.&#039; value=&quot;&#039;.$value.&#039;&quot; &#039;.$style.&#039; /&gt;&#039;;
break;
case &#039;textarea&#039;:
echo &quot;&lt;textarea name=\&quot;{$attribute[&#039;name&#039;]}\&quot; cols=\&quot;&quot;;
@ -289,27 +331,22 @@ class w3form
break;
case &#039;select&#039;:
echo &quot;&lt;select $parameter $style&gt;&quot;;
for ($i = 0; $i &lt; (is_countable($attribute[&#039;option&#039;]) ? count($attribute[&#039;option&#039;]) : 0); $i++) {
$itemsCount = is_countable($attribute[&#039;option&#039;]) ? count($attribute[&#039;option&#039;]) : 0;
for ($i = 0; $i &lt; (is_countable($attribute[&#039;option&#039;]) ? $itemsCount : 0); $i++) {
if (!empty($attribute[&#039;optionvalue&#039;][$i])) {
if (!empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]) &amp;&amp; $_POST[&quot;{$attribute[&#039;name&#039;]}&quot;] == $attribute[&#039;optionvalue&#039;][$i]) {
echo &quot;&lt;option value=\&quot;{$attribute[&#039;optionvalue&#039;][$i]}\&quot; selected=\&quot;selected\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
} elseif (empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]) &amp;&amp; !empty($attribute[&#039;optionvalue&#039;][$i]) &amp;&amp; $attribute[&#039;optionvalue&#039;][$i] == $attribute[&#039;value&#039;]) {
echo &quot;&lt;option value=\&quot;{$attribute[&#039;optionvalue&#039;][$i]}\&quot; selected=\&quot;selected\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
} else {
if (empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]) &amp;&amp; !empty($attribute[&#039;optionvalue&#039;][$i]) &amp;&amp; $attribute[&#039;optionvalue&#039;][$i] == $attribute[&#039;value&#039;]) {
echo &quot;&lt;option value=\&quot;{$attribute[&#039;optionvalue&#039;][$i]}\&quot; selected=\&quot;selected\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
} else {
echo &quot;&lt;option value=\&quot;{$attribute[&#039;optionvalue&#039;][$i]}\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
}
echo &quot;&lt;option value=\&quot;{$attribute[&#039;optionvalue&#039;][$i]}\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
}
} elseif (!empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]) &amp;&amp; $_POST[&quot;{$attribute[&#039;name&#039;]}&quot;] == $attribute[&#039;option&#039;][$i]) {
echo &quot;&lt;option selected=\&quot;selected\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
} elseif (empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]) &amp;&amp; $attribute[&#039;option&#039;][$i] == $attribute[&#039;value&#039;]) {
echo &quot;&lt;option selected=\&quot;selected\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
} else {
if (!empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]) &amp;&amp; $_POST[&quot;{$attribute[&#039;name&#039;]}&quot;] == $attribute[&#039;option&#039;][$i]) {
echo &quot;&lt;option selected=\&quot;selected\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
} else {
if (empty($_POST[&quot;{$attribute[&#039;name&#039;]}&quot;]) &amp;&amp; $attribute[&#039;option&#039;][$i] == $attribute[&#039;value&#039;]) {
echo &quot;&lt;option selected=\&quot;selected\&quot;&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
} else {
echo &quot;&lt;option&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
}
}
echo &quot;&lt;option&gt;{$attribute[&#039;option&#039;][$i]}&lt;/option&gt;\n&quot;;
}
}
echo &quot;&lt;/select&gt;&quot;;
@ -322,12 +359,10 @@ class w3form
} else {
echo &quot;&lt;label $style&gt;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot;/&gt;&lt;/label&gt;&quot;;
}
} elseif (!empty($attribute[&#039;selected&#039;]) &amp;&amp; $attribute[&#039;selected&#039;] == &#039;true&#039;) {
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
if (!empty($attribute[&#039;selected&#039;]) &amp;&amp; $attribute[&#039;selected&#039;] == &#039;true&#039;) {
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot;/&gt;&quot;;
}
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot;/&gt;&quot;;
}
break;
case &#039;radio&#039;:
@ -337,12 +372,10 @@ class w3form
} else {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot; /&gt;&quot;;
}
} elseif (!empty($attribute[&#039;selected&#039;]) &amp;&amp; $attribute[&#039;selected&#039;] == &#039;true&#039;) {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
if (!empty($attribute[&#039;selected&#039;]) &amp;&amp; $attribute[&#039;selected&#039;] == &#039;true&#039;) {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot;/&gt;&quot;;
}
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute[&#039;value&#039;]}\&quot;/&gt;&quot;;
}
break;
}
@ -356,7 +389,7 @@ class w3form
switch ($field[&#039;type&#039;]) {
case &#039;captcha&#039;:
if ($this-&gt;captchaInstalled) {
$captcha = @$_POST[&#039;ct_captcha&#039;];
$captcha = @$_POST[&#039;lets_check&#039;];
$capId = @$_POST[&#039;captcha_id&#039;];
$securimage = new Securimage();
if (!$securimage-&gt;check($captcha, $capId, true)) {
@ -377,7 +410,13 @@ class w3form
private function success(): void
{
if ($this-&gt;sendEmail()) {
echo $this-&gt;form[&#039;answer&#039;];
$answer = trim($this-&gt;form[&#039;answer&#039;]);
if (mb_strlen($answer) &gt; 0) {
echo $this-&gt;form[&#039;answer&#039;];
} else {
echo &#039;&lt;span style=&quot;color:green;&quot;&gt;&#039; . mi18n(&quot;Form has been successfully send.&quot;) . &#039;&lt;/span&gt;&#039;;
}
} else {
echo &#039;&lt;span style=&quot;color:red;&quot;&gt;&#039; . mi18n(&quot;Es ist ein Fehler aufgetreten!&lt;br&gt;Bitte versuchen Sie es später noch einmal.&quot;) . &#039;&lt;/span&gt;&#039;;
}
@ -389,10 +428,8 @@ class w3form
$tmp_name = rtrim($field[&#039;name&#039;], &#039;[0]&#039;);
preg_match(&#039;/\[(\d*)\]/&#039;, $field[&#039;name&#039;], $matches);
$bEmptyPost = false;
$bIsPostArray = false;
$sPostFieldValue = $_POST[$tmp_name];
if (is_array($_POST[$tmp_name])) {
$bIsPostArray == true;
$sPostFieldValue = $_POST[$tmp_name][$matches[1]];
if (empty($_POST[$tmp_name][$matches[1]])) {
$bEmptyPost = true;
@ -465,10 +502,7 @@ class w3form
// längenbereich bei allen typen prüfen
if (!empty($field[&#039;minlength&#039;]) &amp;&amp; strlen($sPostFieldValue) &lt; $field[&#039;minlength&#039;])
return false;
if (!empty($field[&#039;maxlength&#039;]) &amp;&amp; strlen($sPostFieldValue) &gt; $field[&#039;maxlength&#039;])
return false;
return true;
return !(!empty($field[&#039;maxlength&#039;]) &amp;&amp; strlen($sPostFieldValue) &gt; $field[&#039;maxlength&#039;]);
}
public function process(): void
@ -484,23 +518,27 @@ class w3form
}
if (isset($edit) &amp;&amp; $edit) {
echo &quot;&lt;h1&gt;&quot; . mi18n(&quot;Formularkonfiguration&quot;) . &quot;&lt;/h1&gt;&quot;;
echo &quot;&lt;p&gt;&quot; . mi18n(&quot;Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:&quot;) . &quot;&lt;/p&gt;&quot;;
echo &quot;CMS_HTML[0]&quot;;
echo &quot;&lt;p&gt;&quot; . mi18n(&quot;Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:&quot;) . &quot;&lt;/p&gt;&quot;;
echo &quot;CMS_HTML[1]&quot;;
if (cRegistry::isBackendEditMode()) {
echo &quot;&lt;hr&gt;&quot;;
echo &quot;&lt;h3&gt;&quot; . mi18n(&quot;Formularkonfiguration&quot;) . &quot;&lt;/h3&gt;&quot;;
echo &quot;&lt;h4&gt;&quot; . mi18n(&quot;Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:&quot;) . &quot;&lt;/h4&gt;&quot;;
echo &quot;CMS_HTML[100]&quot;;
echo &quot;&lt;h4&gt;&quot; . mi18n(&quot;Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich verschickt wurde:&quot;) . &quot;&lt;/h4&gt;&quot;;
echo &quot;CMS_HTML[101]&quot;;
echo &quot;&lt;hr&gt;&quot;;
} else {
$form = new w3form($captchaInstalled);
$form = new FormGenerator($captchaInstalled, $sess);
$form-&gt;addEmailAdress(&quot;CMS_VALUE[0]&quot;);
$form-&gt;setEmailSubject(&quot;CMS_VALUE[1]&quot;);
$form-&gt;setEmailFrom(&quot;CMS_VALUE[2]&quot;, &quot;CMS_VALUE[3]&quot;);
$form-&gt;setBackgroundError(&quot;CMS_VALUE[4]&quot;);
$form-&gt;setForm(&quot;CMS_HTML[0]&quot;);
$form-&gt;setAnswer(&quot;CMS_HTML[1]&quot;);
$form-&gt;setForm(&quot;CMS_HTML[100]&quot;);
$form-&gt;setAnswer(&quot;CMS_HTML[101]&quot;);
$form-&gt;process();
}
?&gt;</output>
?&gt;
</output>
</module>
<jsfiles/>
<tplfiles/>

Datei anzeigen

@ -1,398 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<modulepackage><package_guid/>
<package_data>a:5:{s:7:"jsfiles";a:0:{}s:8:"tplfiles";a:0:{}s:8:"cssfiles";a:0:{}s:7:"layouts";a:0:{}s:12:"translations";a:0:{}}</package_data>
<module><name>KontaktForm_Valid</name>
<description>&lt;Ihre Modulbeschreibung&gt;
Autor:
Version</description>
<type/>
<input>?&gt;&lt;?php
/**************************************************
* CONTENIDO MODULE - INPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht &amp; kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
* Modified : 24-08-2013, Murat Purc, adapted to newer CONTENIDO (4.8) version
*************************************************/
echo &quot;
&lt;table cellspacing='0' cellpadding='10' border='0'&gt;
&lt;tr&gt;
&lt;td&gt;&quot; . mi18n(&quot;Zieladresse (alias@mydomain.com):&quot;) . &quot;&lt;/td&gt;
&lt;td&gt;&lt;input type='text' name=\&quot;CMS_VAR[0]\&quot; value=\&quot;CMS_VALUE[0]\&quot; size='30' /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot; . mi18n(&quot;Betreff:&quot;) . &quot;&lt;/td&gt;
&lt;td&gt;&lt;input type='text' name=\&quot;CMS_VAR[1]\&quot; value=\&quot;CMS_VALUE[1]\&quot; size='30' /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot; . mi18n(&quot;Antwortadresse (alias@mydomain.com):&quot;) . &quot;&lt;/td&gt;
&lt;td&gt;&lt;input type='text' name=\&quot;CMS_VAR[2]\&quot; value=\&quot;CMS_VALUE[2]\&quot; size='30' /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot; . mi18n(&quot;Emailname (z.B. Vorname Name):&quot;) . &quot;&lt;/td&gt;
&lt;td&gt;&lt;input type='text' name=\&quot;CMS_VAR[3]\&quot; value=\&quot;CMS_VALUE[3]\&quot; size='30' /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot; . mi18n(&quot;Hintergrundfarbe bei Fehlern (z.B. red):&quot;) . &quot;&lt;/td&gt;
&lt;td&gt;&lt;input type='text' name=\&quot;CMS_VAR[4]\&quot; value=\&quot;CMS_VALUE[4]\&quot; size='30' /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&quot;;
</input>
<output>&lt;?php
/**************************************************
* CONTENIDO MODULE - OUTPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht &amp; kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
* Modified : 24-08-2013, Murat Purc, adapted to newer CONTENIDO (4.8) and PHP (5.3/5.4) versions
*************************************************/
class w3form {
private $email;
private $unraveled = array();
private $form;
private $formField = array();
public function __construct() {
$this-&gt;email = array(
'adresses' =&gt; '',
'from' =&gt; array(
'name' =&gt; '',
'email' =&gt; ''
),
'message' =&gt; '',
'subject' =&gt; ''
);
$this-&gt;form = array(
'form' =&gt; '',
'answer' =&gt; '',
'colorError' =&gt; ''
);
}
private function sendEmail() {
$this-&gt;unravel($this-&gt;suppress('sent'));
$this-&gt;generateEmailMessage();
mail(
$this-&gt;email['adresses'],
$this-&gt;email['subject'],
$this-&gt;email['message'],
sprintf(
&quot;From: %s &lt;%s&gt;\nReply-To: %s\nX-Mailer: PHP/%s&quot;,
$this-&gt;email['from']['name'],
$this-&gt;email['from']['email'],
$this-&gt;email['from']['email'],
phpversion()
)
);
}
private function unravel($toUnravel, $prefix = '') {
foreach ($toUnravel as $key =&gt; $value) {
if (is_array($value)) {
$this-&gt;unravel($value, $key . ' ');
} else {
$this-&gt;unraveled[&quot;{$prefix}{$key}&quot;] = $value;
}
}
}
private function add2Message($key, $value) {
if (strlen($key) &gt; 25 OR strlen($value) &gt; 54) {
$this-&gt;email['message'] .= &quot;$key\n$value\n&quot;;
} else {
$this-&gt;email['message'] .= $key;
$this-&gt;email['message'] .= str_repeat(' ', 25 - strlen($key));
$this-&gt;email['message'] .= &quot;$value\n&quot;;
}
}
private function generateEmailMessage() {
if ($this-&gt;unraveled)
foreach ($this-&gt;unraveled as $key =&gt; $value) {
$this-&gt;add2Message($key, $value);
}
}
private function suppress() {
$suppress = func_get_args();
foreach ($_POST as $key =&gt; $value) {
if (array_search($key, $suppress) === false)
$fields[$key] = $value;
}
return $fields;
}
public function addEmailAdress($email) {
if (empty($this-&gt;emailAdresses)) {
$this-&gt;email['adresses'] .= &quot;$email&quot;;
} else {
$this-&gt;email['adresses'] .= &quot;, $email&quot;;
}
}
public function setEmailSubject($subject) {
$this-&gt;email['subject'] = $subject;
}
public function setEmailFrom($email, $name) {
$this-&gt;email['from']['email'] = $email;
$this-&gt;email['from']['name'] = $name;
}
public function setForm($form) {
$this-&gt;form['form'] = $form;
}
public function setAnswer($answer) {
$this-&gt;form['answer'] = $answer;
}
public function setBackgroundError($color) {
$this-&gt;form['colorError'] = $color;
}
public function formInterpretation(&amp;$form) {
$fields = explode('###', $form);
$field = array();
for ($i = 1; $i &lt; count($fields); $i = $i + 2) {
$attributte = explode(';', trim($fields[$i]));
foreach ($attributte as $attribute) {
$nameValue = explode(':', trim($attribute));
if ($nameValue[0] != 'option' &amp;&amp; $nameValue[0] != 'optionvalue') {
$field[&quot;{$fields[$i]}&quot;][&quot;{$nameValue[0]}&quot;] = $nameValue[1];
} else {
$field[&quot;{$fields[$i]}&quot;][&quot;{$nameValue[0]}&quot;][] = $nameValue[1];
}
}
}
return $field;
}
public function formOutput($sent = false) {
echo '&lt;div class=&quot;textItem secondItem&quot;&gt;&lt;form action=&quot;&quot; method=&quot;POST&quot; class=&quot;form-horizontal&quot;&gt;';
echo '&lt;input type=&quot;hidden&quot; name=&quot;sent&quot; value=&quot;true&quot; /&gt;';
$form = $this-&gt;form['form'];
$formData = $this-&gt;formInterpretation($form);
$form = explode('###', $form);
foreach ($form as $item) {
if (!empty($formData[&quot;{$item}&quot;])) {
$this-&gt;formField($formData[&quot;{$item}&quot;], $sent);
} else {
echo $item;
}
}
echo '&lt;/form&gt;&lt;/div&gt;';
}
public function formField($attribute, $sent) {
$parameter = &quot;name=\&quot;{$attribute['name']}\&quot;&quot;;
if ($sent &amp;&amp; !$this-&gt;formFieldCorrect($attribute))
$style = &quot;style=\&quot;background-color:{$this-&gt;form['colorError']};\&quot;&quot;;
switch ($attribute['type']) {
case 'select':
case 'password':
case 'text':
if (!empty($attribute['size']))
$parameter .= &quot; size=\&quot;{$attribute['size']}\&quot;&quot;;
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size']))
$parameter .= &quot; size=\&quot;{$attribute['size']}\&quot;&quot;;
if (!empty($attribute['value']))
$value = $attribute['value'];
if (!empty($_POST[&quot;{$attribute['name']}&quot;]))
$value = $_POST[&quot;{$attribute['name']}&quot;];
break;
}
switch ($attribute['type']) {
case 'text':
echo &quot;&lt;input type=\&quot;text\&quot; $parameter value=\&quot;$value\&quot; $style /&gt;&quot;;
break;
case 'password':
echo &quot;&lt;input type=\&quot;password\&quot; $parameter value=\&quot;$value\&quot; $style /&gt;&quot;;
break;
case 'textarea':
echo &quot;&lt;textarea name=\&quot;{$attribute['name']}\&quot; cols=\&quot;&quot;;
echo (empty($attribute['cols'])) ? ('20') : ($attribute['cols']);
echo &quot;\&quot; rows=\&quot;&quot;;
echo (empty($attribute['rows'])) ? ('2') : ($attribute['rows']);
echo &quot;\&quot; wrap=\&quot;virtual\&quot; $style&gt;$value&lt;/textarea&gt;&quot;;
break;
case 'select':
echo &quot;&lt;select $parameter $style&gt;&quot;;
for ($i = 0; $i &lt; count($attribute['option']); $i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_POST[&quot;{$attribute['name']}&quot;]) &amp;&amp; $_POST[&quot;{$attribute['name']}&quot;] == $attribute['optionvalue'][$i]) {
echo &quot;&lt;option value=\&quot;{$attribute['optionvalue'][$i]}\&quot; selected=\&quot;selected\&quot;&gt;{$attribute['option'][$i]}&lt;/option&gt;\n&quot;;
} else {
if (empty($_POST[&quot;{$attribute['name']}&quot;]) &amp;&amp; !empty($attribute['optionvalue'][$i]) &amp;&amp; $attribute['optionvalue'][$i] == $attribute['value']) {
echo &quot;&lt;option value=\&quot;{$attribute['optionvalue'][$i]}\&quot; selected=\&quot;selected\&quot;&gt;{$attribute['option'][$i]}&lt;/option&gt;\n&quot;;
} else {
echo &quot;&lt;option value=\&quot;{$attribute['optionvalue'][$i]}\&quot;&gt;{$attribute['option'][$i]}&lt;/option&gt;\n&quot;;
}
}
} else {
if (!empty($_POST[&quot;{$attribute['name']}&quot;]) &amp;&amp; $_POST[&quot;{$attribute['name']}&quot;] == $attribute['option'][$i]) {
echo &quot;&lt;option selected=\&quot;selected\&quot;&gt;{$attribute['option'][$i]}&lt;/option&gt;\n&quot;;
} else {
if (empty($_POST[&quot;{$attribute['name']}&quot;]) &amp;&amp; $attribute['option'][$i] == $attribute['value']) {
echo &quot;&lt;option selected=\&quot;selected\&quot;&gt;{$attribute['option'][$i]}&lt;/option&gt;\n&quot;;
} else {
echo &quot;&lt;option&gt;{$attribute['option'][$i]}&lt;/option&gt;\n&quot;;
}
}
}
}
echo &quot;&lt;/select&gt;&quot;;
break;
case 'checkbox':
$formId = preg_split('[\[|\]]', $attribute['name']);
if ($sent) {
if ($_POST[&quot;{$formId[0]}&quot;][&quot;{$formId[1]}&quot;] == $attribute['value']) {
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute['value']}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute['value']}\&quot;/&gt;&quot;;
}
} else {
if (!empty($attribute['selected']) &amp;&amp; $attribute['selected'] == 'true') {
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute['value']}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
echo &quot;&lt;input type=\&quot;checkbox\&quot; $parameter value=\&quot;{$attribute['value']}\&quot;/&gt;&quot;;
}
}
break;
case 'radio':
if (!empty($_POST[&quot;{$attribute['name']}&quot;])) {
if ($_POST[&quot;{$attribute['name']}&quot;] == $attribute['value']) {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute['value']}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute['value']}\&quot; /&gt;&quot;;
}
} else {
if (!empty($attribute['selected']) &amp;&amp; $attribute['selected'] == 'true') {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute['value']}\&quot; checked=\&quot;checked\&quot;/&gt;&quot;;
} else {
echo &quot;&lt;input type=\&quot;radio\&quot; $parameter value=\&quot;{$attribute['value']}\&quot;/&gt;&quot;;
}
}
break;
}
}
private function formComplete() {
$form = $this-&gt;form['form'];
$fields = $this-&gt;formInterpretation($form);
foreach ($fields as $field) {
if (!$this-&gt;formFieldCorrect($field)) {
return false;
}
}
return true;
}
private function success() {
$this-&gt;sendEmail();
echo $this-&gt;form['answer'];
}
private function formFieldCorrect(&amp;$field) {
// prüfung, ob pflichtfeld vorhanden
if (!empty($field['mandatory']) &amp;&amp; $field['mandatory'] == 'true' &amp;&amp; empty($_POST[&quot;{$field['name']}&quot;]))
return false;
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
if (empty($_POST[&quot;{$field['name']}&quot;]))
return true;
// regular expression prüfungen
if (!empty($field['valid']) &amp;&amp; $field['valid'] == 'simpletext' &amp;&amp; !preg_match(&quot;/^[öäüéàèâêîça-z-]*$/i&quot;, $_POST[&quot;{$field['name']}&quot;]))
return false;
if (!empty($field['valid']) &amp;&amp; $field['valid'] == 'text' &amp;&amp; !preg_match(&quot;/^[ .,;!?()öäüéàèâêîça-z-]*$/i&quot;, $_POST[&quot;{$field['name']}&quot;]))
return false;
if (!empty($field['valid']) &amp;&amp; $field['valid'] == 'integer' &amp;&amp; !preg_match(&quot;/^[0-9]*$/&quot;, $_POST[&quot;{$field['name']}&quot;]))
return false;
if (!empty($field['valid']) &amp;&amp; $field['valid'] == 'float' &amp;&amp; !preg_match(&quot;/^[0-9]*[.]{0,1}[0-9]*$/&quot;, $_POST[&quot;{$field['name']}&quot;]))
return false;
if (!empty($field['valid']) &amp;&amp; $field['valid'] == 'date' &amp;&amp; !preg_match(&quot;/^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$/&quot;, $_POST[&quot;{$field['name']}&quot;]))
return false;
if (!empty($field['valid']) &amp;&amp; $field['valid'] == 'email' &amp;&amp; !preg_match(&quot;/^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$/i&quot;, $_POST[&quot;{$field['name']}&quot;]))
return false;
// grössenbereich bei integer und float prüfen
if (!empty($field['minvalue']) &amp;&amp; $_POST[&quot;{$field['name']}&quot;] &lt; $field['minvalue'])
return false;
if (!empty($field['maxvalue']) &amp;&amp; $_POST[&quot;{$field['name']}&quot;] &gt; $field['maxvalue'])
return false;
// längenbereich bei allen typen prüfen
if (!empty($field['minlength']) &amp;&amp; strlen($_POST[&quot;{$field['name']}&quot;]) &lt; $field['minlength'])
return false;
if (!empty($field['maxlength']) &amp;&amp; strlen($_POST[&quot;{$field['name']}&quot;]) &gt; $field['maxlength'])
return false;
return true;
}
public function process() {
if (!isset($_POST['sent'])) {
$this-&gt;formOutput();
} elseif ($this-&gt;formComplete()) {
$this-&gt;success();
} else {
$this-&gt;formOutput(true);
}
}
}
if (isset($edit) &amp;&amp; $edit) {
echo &quot;&lt;h1&gt;&quot; . mi18n(&quot;Formularkonfiguration&quot;) . &quot;&lt;/h1&gt;&quot;;
echo &quot;&lt;p&gt;&quot; . mi18n(&quot;Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:&quot;) . &quot;&lt;/p&gt;&quot;;
echo &quot;CMS_HTML[0]&quot;;
echo &quot;&lt;p&gt;&quot; . mi18n(&quot;Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:&quot;) . &quot;&lt;/p&gt;&quot;;
echo &quot;CMS_HTML[1]&quot;;
} else {
$form = new w3form();
$form-&gt;addEmailAdress(&quot;CMS_VALUE[0]&quot;);
$form-&gt;setEmailSubject(&quot;CMS_VALUE[1]&quot;);
$form-&gt;setEmailFrom(&quot;CMS_VALUE[2]&quot;, &quot;CMS_VALUE[3]&quot;);
$form-&gt;setBackgroundError(&quot;CMS_VALUE[4]&quot;);
$form-&gt;setForm(&quot;CMS_HTML[0]&quot;);
$form-&gt;setAnswer(&quot;CMS_HTML[1]&quot;);
$form-&gt;process();
}
?&gt;
</output>
</module>
<jsfiles/>
<tplfiles/>
<cssfiles/>
<layouts/>
</modulepackage>