Exemplo n.º 1
0
 public function postUpdate($eventArgs)
 {
     $objUser = $eventArgs->getEntity();
     $crmId = $objUser->getCrmUserId();
     if (empty($crmId)) {
         return;
     }
     $objUser->objAttribute->first();
     while (!$objUser->objAttribute->EOF) {
         $arrProfile[$objUser->objAttribute->getId()][] = $objUser->getProfileAttribute($objUser->objAttribute->getId());
         $objUser->objAttribute->next();
     }
     $objCrmLib = new \Cx\Modules\Crm\Controller\CrmLibrary('Crm');
     $objCrmLib->setContactPersonProfile($arrProfile, $objUser->getId(), $objUser->getFrontendLanguage());
 }
Exemplo n.º 2
0
 /**
  * Show the contact page
  *
  * Parse a contact form submit request and show the contact page
  * @see _getContactFormData(), _checkValues(), _insertIntoDatabase(), sendMail(), _showError(), _showFeedback(), \Cx\Core\Html\Sigma::get(), \Cx\Core\Html\Sigma::blockExists(), \Cx\Core\Html\Sigma::hideBlock(), \Cx\Core\Html\Sigma::touchBlock()
  * @return string Parse contact form page
  */
 function getContactPage()
 {
     global $_ARRAYLANG, $_LANGID, $objDatabase;
     \JS::activate('cx');
     $formId = isset($_GET['cmd']) ? intval($_GET['cmd']) : 0;
     $arrFields = $this->getFormFields($formId);
     $isLoggedin = $this->setProfileData();
     $useCaptcha = !$isLoggedin && $this->getContactFormCaptchaStatus($formId);
     $this->handleUniqueId();
     $uploaderCode = '';
     // load requested form's source code if required
     if ($this->objTemplate->placeholderExists('APPLICATION_DATA')) {
         // load form's source code
         $applicationTemplate = $this->getSourceCode($formId, $_LANGID);
         \LinkGenerator::parseTemplate($applicationTemplate);
         $this->objTemplate->addBlock('APPLICATION_DATA', 'application_data', $applicationTemplate);
     }
     $this->objTemplate->setVariable(array('TXT_NEW_ENTRY_ERORR' => $_ARRAYLANG['TXT_NEW_ENTRY_ERORR'], 'TXT_CONTACT_SUBMIT' => $_ARRAYLANG['TXT_CONTACT_SUBMIT'], 'TXT_CONTACT_RESET' => $_ARRAYLANG['TXT_CONTACT_RESET']));
     if ($this->objTemplate->blockExists('contact_form')) {
         $recipients = $this->getRecipients($formId);
         foreach ($arrFields as $fieldId => $arrField) {
             /*
              * Set values for special field types if the user is authenticated
              */
             if ($isLoggedin && empty($_GET[$fieldId]) && empty($_POST['contactFormField_' . $fieldId])) {
                 switch ($arrField['special_type']) {
                     case 'access_email':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_USER_EMAIL]]';
                         break;
                     case 'access_gender':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_GENDER]]';
                         break;
                     case 'access_title':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_TITLE]]';
                         break;
                     case 'access_firstname':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_FIRSTNAME]]';
                         break;
                     case 'access_lastname':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_LASTNAME]]';
                         break;
                     case 'access_company':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_COMPANY]]';
                         break;
                     case 'access_address':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_ADDRESS]]';
                         break;
                     case 'access_city':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_CITY]]';
                         break;
                     case 'access_zip':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_ZIP]]';
                         break;
                     case 'access_country':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_COUNTRY]]';
                         break;
                     case 'access_phone_office':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_PHONE_OFFICE]]';
                         break;
                     case 'access_phone_private':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_PHONE_PRIVATE]]';
                         break;
                     case 'access_phone_mobile':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_PHONE_MOBILE]]';
                         break;
                     case 'access_phone_fax':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_PHONE_FAX]]';
                         break;
                     case 'access_birthday':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_BIRTHDAY]]';
                         break;
                     case 'access_website':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_WEBSITE]]';
                         break;
                     case 'access_profession':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_PROFESSION]]';
                         break;
                     case 'access_interests':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_INTERESTS]]';
                         break;
                     case 'access_signature':
                         $arrField['lang'][$_LANGID]['value'] = '[[ACCESS_PROFILE_ATTRIBUTE_SIGNATURE]]';
                         break;
                     default:
                         break;
                 }
             }
             $arrField['lang'][$_LANGID]['value'] = preg_replace('/\\[\\[([A-Z0-9_]+)\\]\\]/', '{$1}', $arrField['lang'][$_LANGID]['value']);
             $this->objTemplate->setVariable(array($formId . '_FORM_NAME' => wordwrap($this->arrForms[$formId]['lang'][$_LANGID]['name'], 90, "<br/>\n", true), $formId . '_FORM_TEXT' => $this->arrForms[$formId]['lang'][$_LANGID]['text'], $fieldId . '_LABEL' => $arrField['lang'][$_LANGID]['name'] != "" ? wordwrap($arrField['lang'][$_LANGID]['name'], 90, "<br/>\n", true) : "&nbsp;"));
             /*
              * Generate values for dropdown checkbox and radio fields
              */
             $userProfileRegExp = '/\\{([A-Z_]+)\\}/';
             $accessAttributeId = null;
             $fieldType = $arrField['type'] != 'special' ? $arrField['type'] : $arrField['special_type'];
             switch ($fieldType) {
                 case 'checkbox':
                     if ($arrField['lang'][$_LANGID]['value'] == 1 || !empty($_POST['contactFormField_' . $fieldId])) {
                         $this->objTemplate->setVariable('SELECTED_' . $fieldId, 'checked="checked"');
                     }
                     break;
                 case 'checkboxGroup':
                 case 'radio':
                     $options = explode(',', $arrField['lang'][$_LANGID]['value']);
                     foreach ($options as $index => $option) {
                         if (preg_match($userProfileRegExp, $option)) {
                             $valuePlaceholderBlock = 'contact_value_placeholder_block_' . $fieldId . '_' . $index;
                             $this->objTemplate->addBlock($fieldId . '_' . $index . '_VALUE', $valuePlaceholderBlock, contrexx_raw2xhtml($option));
                         } else {
                             $this->objTemplate->setVariable($fieldId . '_' . $index . '_VALUE', contrexx_raw2xhtml($option));
                         }
                         if (!empty($_POST['contactFormField_' . $fieldId])) {
                             if (in_array($option, $_POST['contactFormField_' . $fieldId]) || $option == $_POST['contactFormField_' . $fieldId]) {
                                 $this->objTemplate->setVariable('SELECTED_' . $fieldId . '_' . $index, 'checked="checked"');
                             }
                         } elseif (!empty($_GET[$fieldId])) {
                             if ($option == $_GET[$fieldId]) {
                                 $this->objTemplate->setVariable('SELECTED_' . $fieldId . '_' . $index, 'checked="checked"');
                             }
                         }
                     }
                     break;
                 case 'access_title':
                 case 'access_gender':
                     // collect user attribute options
                     $arrOptions = array();
                     $accessAttributeId = str_replace('access_', '', $fieldType);
                     $objAttribute = \FWUser::getFWUserObject()->objUser->objAttribute->getById($accessAttributeId);
                     // get options
                     $arrAttribute = $objAttribute->getChildren();
                     foreach ($arrAttribute as $attributeId) {
                         // in case the selection of the field is mandatory, we shall skip the unknown option of the user profile attribute
                         if ($arrField['is_required'] && strpos($attributeId, '_undefined')) {
                             continue;
                         }
                         $objAttribute = \FWUser::getFWUserObject()->objUser->objAttribute->getById($attributeId);
                         $arrOptions[] = $objAttribute->getName(FRONTEND_LANG_ID);
                     }
                     // options will be used for select input generation
                     $arrField['lang'][FRONTEND_LANG_ID]['value'] = implode(',', $arrOptions);
                     // intentionally no break here!!
                 // intentionally no break here!!
                 case 'select':
                     $options = explode(',', $arrField['lang'][$_LANGID]['value']);
                     $inexOffset = 0;
                     if ($arrField['is_required']) {
                         $options = array_merge(array($_ARRAYLANG['TXT_CONTACT_PLEASE_SELECT']), $options);
                         $inexOffset = 1;
                     }
                     foreach ($options as $index => $option) {
                         if (preg_match($userProfileRegExp, $option)) {
                             $valuePlaceholderBlock = 'contact_value_placeholder_block_' . $fieldId . '_' . $index;
                             $this->objTemplate->addBlock($fieldId . '_VALUE', $valuePlaceholderBlock, contrexx_raw2xhtml($option));
                         } else {
                             $this->objTemplate->setVariable($fieldId . '_VALUE', contrexx_raw2xhtml($option));
                         }
                         // pre-selection, based on $_POST value
                         if (!empty($_POST['contactFormField_' . $fieldId])) {
                             if ($index == array_search($_POST['contactFormField_' . $fieldId], explode(',', $arrField['lang'][$_LANGID]['value'])) + $inexOffset) {
                                 $this->objTemplate->setVariable('SELECTED_' . $fieldId, 'selected = "selected"');
                             }
                             // pre-selection, based on $_GET value
                         } elseif (!empty($_GET[$fieldId])) {
                             if ($index == array_search(contrexx_input2raw($_GET[$fieldId]), explode(',', $arrField['lang'][$_LANGID]['value']))) {
                                 $this->objTemplate->setVariable('SELECTED_' . $fieldId, 'selected = "selected"');
                             }
                             // pre-selection, based on profile data of currently signed in user
                         } elseif (isset($this->objTemplate->_globalVariables['ACCESS_PROFILE_ATTRIBUTE_' . strtoupper($accessAttributeId)]) && $option == $this->objTemplate->_globalVariables['ACCESS_PROFILE_ATTRIBUTE_' . strtoupper($accessAttributeId)]) {
                             $this->objTemplate->setVariable('SELECTED_' . $fieldId, 'selected = "selected"');
                         }
                         $this->objTemplate->parse('field_' . $fieldId);
                     }
                     break;
                 case 'recipient':
                     foreach ($recipients as $index => $recipient) {
                         $recipient['lang'][$_LANGID] = preg_replace('/\\[\\[([A-Z0-9_]+)\\]\\]/', '{$1}', $recipient['lang'][$_LANGID]);
                         if (preg_match($userProfileRegExp, $recipient['lang'][$_LANGID])) {
                             $valuePlaceholderBlock = 'contact_value_placeholder_block_' . $fieldId . '_' . $index;
                             $this->objTemplate->addBlock($fieldId . '_VALUE', $valuePlaceholderBlock, $recipient['lang'][$_LANGID]);
                         } else {
                             $this->objTemplate->setVariable(array($fieldId . '_VALUE' => $recipient['lang'][$_LANGID]));
                         }
                         $this->objTemplate->setVariable(array($fieldId . '_VALUE_ID' => $index));
                         if (!empty($_POST['contactFormField_' . $fieldId]) && $recipient['lang'][$_LANGID] == $_POST['contactFormField_' . $fieldId]) {
                             $this->objTemplate->setVariable(array('SELECTED_' . $fieldId => 'selected = "selected"'));
                         } elseif (!empty($_GET[$fieldId]) && $recipient['lang'][$_LANGID] == $_GET[$fieldId]) {
                             $this->objTemplate->setVariable(array('SELECTED_' . $fieldId => 'selected = "selected"'));
                         }
                         $this->objTemplate->parse('field_' . $fieldId);
                     }
                     break;
                 case 'access_country':
                 case 'country':
                     if (preg_match($userProfileRegExp, $arrField['lang'][$_LANGID]['value'])) {
                         $arrField['lang'][$_LANGID]['value'] = $this->objTemplate->_globalVariables[trim($arrField['lang'][$_LANGID]['value'], '{}')];
                     }
                     $lang = $arrField['lang'][$_LANGID]['value'];
                     $country = \Cx\Core\Country\Controller\Country::getNameArray(true, $lang);
                     foreach ($country as $id => $name) {
                         $this->objTemplate->setVariable($fieldId . '_VALUE', $name);
                         if (!empty($_POST['contactFormField_' . $fieldId])) {
                             if (strcasecmp($name, $_POST['contactFormField_' . $fieldId]) == 0) {
                                 $this->objTemplate->setVariable('SELECTED_' . $fieldId, 'selected = "selected"');
                             }
                         } elseif (!empty($_GET[$fieldId])) {
                             if (strcasecmp($name, $_GET[$fieldId]) == 0) {
                                 $this->objTemplate->setVariable('SELECTED_' . $fieldId, 'selected = "selected"');
                             }
                         } elseif ($name == $arrField['lang'][$_LANGID]['value']) {
                             $this->objTemplate->setVariable('SELECTED_' . $fieldId, 'selected = "selected"');
                         }
                         $this->objTemplate->parse('field_' . $fieldId);
                     }
                     $this->objTemplate->setVariable(array('TXT_CONTACT_PLEASE_SELECT' => $_ARRAYLANG['TXT_CONTACT_PLEASE_SELECT'], 'TXT_CONTACT_NOT_SPECIFIED' => $_ARRAYLANG['TXT_CONTACT_NOT_SPECIFIED']));
                     break;
                 case 'file':
                     $this->hasFileField = true;
                     $uploaderCode .= $this->initUploader($fieldId, true);
                     break;
                 case 'multi_file':
                     $this->hasFileField = true;
                     $uploaderCode .= $this->initUploader($fieldId, false);
                     break;
                 default:
                     /*
                      * Set default field value through User profile attribute
                      */
                     $arrField['lang'][$_LANGID]['value'] = preg_replace('/\\[\\[([A-Z0-9_]+)\\]\\]/', '{$1}', $arrField['lang'][$_LANGID]['value']);
                     if (preg_match($userProfileRegExp, $arrField['lang'][$_LANGID]['value'])) {
                         $valuePlaceholderBlock = 'contact_value_placeholder_block_' . $fieldId;
                         $this->objTemplate->addBlock($fieldId . '_VALUE', $valuePlaceholderBlock, contrexx_raw2xhtml($arrField['lang'][$_LANGID]['value']));
                     } elseif (!empty($_POST['contactFormField_' . $fieldId])) {
                         $this->objTemplate->setVariable($fieldId . '_VALUE', contrexx_raw2xhtml($_POST['contactFormField_' . $fieldId]));
                     } elseif (!empty($_GET[$fieldId])) {
                         $this->objTemplate->setVariable($fieldId . '_VALUE', contrexx_raw2xhtml($_GET[$fieldId]));
                     } else {
                         $this->objTemplate->setVariable($fieldId . '_VALUE', contrexx_raw2xhtml($arrField['lang'][$_LANGID]['value']));
                     }
                     break;
             }
             /*
              * Parse the blocks created for parsing user profile data using addBlock()
              */
             if (!empty($valuePlaceholderBlock) && $this->objTemplate->blockExists($valuePlaceholderBlock)) {
                 $this->objTemplate->touchBlock($valuePlaceholderBlock);
             }
         }
     }
     if (isset($_POST['submitContactForm']) || isset($_POST['Submit'])) {
         //form submitted
         $this->checkLegacyMode();
         $showThanks = isset($_GET['cmd']) && $_GET['cmd'] == 'thanks' ? true : false;
         $arrFormData = $this->_getContactFormData();
         if ($arrFormData) {
             if ($this->_checkValues($arrFormData, $useCaptcha) && $this->_insertIntoDatabase($arrFormData)) {
                 //validation ok
                 if (!empty($arrFormData['saveDataInCRM'])) {
                     $objCrmLibrary = new \Cx\Modules\Crm\Controller\CrmLibrary('Crm');
                     $objCrmLibrary->addCrmContact($arrFormData);
                 }
                 $this->sendMail($arrFormData);
                 if (isset($arrFormData['showForm']) && !$arrFormData['showForm']) {
                     $this->objTemplate->hideBlock("formText");
                     $this->objTemplate->hideBlock('contact_form');
                 }
             } else {
                 //found errors while validating
                 $this->setCaptcha($useCaptcha);
                 return $this->_showError();
             }
             if (!$showThanks) {
                 $this->_showFeedback($arrFormData);
             } else {
                 if ($this->objTemplate->blockExists("formText")) {
                     $this->objTemplate->hideBlock("formText");
                 }
             }
         }
     } else {
         //fresh display
         if ($this->objTemplate->blockExists('formText')) {
             $this->objTemplate->touchBlock('formText');
         }
         $this->setCaptcha($useCaptcha);
     }
     $this->objTemplate->setVariable('CONTACT_JAVASCRIPT', $this->_getJsSourceCode($formId, $arrFields) . $uploaderCode);
     return $this->objTemplate->get();
 }
Exemplo n.º 3
0
 /**
  * Modify Form
  *
  * Shows the modifying page.
  * @access private
  * @param bool $copy If the form should be copied or not
  */
 function _modifyForm($copy = false)
 {
     global $_ARRAYLANG, $_CONFIG, $objDatabase;
     \JS::activate('cx');
     if ($copy) {
         $this->initContactForms();
     }
     $this->_objTpl->loadTemplateFile('module_contact_form_modify.html');
     $formId = isset($_REQUEST['formId']) ? intval($_REQUEST['formId']) : 0;
     $this->_pageTitle = !$copy && $formId != 0 ? $_ARRAYLANG['TXT_CONTACT_MODIFY_CONTACT_FORM'] : $_ARRAYLANG['TXT_CONTACT_ADD_NEW_CONTACT_FORM'];
     $actionTitle = $_ARRAYLANG['TXT_CONTACT_ADD_NEW_CONTACT_FORM'];
     $showForm = 0;
     $useCaptcha = 1;
     $saveDataInCRM = 0;
     $useCustomStyle = 0;
     $sendCopy = 0;
     $useEmailOfSender = 0;
     $sendHtmlMail = 1;
     $sendAttachment = 0;
     $emails = $_CONFIG['contactFormEmail'];
     $crmCustomerGroups = array();
     $arrActiveSystemFrontendLanguages = \FWLanguage::getActiveFrontendLanguages();
     if (count($arrActiveSystemFrontendLanguages) == 1) {
         $this->_objTpl->setVariable('CONTACT_LANGUAGE_TABS_DISPLAY', 'display: none');
     }
     if (isset($this->arrForms[$formId])) {
         // editing
         $actionTitle = $_ARRAYLANG['TXT_CONTACT_MODIFY_CONTACT_FORM'];
         $showForm = $this->arrForms[$formId]['showForm'];
         $useCaptcha = $this->arrForms[$formId]['useCaptcha'];
         $saveDataInCRM = $this->arrForms[$formId]['saveDataInCRM'];
         $useCustomStyle = $this->arrForms[$formId]['useCustomStyle'];
         $sendCopy = $this->arrForms[$formId]['sendCopy'];
         $useEmailOfSender = $this->arrForms[$formId]['useEmailOfSender'];
         $sendHtmlMail = $this->arrForms[$formId]['htmlMail'];
         $sendAttachment = $this->arrForms[$formId]['sendAttachment'];
         $emails = $this->arrForms[$formId]['emails'];
         $crmCustomerGroups = !empty($this->arrForms[$formId]['crmCustomerGroups']) ? $this->arrForms[$formId]['crmCustomerGroups'] : array();
     }
     if (count($arrActiveSystemFrontendLanguages) > 0) {
         $intLanguageCounter = 0;
         $arrLanguages = array(0 => '', 1 => '', 2 => '');
         $strJsTabToDiv = '';
         foreach ($arrActiveSystemFrontendLanguages as $langId => $arrLanguage) {
             // Bugfix: if only one language is activated, it must be true, so the fields can be saved
             if (count($arrActiveSystemFrontendLanguages) == 1) {
                 $boolLanguageIsActive = true;
             } elseif ($formId) {
                 $boolLanguageIsActive = isset($this->arrForms[$formId]['lang'][$langId]) && $this->arrForms[$formId]['lang'][$langId]['is_active'];
             } else {
                 $boolLanguageIsActive = $langId == FRONTEND_LANG_ID;
             }
             $arrLanguages[$intLanguageCounter % 3] .= '<input id="languagebar_' . $langId . '" ' . ($boolLanguageIsActive ? 'checked="checked"' : '') . ' type="checkbox" name="contactFormLanguages[' . $langId . ']" value="1" onclick="switchBoxAndTab(this, \'addFrom_' . $langId . '\');" /><label for="languagebar_' . $langId . '">' . contrexx_raw2xhtml($arrLanguage['name']) . ' [' . $arrLanguage['lang'] . ']</label><br />';
             $strJsTabToDiv .= 'arrTabToDiv["addFrom_' . $langId . '"] = "langTab_' . $langId . '";' . "\n";
             ++$intLanguageCounter;
         }
         $this->_objTpl->setVariable(array('TXT_CONTACT_LANGUAGE' => $_ARRAYLANG['TXT_CONTACT_LANGUAGE'], 'EDIT_LANGUAGES_1' => $arrLanguages[0], 'EDIT_LANGUAGES_2' => $arrLanguages[1], 'EDIT_LANGUAGES_3' => $arrLanguages[2], 'EDIT_JS_TAB_TO_DIV' => $strJsTabToDiv));
     }
     // TODO: this might be a bug. Shouldn't this be the MAX(of used IDs) when modifying a form
     $lastFieldId = 0;
     if (empty($_POST['saveForm'])) {
         // get the saved fields
         $fields = $this->getFormFields($formId);
         $recipients = $this->getRecipients($formId);
     } else {
         $fields = $this->_getFormFieldsFromPost();
         $recipients = $this->getRecipientsFromPost();
     }
     $objCrmLibrary = new \Cx\Modules\Crm\Controller\CrmLibrary('Crm');
     $memberships = array_keys($objCrmLibrary->getMemberships());
     $objCrmLibrary->getMembershipDropdown($this->_objTpl, $memberships, "contactMembership", $crmCustomerGroups);
     // make an empty one so at least one is parsed
     if (empty($fields)) {
         foreach ($arrActiveSystemFrontendLanguages as $lang) {
             $fields[0] = array('type' => 'text', 'order_id' => 0, 'is_required' => false, 'check_type' => 1, 'editType' => 'new');
             $fields[0]['lang'][$lang['id']] = array('name' => '', 'value' => '');
         }
     }
     if (!$formId) {
         $selectedInterfaceLanguage = FRONTEND_LANG_ID;
     } elseif (isset($this->arrForms[$formId]['lang'][FRONTEND_LANG_ID])) {
         $selectedInterfaceLanguage = FRONTEND_LANG_ID;
     } elseif (isset($this->arrForms[$formId]['lang'][\FWLanguage::getDefaultLangId()])) {
         $selectedInterfaceLanguage = \FWLanguage::getDefaultLangId();
     } elseif (count($this->arrForms[$formId]['lang'])) {
         $selectedInterfaceLanguage = key($this->arrForms[$formId]['lang']);
     }
     foreach (\FWLanguage::getLanguageArray() as $language) {
         if ($language['id'] == $selectedInterfaceLanguage && $language["frontend"] == 0) {
             $selectedInterfaceLanguage = \FWLanguage::getDefaultLangId();
         }
     }
     //Get the fallback languages array
     $fallBackArr = \FWLanguage::getFallbackLanguageArray();
     $strJsFallBackArr = '';
     foreach ($fallBackArr as $languageId => $fallBackLanguageId) {
         $strJsFallBackArr .= 'arrFallBackLang[' . $languageId . '] = "' . $fallBackLanguageId . '";' . "\n";
     }
     $this->_objTpl->setVariable(array('FALL_BACK_LANGUAGES' => $strJsFallBackArr, 'DEFAULT_LANGUAGE' => \FWLanguage::getDefaultLangId()));
     foreach ($arrActiveSystemFrontendLanguages as $langId => $lang) {
         $isSelectedInterfaceLanguage = $langId == $selectedInterfaceLanguage;
         $langVars = array('is_active' => $isSelectedInterfaceLanguage, 'name' => '', 'text' => '', 'feedback' => '', 'subject' => '', 'mailTemplate' => self::formMailTemplate);
         if (isset($this->arrForms[$formId]['lang'][$langId])) {
             $langVars = $this->arrForms[$formId]['lang'][$langId];
             $langVars['mailTemplate'] = preg_replace('/\\{([A-Z0-9_]*?)\\}/', '[[\\1]]', $langVars['mailTemplate']);
         }
         if (isset($this->arrForms[$formId]['lang'][$fallBackArr[$lang['id']]])) {
             $optionalLanguageId = $fallBackArr[$lang['id']];
         } elseif (isset($this->arrForms[$formId]['lang'][\FWLanguage::getDefaultLangId()])) {
             $optionalLanguageId = \FWLanguage::getDefaultLangId();
         } else {
             $optionalLanguageId = key($this->arrForms[$formId]['lang']);
         }
         $this->_objTpl->setVariable(array('LANG_ID' => $langId, 'LANG_NAME' => contrexx_raw2xhtml($lang['name']), 'TAB_CLASS_NAME' => $isSelectedInterfaceLanguage ? 'active' : 'inactive', 'CONTACT_LANGTAB_DISPLAY' => $langVars['is_active'] ? 'display:inline;' : 'display:none;'));
         $this->_objTpl->parse('languageTabs');
         $this->_objTpl->setVariable(array('LANG_ID' => $lang['id'], 'LANG_NAME' => contrexx_raw2xhtml($lang['name']), 'LANG_FORM_DISPLAY' => $isSelectedInterfaceLanguage ? 'block' : 'none', 'CONTACT_FORM_MAIL_TEMPLATE_HIDDEN' => !empty($langVars['mailTemplate']) ? contrexx_raw2xhtml($langVars['mailTemplate']) : contrexx_raw2xhtml($this->arrForms[$formId]['lang'][$optionalLanguageId]['mailTemplate']), 'CONTACT_FORM_SUBJECT' => !empty($langVars['subject']) ? contrexx_raw2xhtml($langVars['subject']) : contrexx_raw2xhtml($this->arrForms[$formId]['lang'][$optionalLanguageId]['subject'])));
         $this->_objTpl->parse('notificationLanguageForm');
         $this->_objTpl->setVariable(array('CONTACT_FORM_ID' => $formId, 'LANG_ID' => $lang['id'], 'LANG_FORM_DISPLAY' => $isSelectedInterfaceLanguage ? 'block' : 'none', 'CONTACT_FORM_NAME' => !empty($langVars['name']) ? contrexx_raw2xhtml($langVars['name']) : contrexx_raw2xhtml($this->arrForms[$formId]['lang'][$optionalLanguageId]['name']), 'CONTACT_FORM_FIELD_NEXT_ID' => $lastFieldId + 1, 'CONTACT_FORM_TEXT_HIDDEN' => !empty($langVars['text']) ? contrexx_raw2xhtml($langVars['text']) : contrexx_raw2xhtml($this->arrForms[$formId]['lang'][$optionalLanguageId]['text']), 'CONTACT_FORM_FEEDBACK_HIDDEN' => !empty($langVars['feedback']) ? contrexx_raw2xhtml($langVars['feedback']) : contrexx_raw2xhtml($this->arrForms[$formId]['lang'][$optionalLanguageId]['feedback']), 'CONTACT_FORM_RECIPIENT_NEXT_SORT' => $this->getHighestSortValue($formId) + 2, 'CONTACT_FORM_RECIPIENT_NEXT_ID' => $this->getLastRecipientId(true) + 2, 'CONTACT_FORM_FIELD_NEXT_TEXT_TPL' => $this->_getFormFieldAttribute($lastFieldId + 1, 'text', '', $isSelectedInterfaceLanguage, $lang['id']), 'CONTACT_FORM_FIELD_LABEL_NEXT_TPL' => $this->_getFormFieldAttribute($lastFieldId + 1, 'label', '', $isSelectedInterfaceLanguage, $lang['id']), 'CONTACT_FORM_FIELD_CHECK_MENU_NEXT_TPL' => $this->_getFormFieldCheckTypesMenu('contactFormFieldCheckType[' . ($lastFieldId + 1) . ']', 'contactFormFieldCheckType_' . ($lastFieldId + 1), 'text', 1), 'CONTACT_FORM_FIELD_CHECK_MENU_TPL' => $this->_getFormFieldCheckTypesMenu('contactFormFieldCheckType[0]', 'contactFormFieldCheckType_0', 'text', 1), 'CONTACT_FORM_FIELD_CHECK_BOX_NEXT_TPL' => $this->_getFormFieldRequiredCheckBox('contactFormFieldRequired[' . ($lastFieldId + 1) . ']', 'contactFormFieldRequired_' . ($lastFieldId + 1), 'text', false), 'CONTACT_FORM_FIELD_CHECK_BOX_TPL' => $this->_getFormFieldRequiredCheckBox('contactFormFieldRequired[0]', 'contactFormFieldRequired_0', 'text', false), 'CONTACT_ACTION_TITLE' => $actionTitle, 'CONTACT_FORM_FIELD_TEXT_TPL' => $this->_getFormFieldAttribute(0, 'text', '', false), 'CONTACT_FORM_FIELD_LABEL_TPL' => $this->_getFormFieldAttribute(0, 'label', '', false), 'CONTACT_FORM_FIELD_CHECKBOX_TPL' => $this->_getFormFieldAttribute(0, 'checkbox', 0), 'CONTACT_FORM_FIELD_COUNTRY_TPL' => $this->_getFormFieldAttribute(0, 'country', '', true, 0), 'CONTACT_FORM_FIELD_ACCESS_COUNTRY_TPL' => $this->_getFormFieldAttribute(0, 'access_country', '', true, 0), 'CONTACT_FORM_FIELD_CHECKBOX_GROUP_TPL' => $this->_getFormFieldAttribute(0, 'checkboxGroup', '', false), 'CONTACT_FORM_FIELD_DATE_TPL' => $this->_getFormFieldAttribute(0, 'date', '', false), 'CONTACT_FORM_FIELD_DATETIME_TPL' => $this->_getFormFieldAttribute(0, 'datetime', '', false), 'CONTACT_FORM_FIELD_HIDDEN_TPL' => $this->_getFormFieldAttribute(0, 'hidden', '', false), 'CONTACT_FORM_FIELD_RADIO_TPL' => $this->_getFormFieldAttribute(0, 'radio', '', false), 'CONTACT_FORM_FIELD_SELECT_TPL' => $this->_getFormFieldAttribute(0, 'select', '', false)));
         $this->_objTpl->parse('languageForm');
     }
     $this->_objTpl->setVariable('CONTACT_ACTIVE_LANG_NAME', contrexx_raw2xhtml($arrActiveSystemFrontendLanguages[$selectedInterfaceLanguage]['name']));
     $counter = 1;
     foreach ($fields as $fieldID => $field) {
         $realFieldID = $formId > 0 ? $fieldID : $counter;
         $fieldType = $field['type'] == 'special' ? $field['special_type'] : $field['type'];
         $first = true;
         /**
         While copying a template, the edittype of the field must be 'new'
         */
         if ($copy) {
             $field['editType'] = 'new';
         }
         foreach ($arrActiveSystemFrontendLanguages as $langId => $lang) {
             if ($formId) {
                 $isActive = $langId == $selectedInterfaceLanguage;
             } else {
                 // when creating a new form, the form shall be created for the currently selected frontend language
                 $isActive = $lang['id'] == FRONTEND_LANG_ID;
             }
             $show = $first && $isActive;
             if (isset($field['lang'][$fallBackArr[$lang['id']]])) {
                 $optionalLanguageId = $fallBackArr[$lang['id']];
             } elseif (isset($field['lang'][\FWLanguage::getDefaultLangId()])) {
                 $optionalLanguageId = \FWLanguage::getDefaultLangId();
             } else {
                 $optionalLanguageId = key($field['lang']);
             }
             $this->_objTpl->setVariable(array('LANG_ID' => $lang['id'], 'LANG_NAME_DISPLAY' => $show ? 'block' : 'none', 'LANG_VALUE_DISPLAY' => $show ? 'block' : 'none', 'FORM_FIELD_NAME' => isset($field['lang'][$lang['id']]) ? contrexx_raw2xhtml($field['lang'][$lang['id']]['name']) : contrexx_raw2xhtml($field['lang'][$optionalLanguageId]['name']), 'CONTACT_FORM_FIELD_VALUE' => $this->_getFormFieldAttribute($realFieldID, $fieldType, isset($field['lang'][$lang['id']]) ? contrexx_raw2xhtml($field['lang'][$lang['id']]['value']) : contrexx_raw2xhtml($field['lang'][$optionalLanguageId]['value']), $show, $lang['id'])));
             $this->_objTpl->parse('formFieldName');
             $this->_objTpl->parse('formFieldValue');
             if ($isActive) {
                 $first = false;
             }
         }
         $this->_objTpl->setVariable(array('CONTACT_FORM_FIELD_TYPE_MENU' => $this->_getFormFieldTypesMenu('contactFormFieldType[' . $realFieldID . ']', $fieldType, 'id="contactFormFieldType_' . $realFieldID . '" style="width:110px;" ' . 'class="contactFormFieldType" onchange="setFormFieldAttributeBox(this.getAttribute(\'id\'),this.value)"'), 'FORM_FIELD_CHECK_BOX' => $this->_getFormFieldRequiredCheckBox('contactFormFieldRequired[' . $realFieldID . ']', 'contactFormFieldRequired_' . $realFieldID, $fieldType, $field['is_required']), 'FORM_FIELD_CHECK_MENU' => $this->_getFormFieldCheckTypesMenu('contactFormFieldCheckType[' . $realFieldID . ']', 'contactFormFieldCheckType_' . $realFieldID, $fieldType, $field['check_type']), 'FORM_FIELD_ID' => $realFieldID, 'FORM_FIELD_TYPE' => $field['editType'], 'ROW_CLASS_NAME' => 'row' . ($counter % 2 == 0 ? '1' : '2')));
         $counter++;
         $this->_objTpl->parse('formField');
     }
     if (!$copy && $formId > 0) {
         $jsSubmitFunction = "updateContentSite()";
     } else {
         $jsSubmitFunction = "createContentSite()";
     }
     $this->_objTpl->setVariable(array('CONTACT_FORM_SHOW_FORM_YES' => $showForm ? 'checked="checked"' : '', 'CONTACT_FORM_SHOW_FORM_NO' => $showForm ? '' : 'checked="checked"', 'CONTACT_FORM_USE_CAPTCHA_YES' => $useCaptcha ? 'checked="checked"' : '', 'CONTACT_FORM_USE_CAPTCHA_NO' => $useCaptcha ? '' : 'checked="checked"', 'CONTACT_FORM_USE_CRMMODULE_YES' => $saveDataInCRM ? 'checked="checked"' : '', 'CONTACT_FORM_USE_CRMMODULE_NO' => $saveDataInCRM ? '' : 'checked="checked"', 'CONTACT_FORM_USE_CUSTOM_STYLE_YES' => $useCustomStyle ? 'checked="checked"' : '', 'CONTACT_FORM_USE_CUSTOM_STYLE_NO' => $useCustomStyle ? '' : 'checked="checked"', 'CONTACT_FORM_SEND_HTML_MAIL' => $sendHtmlMail ? 'checked="checked"' : '', 'CONTACT_MAIL_TEMPLATE_STYLE' => $sendHtmlMail ? 'table-row' : 'none', 'CONTACT_FORM_SEND_COPY_YES' => $sendCopy ? 'checked="checked"' : '', 'CONTACT_FORM_SEND_COPY_NO' => $sendCopy ? '' : 'checked="checked"', 'CONTACT_FORM_USE_EMAIL_OF_SENDER_YES' => $useEmailOfSender ? 'checked="checked"' : '', 'CONTACT_FORM_USE_EMAIL_OF_SENDER_NO' => $useEmailOfSender ? '' : 'checked="checked"', 'CONTACT_FORM_SEND_ATTACHMENT' => $sendAttachment ? 'checked="checked"' : '', 'CONTACT_FORM_EMAIL' => contrexx_raw2xhtml($emails), 'CONTACT_JS_SUBMIT_FUNCTION' => $jsSubmitFunction, 'FORM_COPY' => intval($copy), 'CONTACT_FORM_TEXT' => new \Cx\Core\Wysiwyg\Wysiwyg('contactFormTextEditor'), 'CONTACT_FORM_FEEDBACK' => new \Cx\Core\Wysiwyg\Wysiwyg('contactFormFeedbackEditor'), 'CONTACT_MAIL_TEMPLATE' => new \Cx\Core\Wysiwyg\Wysiwyg('contactMailTemplateEditor', '', 'fullpage'), 'TXT_CONTACT_FORM_FIELDS' => $_ARRAYLANG['TXT_CONTACT_FORM_FIELDS'], 'TXT_CONTACT_DELETE' => $_ARRAYLANG['TXT_CONTACT_DELETE'], 'TXT_CONTACT_MOVE_UP' => $_ARRAYLANG['TXT_CONTACT_MOVE_UP'], 'TXT_CONTACT_MOVE_DOWN' => $_ARRAYLANG['TXT_CONTACT_MOVE_DOWN'], 'TXT_CONTACT_NAME' => $_ARRAYLANG['TXT_CONTACT_NAME'], 'TXT_CONTACT_REGEX_EMAIL' => $_ARRAYLANG['TXT_CONTACT_REGEX_EMAIL'], 'TXT_CONTACT_ADD_OTHER_FIELD' => $_ARRAYLANG['TXT_CONTACT_ADD_OTHER_FIELD'], 'TXT_CONTACT_ADD_RECIPIENT' => $_ARRAYLANG['TXT_CONTACT_ADD_RECIPIENT'], 'TXT_CONTACT_FORM_VALUES' => $_ARRAYLANG['TXT_CONTACT_FORM_VALUES'], 'TXT_FORM_FIELDS' => $_ARRAYLANG['TXT_FORM_FIELDS'], 'TXT_FORM_RECIPIENTS' => $_ARRAYLANG['TXT_FORM_RECIPIENTS'], 'TXT_ADVANCED_SETTINGS' => $_ARRAYLANG['TXT_ADVANCED_SETTINGS'], 'TXT_CONTACT_FORM_NOTIFICATION' => $_ARRAYLANG['TXT_CONTACT_FORM_NOTIFICATION'], 'TXT_CONTACT_ID' => $_ARRAYLANG['TXT_CONTACT_ID'], 'TXT_CONTACT_NAME' => $_ARRAYLANG['TXT_CONTACT_NAME'], 'TXT_CONTACT_RECEIVER_ADDRESSES' => $_ARRAYLANG['TXT_CONTACT_RECEIVER_ADDRESSES'], 'TXT_CONTACT_RECEIVER_ADDRESSES_SELECTION' => $_ARRAYLANG['TXT_CONTACT_RECEIVER_ADDRESSES_SELECTION'], 'TXT_CONTACT_SAVE' => $_ARRAYLANG['TXT_CONTACT_SAVE'], 'TXT_CONTACT_SEPARATE_MULTIPLE_VALUES_BY_COMMA' => $_ARRAYLANG['TXT_CONTACT_SEPARATE_MULTIPLE_VALUES_BY_COMMA'], 'TXT_CONTACT_SEND_ATTACHMENT_DESCRIPTION' => $_ARRAYLANG['TXT_CONTACT_SEND_ATTACHMENT_DESCRIPTION'], 'TXT_CONTACT_FORM_DESC' => $_ARRAYLANG['TXT_CONTACT_FORM_DESC'], 'TXT_CONTACT_FEEDBACK' => $_ARRAYLANG['TXT_CONTACT_FEEDBACK'], 'TXT_CONTACT_VALUE_S' => $_ARRAYLANG['TXT_CONTACT_VALUE_S'], 'TXT_CONTACT_FIELD_NAME' => $_ARRAYLANG['TXT_CONTACT_FIELD_NAME'], 'TXT_CONTACT_TYPE' => $_ARRAYLANG['TXT_CONTACT_TYPE'], 'TXT_CONTACT_MANDATORY_FIELD' => $_ARRAYLANG['TXT_CONTACT_MANDATORY_FIELD'], 'TXT_CONTACT_FEEDBACK_EXPLANATION' => $_ARRAYLANG['TXT_CONTACT_FEEDBACK_EXPLANATION'], 'TXT_CONTACT_CONFIRM_CREATE_CONTENT_SITE' => $_ARRAYLANG['TXT_CONTACT_CONFIRM_CREATE_CONTENT_SITE'], 'TXT_CONTACT_CONFIRM_UPDATE_CONTENT_SITE' => $_ARRAYLANG['TXT_CONTACT_CONFIRM_UPDATE_CONTENT_SITE'], 'TXT_CONTACT_SHOW_FORM_AFTER_SUBMIT' => $_ARRAYLANG['TXT_CONTACT_SHOW_FORM_AFTER_SUBMIT'], 'TXT_CONTACT_YES' => $_ARRAYLANG['TXT_CONTACT_YES'], 'TXT_CONTACT_NO' => $_ARRAYLANG['TXT_CONTACT_NO'], 'TXT_CONTACT_CAPTCHA_PROTECTION' => $_ARRAYLANG['TXT_CONTACT_CAPTCHA_PROTECTION'], 'TXT_CONTACT_SAVE_DATA_IN_CRM' => $_ARRAYLANG['TXT_CONTACT_SAVE_DATA_IN_CRM'], 'TXT_CONTACT_CAPTCHA' => $_ARRAYLANG['TXT_CONTACT_CAPTCHA'], 'TXT_CONTACT_CAPTCHA_DESCRIPTION' => $_ARRAYLANG['TXT_CONTACT_CAPTCHA_DESCRIPTION'], 'TXT_CONTACT_SEND_COPY_DESCRIPTION' => $_ARRAYLANG['TXT_CONTACT_SEND_COPY_DESCRIPTION'], 'TXT_CONTACT_SEND_COPY' => $_ARRAYLANG['TXT_CONTACT_SEND_COPY'], 'TXT_CONTACT_USE_EMAIL_OF_SENDER_DESCRIPTION' => $_ARRAYLANG['TXT_CONTACT_USE_EMAIL_OF_SENDER_DESCRIPTION'], 'TXT_CONTACT_USE_EMAIL_OF_SENDER' => $_ARRAYLANG['TXT_CONTACT_USE_EMAIL_OF_SENDER'], 'TXT_CONTACT_SEND_ATTACHMENT' => $_ARRAYLANG['TXT_CONTACT_SEND_ATTACHMENT'], 'TXT_CONTACT_SEND_HTML_MAIL' => $_ARRAYLANG['TXT_CONTACT_SEND_HTML_MAIL'], 'TXT_CONTACT_CUSTOM_STYLE_DESCRIPTION' => $_ARRAYLANG['TXT_CONTACT_CUSTOM_STYLE_DESCRIPTION'], 'TXT_CONTACT_CUSTOM_STYLE' => $_ARRAYLANG['TXT_CONTACT_CUSTOM_STYLE'], 'TXT_CONTACT_SET_MANDATORY_FIELD' => $_ARRAYLANG['TXT_CONTACT_SET_MANDATORY_FIELD'], 'TXT_CONTACT_RECIPIENT_ALREADY_SET' => $_ARRAYLANG['TXT_CONTACT_RECIPIENT_ALREADY_SET'], 'TXT_CONTACT_EMAIL' => $_ARRAYLANG['TXT_CONTACT_EMAIL'], 'TXT_CONTACT_NAME' => $_ARRAYLANG['TXT_CONTACT_NAME'], 'TXT_CONTACT_SUBJECT' => $_ARRAYLANG['TXT_CONTACT_SUBJECT'], 'TXT_CONTACT_MAIL_TEMPLATE' => $_ARRAYLANG['TXT_CONTACT_MAIL_TEMPLATE'], 'TXT_NAME' => $_ARRAYLANG['TXT_CONTACT_FORM_NAME'], 'TXT_VALUES' => $_ARRAYLANG['TXT_CONTACT_FORM_VALUES'], 'TXT_TYPE' => $_ARRAYLANG['TXT_CONTACT_TYPE'], 'TXT_MANDATORY_FIELD' => $_ARRAYLANG['TXT_CONTACT_MANDATORY_FIELD'], 'TXT_CONTACT_VALIDATION' => $_ARRAYLANG['TXT_CONTACT_VALIDATION'], 'TXT_ADVANCED_VIEW' => $_ARRAYLANG['TXT_ADVANCED_VIEW'], 'TXT_SIMPLIFIED_VIEW' => $_ARRAYLANG['TXT_SIMPLIFIED_VIEW'], 'CONTACT_FORM_FIELDS_TITLE' => $_ARRAYLANG['TXT_CONTACT_FORM_FIELD_TITLE'], 'CONTACT_FORM_RECIPIENTS_TITLE' => $_ARRAYLANG['CONTACT_FORM_RECIPIENTS_TITLE'], 'CONTACT_FORM_SETTINGS' => $_ARRAYLANG['CONTACT_FORM_SETTINGS'], 'TXT_CONTACT_CHOOSE_MEMBERSHIPS' => $_ARRAYLANG['TXT_CONTACT_CHOOSE_MEMBERSHIPS'], 'TXT_CONTACT_ASSIGN_TO_CRM_CUSTOMER_GROUP' => $_ARRAYLANG['TXT_CONTACT_ASSIGN_TO_CRM_CUSTOMER_GROUP'], 'TXT_CONTACT_ASSIGN_CRM_CUSTOMER_GROUP_DESCRIPTION' => $_ARRAYLANG['TXT_CONTACT_ASSIGN_CRM_CUSTOMER_GROUP_DESCRIPTION']));
     if (empty($recipients)) {
         // make an empty one so there's at least one
         $recipients[0] = array('id' => 1, 'email' => '', 'editType' => 'new');
         foreach ($arrActiveSystemFrontendLanguages as $langID => $lang) {
             $recipients[0]['lang'][$langID] = '';
         }
     }
     foreach ($recipients as $recipientID => $recipientField) {
         if ($copy) {
             $recipients[$recipientID]['editType'] = 'new';
         }
     }
     // parse the recipients
     $this->_showRecipients($recipients);
 }