init module with w3concepts.form.v1

Dieser Commit ist enthalten in:
o.pinke 2022-04-29 17:40:44 +02:00
Ursprung 582877ac98
Commit 2e3cb966cf

Datei anzeigen

@ -0,0 +1,398 @@
<?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>