From cb811303c7dfdf4be07326518f395e50efea4e01 Mon Sep 17 00:00:00 2001 From: "o.pinke" Date: Mon, 28 Jul 2025 09:08:55 +0200 Subject: [PATCH] renaming and cleanup --- ...rm_input.php => cl_contact_form_input.php} | 4 +- ..._output.php => cl_contact_form_output.php} | 16 +- php/class.input.helper.php | 610 ------------------ php/form.org.php | 308 --------- php/murat_input.php | 37 -- php/murat_output.php | 344 ---------- 6 files changed, 11 insertions(+), 1308 deletions(-) rename php/{cl_contactform_input.php => cl_contact_form_input.php} (96%) rename php/{cl_contactform_output.php => cl_contact_form_output.php} (97%) delete mode 100644 php/class.input.helper.php delete mode 100644 php/form.org.php delete mode 100644 php/murat_input.php delete mode 100644 php/murat_output.php diff --git a/php/cl_contactform_input.php b/php/cl_contact_form_input.php similarity index 96% rename from php/cl_contactform_input.php rename to php/cl_contact_form_input.php index d375213..13ddcb6 100644 --- a/php/cl_contactform_input.php +++ b/php/cl_contact_form_input.php @@ -1,8 +1,8 @@ ?> * * based on w3concepts.form.v1 from Andreas Kummer (2004-08-20) diff --git a/php/cl_contactform_output.php b/php/cl_contact_form_output.php similarity index 97% rename from php/cl_contactform_output.php rename to php/cl_contact_form_output.php index 1db229c..5847540 100644 --- a/php/cl_contactform_output.php +++ b/php/cl_contact_form_output.php @@ -2,9 +2,9 @@ global $sess; /** - * Module cl-contactform output + * Module cl-contact_form output * - * @package module/cl_contactform + * @package module/cl_contact_form * @author Ortwin Pinke * * based on w3concepts.form.v1 from Andreas Kummer (2004-08-20) @@ -20,7 +20,7 @@ if (is_readable($sFrontEndPath)) { $captchaInstalled = true; } -class w3form +class FormGenerator { public $emailAdresses; @@ -450,13 +450,15 @@ class w3form } if (cRegistry::isBackendEditMode()) { - echo "

" . mi18n("Formularkonfiguration") . "

"; - echo "

" . mi18n("Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:") . "

"; + echo "
"; + echo "

" . mi18n("Formularkonfiguration") . "

"; + echo "

" . mi18n("Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:") . "

"; echo "CMS_HTML[100]"; - echo "

" . mi18n("Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:") . "

"; + echo "

" . mi18n("Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich verschickt wurde:") . "

"; echo "CMS_HTML[101]"; + echo "
"; } else { - $form = new w3form($captchaInstalled, $sess); + $form = new FormGenerator($captchaInstalled, $sess); $form->addEmailAdress("CMS_VALUE[0]"); $form->setEmailSubject("CMS_VALUE[1]"); $form->setEmailFrom("CMS_VALUE[2]", "CMS_VALUE[3]"); diff --git a/php/class.input.helper.php b/php/class.input.helper.php deleted file mode 100644 index 4526bc6..0000000 --- a/php/class.input.helper.php +++ /dev/null @@ -1,610 +0,0 @@ - - * @license http://www.contenido.org/license/LIZENZ.txt - * @link http://www.4fb.de - * @link http://www.contenido.org - * - * $Id$: - */ -if (!defined('CON_FRAMEWORK')) { - die('Illegal call'); -} - -// Select box with additional functions for category and article selection -class cHTMLInputSelectElement extends cHTMLSelectElement { - - /** - * Constructor. Creates an HTML select field (aka "DropDown"). - * - * @param string $sName Name of the element - * @param int $iWidth Width of the select element - * @param string $sID ID of the element - * @param string $bDisabled Item disabled flag (non-empty to set disabled) - * @param int $iTabIndex Tab index for form elements - * @param string $sAccesskey Key to access the field - * - * @return none - * */ - function __construct($sName, $iWidth = "", $sID = "", $bDisabled = false, $iTabIndex = null, $sAccessKey = "") { - cHTMLSelectElement :: __construct($sName, $iWidth, $sID, $bDisabled, $iTabIndex, $sAccessKey); - } - - /** - * Function addArticles. Adds articles to select box values. - * - * @param int $iIDCat idcat of the category to be listed - * @param bool $bColored Add color information to option elements - * @param bool $bArtOnline If true, only online articles will be added - * @param string $sSpaces Just some " " to show data hierarchically (used in conjunction with addCategories) - * - * @return int Number of items added - * */ - function addArticles($iIDCat, $bColored = false, $bArtOnline = true, $sSpaces = "") { - global $cfg, $lang; - - $oDB = new DB_Contenido; - - if (is_numeric($iIDCat) && $iIDCat > 0) { - $sSQL = "SELECT tblArtLang.title AS title, tblArtLang.idartlang AS idartlang, tblCatArt.idcat AS idcat, "; - $sSQL .= "tblCatArt.idcatart AS idcatart, tblCatArt.is_start AS isstart, tblArtLang.online AS online, "; - $sSQL .= "tblCatLang.startidartlang as idstartartlang "; - $sSQL .= "FROM " . $cfg["tab"]["art_lang"] . " AS tblArtLang, " . $cfg["tab"]["cat_art"] . " AS tblCatArt, "; - $sSQL .= $cfg["tab"]["cat_lang"] . " AS tblCatLang "; - $sSQL .= "WHERE tblCatArt.idcat = '" . Contenido_Security::toInteger($iIDCat) . "' AND tblCatLang.idcat = tblCatArt.idcat AND tblCatLang.idlang = tblArtLang.idlang AND "; - - if ($bArtOnline) { - $sSQL .= "tblArtLang.online = '1' AND "; - } - - $sSQL .= "tblArtLang.idart = tblCatArt.idart AND tblArtLang.idlang = '" . Contenido_Security::escapeDB($lang, $oDB) . "' "; - if ($cfg["is_start_compatible"] == true) { - $sSQL .= "ORDER BY tblCatArt.is_start DESC, tblArtLang.title"; // Getting start article as first article - } else { - $sSQL .= "ORDER BY tblArtLang.title"; - } - - $oDB->query($sSQL); - - $iCount = $oDB->num_rows(); - if ($iCount == 0) { - return 0; - } else { - $iCounter = count($this->_options); - while ($oDB->next_record()) { - // Generate new option element - $oOption = new cHTMLOptionElement($sSpaces . "   " . substr(urldecode($oDB->f("title")), 0, 32), $oDB->f("idcatart")); - - if ($bColored) { - $bIsStartArticle = false; - if ($cfg["is_start_compatible"] == true && $oDB->f("isstart") == 1) { - // Compatible mode and "start article" flag is set - $bIsStartArticle = true; - } else if ($cfg["is_start_compatible"] != true && $oDB->f("idstartartlang") == $oDB->f("idartlang")) { - // No compatible mode and current article is start article (idstartartlang is the same for all records within a category) - $bIsStartArticle = true; - } - - if ($bIsStartArticle) { - if ($oDB->f("online") == 0) { - // Start article, but offline -> red - $oOption->setStyle("color: #ff0000;"); - } else { - // Start article -> blue - $oOption->setStyle("color: #0000ff;"); - } - } else if ($oDB->f("online") == 0) { - // Offline article -> grey - $oOption->setStyle("color: #666666;"); - } - } - - // Add option element to the list - $this->addOptionElement($iCounter, $oOption); - $iCounter++; - } - return $iCount; - } - } else { - return 0; - } - } - - /** - * Function addCategories. Adds category elements (optionally including articles) to select box values. - * Note: Using "with articles" adds the articles also - but the categories will get a negative value! - * There is no way to distinguish between a category id and an article id... - * - * @param int $iMaxLevel Max. level shown (to be exact: except this level) - * @param bool $bColored Add color information to option elements - * @param bool $bCatVisible If true, only add idcat as value, if cat is visible - * @param bool $bCatPublic If true, only add idcat as value, if cat is public - * @param bool $bWithArt Add also articles per category - * @param bool $bArtOnline If true, show only online articles - * - * @return int Number of items added - * */ - function addCategories($iMaxLevel = 0, $bColored = false, $bCatVisible = true, $bCatPublic = true, $bWithArt = false, $bArtOnline = true) { - global $cfg, $client, $lang; - - $oDB = new DB_Contenido; - - $sSQL = "SELECT tblCat.idcat AS idcat, tblCatLang.name AS name, "; - $sSQL .= "tblCatLang.visible AS visible, tblCatLang.public AS public, tblCatTree.level AS level "; - $sSQL .= "FROM " . $cfg["tab"]["cat"] . " AS tblCat, " . $cfg["tab"]["cat_lang"] . " AS tblCatLang, "; - $sSQL .= $cfg["tab"]["cat_tree"] . " AS tblCatTree "; - $sSQL .= "WHERE tblCat.idclient = '" . Contenido_Security::escapeDB($client, $oDB) . "' AND tblCatLang.idlang = '" . Contenido_Security::escapeDB($lang, $oDB) . "' AND "; - $sSQL .= "tblCatLang.idcat = tblCat.idcat AND tblCatTree.idcat = tblCat.idcat "; - - if ($iMaxLevel > 0) { - $sSQL .= "AND tblCatTree.level < '" . Contenido_Security::escapeDB($iMaxLevel, $oDB) . "' "; - } - $sSQL .= "ORDER BY tblCatTree.idtree"; - - $oDB->query($sSQL); - - $iCount = $oDB->num_rows(); - if ($iCount == 0) { - return false; - } else { - $iCounter = count($this->_options); - while ($oDB->next_record()) { - $sSpaces = ""; - $sStyle = ""; - $iID = $oDB->f("idcat"); - - for ($i = 0; $i < $oDB->f("level"); $i++) { - $sSpaces .= "   "; - } - - // Generate new option element - if (($bCatVisible && $oDB->f("visible") == 0) || ($bCatPublic && $oDB->f("public") == 0)) { - // If category has to be visible or public and it isn't, don't add value - $sValue = ""; - } else if ($bWithArt) { - // If article will be added, set negative idcat as value - $sValue = "-" . $iID; - } else { - // Show only categories - and everything is fine... - $sValue = $iID; - } - $oOption = new cHTMLOptionElement($sSpaces . "> " . urldecode($oDB->f("name")), $sValue); - - // Coloring option element, restricted shows grey color - $oOption->setStyle("background-color: #EFEFEF"); - if ($bColored && ($oDB->f("visible") == 0 || $oDB->f("public") == 0)) { - $oOption->setStyle("color: #666666;"); - } - - // Add option element to the list - $this->addOptionElement($iCounter, $oOption); - - if ($bWithArt) { - $iArticles = $this->addArticles($iID, $bColored, $bArtOnline, $sSpaces); - $iCount += $iArticles; - } - $iCounter = count($this->_options); - } - } - return $iCount; - } - - /** - * Function addTypesFromArt. Adds types and type ids which are available for the specified article - * - * @param int $iIDCatArt Article id - * @param string $sTypeRange Komma separated list of Contenido type ids which may be in the resulting list (e.g. '1','17','28') - * - * @return int Number of items added - * */ - function addTypesFromArt($iIDCatArt, $sTypeRange = "") { - global $cfg, $lang; - - $oDB = new DB_Contenido; - - if (is_numeric($iIDCatArt) && $iIDCatArt > 0) { - $sSQL = "SELECT tblContent.typeid AS typeid, tblContent.idtype AS idtype, tblType.type AS type, tblType.description AS description, "; - $sSQL .= "tblContent.value AS value "; - $sSQL .= "FROM " . $cfg["tab"]["content"] . " AS tblContent, " . $cfg["tab"]["art_lang"] . " AS tblArtLang, "; - $sSQL .= $cfg["tab"]["cat_art"] . " AS tblCatArt, " . $cfg["tab"]["type"] . " AS tblType "; - $sSQL .= "WHERE tblContent.idtype = tblType.idtype AND tblContent.idartlang = tblArtLang.idartlang AND "; - $sSQL .= "tblArtLang.idart = tblCatArt.idart AND tblArtLang.idlang = '" . Contenido_Security::escapeDB($lang, $oDB) . "' AND tblCatArt.idcatart = '" . Contenido_Security::toInteger($iIDCatArt) . "' "; - - if ($sTypeRange != "") { - $sSQL .= "AND tblContent.idtype IN (" . Contenido_Security::escapeDB($sTypeRange, $oDB) . ") "; - } - - $sql .= "ORDER BY tblContent.idtype, tblContent.typeid"; - - $oDB->query($sSQL); - - $iCount = $oDB->num_rows(); - if ($iCount == 0) { - return false; - } else { - while ($oDB->next_record()) { - $sTypeIdentifier = "tblData.idtype = '" . $oDB->f('idtype') . "' AND tblData.typeid = '" . $oDB->f('typeid') . "'"; - - // Generate new option element - $oOption = new cHTMLOptionElement($oDB->f('type') . "[" . $oDB->f('typeid') . "]: " . substr(strip_tags(urldecode($oDB->f("value"))), 0, 50), $sTypeIdentifier); - - // Add option element to the list - $this->addOptionElement($sTypeIdentifier, $oOption); - } - return $iCount; - } - } else { - return false; - } - } - - public function addFiles($sPath) { - $iCount = 0; - $aFiles = cDirHandler::read($sPath); - asort($aFiles); - $iCounter = count($this->_options); - foreach ($aFiles as $sValue) { - $oOption = new cHTMLOptionElement($sValue, $sValue); - $this->addOptionElement($iCounter, $oOption); - $iCounter++; - } - return count($aFiles); - } -} - -class UI_Config_Table { - - var $_sTplCellCode; - var $_sTplTableFile; - var $_sWidth; - var $_sBorder; - var $_sBorderColor; - var $_bSolidBorder; - var $_sPadding; - var $_aCells; - var $_aCellAlignment; - var $_aCellVAlignment; - var $_aCellColSpan; - var $_aCellClass; - var $_aRowBgColor; - var $_aRowExtra; - var $_bAddMultiSelJS; - var $_sColorLight; - var $_sColorDark; - - /** - * - * @var type - */ - protected $_iRowCnt = 0; - - function __construct() { - $cfg = cRegistry::getConfig(); - - $this->_sPadding = 2; - $this->_sBorder = 0; - $this->_sBorderColor = cRegistry::getConfigValue('color', 'table_border'); - $this->_sTplCellCode = '' . "\n" - . '{CONTENT}' . "\n" - . '' . "\n"; - $this->_sTplTableFile = $cfg['path']['contenido'] . $cfg['path']['templates'] . $cfg['templates']['generic_list']; - $this->_sColorLight = cRegistry::getConfigValue('color', 'table_light'); - $this->_sColorDark = cRegistry::getConfigValue('color', 'table_dark'); - } - - function setCellTemplate($sCode) { - $this->_sTplCellCode = $sCode; - } - - function setTableTemplateFile($sPath) { - $this->_sTplTableFile = $sPath; - } - - function setLightColor($sColor) { - $this->_sColorLight = $sColor; - } - - function setDarkColor($sColor) { - $this->_sColorDark = $sColor; - } - - function setAddMultiSelJS($bEnabled = true) { - $this->_bAddMultiSelJS = (bool) $bEnabled; - } - - function setWidth($sWidth) { - $this->_sWidth = $sWidth; - } - - function setPadding($sPadding) { - $this->_sPadding = $sPadding; - } - - function setBorder($sBorder) { - $this->_sBorder = $sBorder; - } - - function setBorderColor($sBorderColor) { - $this->_sBorderColor = $sBorderColor; - } - - function setSolidBorder($bSolidBorder = true) { - $this->_bSolidBorder = (bool) $bSolidBorder; - } - - function setCell($sRow, $sCell, $sContent) { - $this->_aCells[$sRow][$sCell] = $sContent; - $this->_aCellAlignment[$sRow][$sCell] = ""; - } - - function setCellAlignment($sRow, $sCell, $sAlignment) { - $this->_aCellAlignment[$sRow][$sCell] = $sAlignment; - } - - function setCellVAlignment($sRow, $sCell, $sAlignment) { - $this->_aCellVAlignment[$sRow][$sCell] = $sAlignment; - } - - function setCellColspan($sRow, $sCell, $iColSpan) { - $this->_aCellColSpan[$sRow][$sCell] = $iColSpan; - } - - function setCellClass($sRow, $sCell, $sClass) { - $this->_aCellClass[$sRow][$sCell] = $sClass; - } - - function setRowBgColor($sRow, $sColor) { - $this->_aRowBgColor[$sRow] = $sColor; - } - - function setRowExtra($sRow, $sExtra) { - $this->_aRowExtra[$sRow] = $sExtra; - } - - function _addMultiSelJS() { - // Trick: To save multiple selections in '; - $formular = $this->form['form']; - $formulardaten = $this->formularInterpretation(&$formular); - $formular = split('###',$formular); - foreach ($formular as $formularteil) { - if (!empty($formulardaten["{$formularteil}"])) { - $this->formularFeld($formulardaten["{$formularteil}"],$sent); - } else { - echo $formularteil; - } - } - echo ''; - } - - // PRIVATE - function formularFeld($attribute,$sent) { - $parameter = "name=\"{$attribute['name']}\""; - if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\""; - switch ($attribute['type']) { - case 'select': - case 'password': - case 'text': - if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\""; - break; - } - switch ($attribute['type']) { - case 'textarea': - case 'text': - if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\""; - if (!empty($attribute['value'])) $value = $attribute['value']; - if (!empty($_POST["{$attribute['name']}"])) $value = $_POST["{$attribute['name']}"]; - break; - } - switch ($attribute['type']) { - case 'text': - echo ""; - break; - case 'password': - echo ""; - break; - case 'textarea': - echo ""; - break; - case 'select': - echo ""; - break; - case 'checkbox': - $formularbezeichner = preg_split('[\[|\]]',$attribute['name']); - if ($sent) { - if ($_POST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) { - echo ""; - } else { - echo ""; - } - } else { - if (!empty($attribute['selected']) && $attribute['selected'] == 'true') { - echo ""; - } else { - echo ""; - } - } - break; - case 'radio': - if (!empty($_POST["{$attribute['name']}"])) { - if ($_POST["{$attribute['name']}"] == $attribute['value']) { - echo ""; - } else { - echo ""; - } - } else { - if (!empty($attribute['selected']) && $attribute['selected'] == 'true') { - echo ""; - } else { - echo ""; - } - } - break; - } - } - - // PRIVATE - function formularVollstaendig() { - - $formular = $this->form['form']; - - $felder = $this->formularInterpretation(&$formular); - - foreach ($felder as $feld) { - if (!$this->formularFeldKorrekt(&$feld)) return false; - } - - return true; - } - - // PRIVATE - function success() { - $this->sendEmail(); - echo $this->form['answer']; - } - - // PRIVATE - function formularFeldKorrekt(&$feld) { - - // prüfung, ob pflichtfeld vorhanden - if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) return false; - - // wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben - if (empty($_POST["{$feld['name']}"])) return true; - - // regular expression prüfungen - if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) return false; - if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) return false; - if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false; - if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false; - if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) return false; - if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false; - - // grössenbereich bei integer und float prüfen - if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false; - if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false; - - // längenbereich bei allen typen prüfen - if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false; - if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false; - - return true; - } - - //PUBLIC - function process() { - if (!isset($_POST['sent'])) { - $this->formularAusgabe(); - } elseif ($this->formularVollstaendig()) { - $this->success(); - } else { - $this->formularAusgabe(true); - } - } - -} - -if ($edit) { - echo "

Formularkonfiguration

"; - echo "

Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:

"; - echo "CMS_HTML[0]"; - echo "

Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:

"; - echo "CMS_HTML[1]"; -} else { - $formular = new w3form(); - $formular->addEmailAdress("CMS_VALUE[0]"); - $formular->setEmailSubject("CMS_VALUE[1]"); - $formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]"); - $formular->setBackgroundError("CMS_VALUE[4]"); - $formular->setForm("CMS_HTML[0]"); - $formular->setAnswer("CMS_HTML[1]"); - $formular->process(); -} - -?> diff --git a/php/murat_input.php b/php/murat_input.php deleted file mode 100644 index 2faece5..0000000 --- a/php/murat_input.php +++ /dev/null @@ -1,37 +0,0 @@ -?> - - " . mi18n("Zieladresse (alias@mydomain.com):") . " - - - - " . mi18n("Betreff:") . " - - - - " . mi18n("Antwortadresse (alias@mydomain.com):") . " - - - - " . mi18n("Emailname (z.B. Vorname Name):") . " - - - - " . mi18n("Hintergrundfarbe bei Fehlern (z.B. red):") . " - - - -"; diff --git a/php/murat_output.php b/php/murat_output.php deleted file mode 100644 index ae3b81d..0000000 --- a/php/murat_output.php +++ /dev/null @@ -1,344 +0,0 @@ -email = array( - 'adresses' => '', - 'from' => array( - 'name' => '', - 'email' => '' - ), - 'message' => '', - 'subject' => '' - ); - - $this->form = array( - 'form' => '', - 'answer' => '', - 'colorError' => '' - ); - } - - private function sendEmail() { - $this->unravel($this->suppress('sent')); - $this->generateEmailMessage(); - mail( - $this->email['adresses'], - $this->email['subject'], - $this->email['message'], - sprintf( - "From: %s <%s>\nReply-To: %s\nX-Mailer: PHP/%s", - $this->email['from']['name'], - $this->email['from']['email'], - $this->email['from']['email'], - phpversion() - ) - ); - } - - private function unravel($toUnravel, $prefix = '') { - foreach ($toUnravel as $key => $value) { - if (is_array($value)) { - $this->unravel($value, $key . ' '); - } else { - $this->unraveled["{$prefix}{$key}"] = $value; - } - } - } - - private function add2Message($key, $value) { - if (strlen($key) > 25 OR strlen($value) > 54) { - $this->email['message'] .= "$key\n$value\n"; - } else { - $this->email['message'] .= $key; - $this->email['message'] .= str_repeat(' ', 25 - strlen($key)); - $this->email['message'] .= "$value\n"; - } - } - - private function generateEmailMessage() { - if ($this->unraveled) - foreach ($this->unraveled as $key => $value) { - $this->add2Message($key, $value); - } - } - - private function suppress() { - $suppress = func_get_args(); - foreach ($_POST as $key => $value) { - if (array_search($key, $suppress) === false) - $fields[$key] = $value; - } - return $fields; - } - - public function addEmailAdress($email) { - if (empty($this->emailAdresses)) { - $this->email['adresses'] .= "$email"; - } else { - $this->email['adresses'] .= ", $email"; - } - } - - public function setEmailSubject($subject) { - $this->email['subject'] = $subject; - } - - public function setEmailFrom($email, $name) { - $this->email['from']['email'] = $email; - $this->email['from']['name'] = $name; - } - - public function setForm($form) { - $this->form['form'] = $form; - } - - public function setAnswer($answer) { - $this->form['answer'] = $answer; - } - - public function setBackgroundError($color) { - $this->form['colorError'] = $color; - } - - public function formInterpretation(&$form) { - $fields = explode('###', $form); - $field = array(); - - for ($i = 1; $i < count($fields); $i = $i + 2) { - $attributte = explode(';', trim($fields[$i])); - foreach ($attributte as $attribute) { - $nameValue = explode(':', trim($attribute)); - if ($nameValue[0] != 'option' && $nameValue[0] != 'optionvalue') { - $field["{$fields[$i]}"]["{$nameValue[0]}"] = $nameValue[1]; - } else { - $field["{$fields[$i]}"]["{$nameValue[0]}"][] = $nameValue[1]; - } - } - } - - return $field; - } - - public function formOutput($sent = false) { - echo '
'; - echo ''; - $form = $this->form['form']; - $formData = $this->formInterpretation($form); - $form = explode('###', $form); - - foreach ($form as $item) { - if (!empty($formData["{$item}"])) { - $this->formField($formData["{$item}"], $sent); - } else { - echo $item; - } - } - - echo '
'; - } - - public function formField($attribute, $sent) { - $parameter = "name=\"{$attribute['name']}\""; - if ($sent && !$this->formFieldCorrect($attribute)) - $style = "style=\"background-color:{$this->form['colorError']};\""; - - switch ($attribute['type']) { - case 'select': - case 'password': - case 'text': - if (!empty($attribute['size'])) - $parameter .= " size=\"{$attribute['size']}\""; - break; - } - - switch ($attribute['type']) { - case 'textarea': - case 'text': - if (!empty($attribute['size'])) - $parameter .= " size=\"{$attribute['size']}\""; - if (!empty($attribute['value'])) - $value = $attribute['value']; - if (!empty($_POST["{$attribute['name']}"])) - $value = $_POST["{$attribute['name']}"]; - break; - } - - switch ($attribute['type']) { - case 'text': - echo ""; - break; - case 'password': - echo ""; - break; - case 'textarea': - echo ""; - break; - case 'select': - echo ""; - break; - case 'checkbox': - $formId = preg_split('[\[|\]]', $attribute['name']); - if ($sent) { - if ($_POST["{$formId[0]}"]["{$formId[1]}"] == $attribute['value']) { - echo ""; - } else { - echo ""; - } - } else { - if (!empty($attribute['selected']) && $attribute['selected'] == 'true') { - echo ""; - } else { - echo ""; - } - } - break; - case 'radio': - if (!empty($_POST["{$attribute['name']}"])) { - if ($_POST["{$attribute['name']}"] == $attribute['value']) { - echo ""; - } else { - echo ""; - } - } else { - if (!empty($attribute['selected']) && $attribute['selected'] == 'true') { - echo ""; - } else { - echo ""; - } - } - break; - } - } - - private function formComplete() { - $form = $this->form['form']; - $fields = $this->formInterpretation($form); - - foreach ($fields as $field) { - if (!$this->formFieldCorrect($field)) { - return false; - } - } - - return true; - } - - private function success() { - $this->sendEmail(); - echo $this->form['answer']; - } - - private function formFieldCorrect(&$field) { - // prüfung, ob pflichtfeld vorhanden - if (!empty($field['mandatory']) && $field['mandatory'] == 'true' && empty($_POST["{$field['name']}"])) - return false; - - // wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben - if (empty($_POST["{$field['name']}"])) - return true; - - // regular expression prüfungen - if (!empty($field['valid']) && $field['valid'] == 'simpletext' && !preg_match("/^[öäüéàèâêîça-z-]*$/i", $_POST["{$field['name']}"])) - return false; - if (!empty($field['valid']) && $field['valid'] == 'text' && !preg_match("/^[ .,;!?()öäüéàèâêîça-z-]*$/i", $_POST["{$field['name']}"])) - return false; - if (!empty($field['valid']) && $field['valid'] == 'integer' && !preg_match("/^[0-9]*$/", $_POST["{$field['name']}"])) - return false; - if (!empty($field['valid']) && $field['valid'] == 'float' && !preg_match("/^[0-9]*[.]{0,1}[0-9]*$/", $_POST["{$field['name']}"])) - return false; - if (!empty($field['valid']) && $field['valid'] == 'date' && !preg_match("/^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$/", $_POST["{$field['name']}"])) - return false; - if (!empty($field['valid']) && $field['valid'] == 'email' && !preg_match("/^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$/i", $_POST["{$field['name']}"])) - return false; - - // grössenbereich bei integer und float prüfen - if (!empty($field['minvalue']) && $_POST["{$field['name']}"] < $field['minvalue']) - return false; - if (!empty($field['maxvalue']) && $_POST["{$field['name']}"] > $field['maxvalue']) - return false; - - // längenbereich bei allen typen prüfen - if (!empty($field['minlength']) && strlen($_POST["{$field['name']}"]) < $field['minlength']) - return false; - if (!empty($field['maxlength']) && strlen($_POST["{$field['name']}"]) > $field['maxlength']) - return false; - - return true; - } - - public function process() { - if (!isset($_POST['sent'])) { - $this->formOutput(); - } elseif ($this->formComplete()) { - $this->success(); - } else { - $this->formOutput(true); - } - } - -} - -if (isset($edit) && $edit) { - echo "

" . mi18n("Formularkonfiguration") . "

"; - echo "

" . mi18n("Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:") . "

"; - echo "CMS_HTML[0]"; - echo "

" . mi18n("Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:") . "

"; - echo "CMS_HTML[1]"; -} else { - $form = new w3form(); - $form->addEmailAdress("CMS_VALUE[0]"); - $form->setEmailSubject("CMS_VALUE[1]"); - $form->setEmailFrom("CMS_VALUE[2]", "CMS_VALUE[3]"); - $form->setBackgroundError("CMS_VALUE[4]"); - $form->setForm("CMS_HTML[0]"); - $form->setAnswer("CMS_HTML[1]"); - $form->process(); -} - -?>