function getInputfield($intView, $arrInputfield, $intEntryId = null)
 {
     global $objDatabase, $_LANGID, $objInit, $_ARRAYLANG;
     $intId = intval($arrInputfield['id']);
     switch ($intView) {
         default:
         case 1:
             if (isset($intEntryId) && $intEntryId != 0) {
                 $objInputfieldValue = $objDatabase->Execute("\n                        SELECT\n                            `value`\n                        FROM\n                            " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_rel_entry_inputfields\n                        WHERE\n                            field_id=" . $intId . "\n                        AND\n                            entry_id=" . $intEntryId . "\n                        LIMIT 1\n                    ");
                 $strValue = intval($objInputfieldValue->fields['value']);
             } else {
                 $strValue = null;
             }
             if (empty($strValue)) {
                 if (substr($arrInputfield['default_value'][0], 0, 2) == '[[') {
                     $objPlaceholder = new \Cx\Modules\MediaDir\Controller\MediaDirectoryPlaceholder($this->moduleName);
                     $strValue = $objPlaceholder->getPlaceholder($arrInputfield['default_value'][0]);
                 } else {
                     $strValue = empty($arrInputfield['default_value'][$_LANGID]) ? $arrInputfield['default_value'][0] : $arrInputfield['default_value'][$_LANGID];
                 }
             }
             if (!empty($arrInputfield['info'][0])) {
                 $strInfoValue = empty($arrInputfield['info'][$_LANGID]) ? 'title="' . $arrInputfield['info'][0] . '"' : 'title="' . $arrInputfield['info'][$_LANGID] . '"';
                 $strInfoClass = 'mediadirInputfieldHint';
             } else {
                 $strInfoValue = null;
                 $strInfoClass = '';
             }
             if ($objInit->mode == 'backend') {
                 $strInputfield = '<select name="' . $this->moduleNameLC . 'Inputfield[' . $intId . ']" id="' . $this->moduleNameLC . 'Inputfield_' . $intId . '" class="' . $this->moduleNameLC . 'InputfieldDropdown" style="width: 302px">';
             } else {
                 $strInputfield = '<select name="' . $this->moduleNameLC . 'Inputfield[' . $intId . ']" id="' . $this->moduleNameLC . 'Inputfield_' . $intId . '" class="' . $this->moduleNameLC . 'InputfieldDropdown ' . $strInfoClass . '" ' . $strInfoValue . '>';
             }
             $strInputfieldOptions = \Cx\Core\Country\Controller\Country::getMenuoptions($strValue);
             $strInputfield .= $strInputfieldOptions . '</select>';
             return $strInputfield;
             break;
         case 2:
             //search View
             $country = \Cx\Core\Country\Controller\Country::getNameArray(true, $_LANGID);
             foreach ($country as $id => $name) {
                 $strInputfieldOptions .= '<option value="' . $id . '">' . $name . '</option>';
             }
             $strInputfield = '<select name="' . $intId . '" class="' . $this->moduleName . 'InputfieldSearch">';
             $strInputfield .= '<option  value="">' . $_ARRAYLANG['TXT_MEDIADIR_PLEASE_CHOOSE'] . '</option>';
             $strInputfield .= $strInputfieldOptions . '</select>';
             return $strInputfield;
             break;
     }
 }
Example #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();
 }
 /**
  * Stores countries settings
  *
  * Returns null if nothing is changed.
  * @return    boolean               True on success, false on failure,
  *                                  or null on noop.
  */
 private static function storeCountries()
 {
     // Skip if not submitted or if the list is empty.
     // At least one Country needs to be active.
     // "list1" contains the active Country IDs
     if (empty($_POST['countries']) || empty($_POST['list1'])) {
         return null;
     }
     $list = contrexx_input2raw($_POST['list1']);
     sort($list);
     $arrCountryIdActive = array_keys(\Cx\Core\Country\Controller\Country::getNameArray(true));
     sort($arrCountryIdActive);
     if ($list == $arrCountryIdActive) {
         return null;
     }
     self::$changed = true;
     $strCountryIdActive = join(',', $list);
     return \Cx\Core\Country\Controller\Country::activate($strCountryIdActive);
 }
Example #4
0
    function getSourceCode($id, $lang, $preview = false, $show = false)
    {
        global $_ARRAYLANG, $objInit, $objDatabase;
        $hasFileInput = false;
        //remember if we added a file input -> this would need the uploader to be initialized
        $arrFields = $this->getFormFields($id);
        $sourcecode = array();
        $this->initContactForms();
        $sourcecode[] = '<div class="text-warning" id="contactFeedback">{CONTACT_FEEDBACK_TEXT}</div>
<div id="contactDescription"><!-- BEGIN formText -->' . ($preview ? $this->arrForms[$id]['lang'][$lang]['text'] : '{' . $id . '_FORM_TEXT}') . '<!-- END formText --></div>
<div class="text-danger" id="contactFormError">' . ($preview ? $_ARRAYLANG['TXT_NEW_ENTRY_ERORR'] : '{TXT_NEW_ENTRY_ERORR}') . '</div>
<!-- BEGIN contact_form -->
<form role="form" id="contactForm' . ($this->arrForms[$id]['useCustomStyle'] > 0 ? '_' . $id : '') . '" class="contactForm' . ($this->arrForms[$id]['useCustomStyle'] > 0 ? '_' . $id : '') . '" action="' . ($preview ? '../' : '') . 'index.php?section=Contact&amp;cmd=' . $id . '" method="post" enctype="multipart/form-data" onsubmit="return checkAllFields();">
    <fieldset id="contactFrame">
    <legend>' . ($preview ? $this->arrForms[$id]['lang'][$lang]['name'] : '{' . $id . '_FORM_NAME}') . '</legend>';
        foreach ($arrFields as $fieldId => $arrField) {
            if ($arrField['is_required']) {
                $required = '<strong class="is_required">*</strong>';
            } else {
                $required = '';
            }
            if ($arrField['type'] != 'fieldset' && $arrField['type'] != 'hidden') {
                $sourcecode[] = '<div class="contact row form-group">';
            }
            switch ($arrField['type']) {
                case 'label':
                case 'hidden':
                case 'horizontalLine':
                case 'checkbox':
                    break;
                case 'fieldset':
                    $sourcecode[] = '</fieldset>';
                    $sourcecode[] = '<fieldset id="contactFormFieldId_' . $fieldId . '">';
                    $sourcecode[] = "<legend>" . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['name']) : "{" . $fieldId . "_LABEL}") . "</legend>";
                    break;
                case 'checkboxGroup':
                case 'radio':
                    $sourcecode[] = '<label>' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['name']) : "{" . $fieldId . "_LABEL}") . $required . '</label>';
                    break;
                case 'date':
                    $sourcecode[] = '<label for="contactFormFieldId_' . $fieldId . '">' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['name']) : "{" . $fieldId . "_LABEL}") . $required . '</label>';
                    break;
                case 'datetime':
                    $sourcecode[] = '<label for="contactFormFieldId_' . $fieldId . '">' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['name']) : "{" . $fieldId . "_LABEL}") . $required . '</label>';
                    break;
                default:
                    $sourcecode[] = '<label for="contactFormFieldId_' . $fieldId . '">' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['name']) : "{" . $fieldId . "_LABEL}") . $required . '</label>';
            }
            $arrField['lang'][$lang]['value'] = preg_replace('/\\[\\[([A-Z0-9_]+)\\]\\]/', '{$1}', $arrField['lang'][$lang]['value']);
            $fieldType = $arrField['type'] != 'special' ? $arrField['type'] : $arrField['special_type'];
            switch ($fieldType) {
                case 'label':
                    $sourcecode[] = '<div class="contactFormClass_' . $arrField['type'] . '">' . contrexx_raw2xhtml($arrField['lang'][$lang]['value']) . '</div>';
                    break;
                case 'checkbox':
                    $sourcecode[] = '<div class="checkbox"><label for="contactFormFieldId_' . $fieldId . '"><input class="contactFormClass_' . $arrField['type'] . '" id="contactFormFieldId_' . $fieldId . '" type="checkbox" name="contactFormField_' . $fieldId . '" value="1" {SELECTED_' . $fieldId . '} />' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['name']) : "{" . $fieldId . "_LABEL}") . $required . '</label></div>';
                    break;
                case 'checkboxGroup':
                    $selectedLang = $preview ? FRONTEND_LANG_ID : $lang;
                    $sourcecode[] = '<div class="contactFormGroup" id="contactFormFieldId_' . $fieldId . '">';
                    $options = explode(',', $arrField['lang'][$selectedLang]['value']);
                    foreach ($options as $index => $option) {
                        $sourcecode[] = '<div class="checkbox"><label class="noCaption" for="contactFormField_' . $index . '_' . $fieldId . '"><input type="checkbox" class="contactFormClass_' . $arrField['type'] . '" name="contactFormField_' . $fieldId . '[]" id="contactFormField_' . $index . '_' . $fieldId . '" value="' . contrexx_raw2xhtml($option) . '" {SELECTED_' . $fieldId . '_' . $index . '}/>' . ($preview ? contrexx_raw2xhtml($option) : '{' . $fieldId . '_' . $index . '_VALUE}') . '</label></div>';
                    }
                    $sourcecode[] = '</div>';
                    break;
                case 'country':
                case 'access_country':
                    $sourcecode[] = '<select class="contactFormClass_' . $arrField['type'] . '" name="contactFormField_' . $fieldId . '" id="contactFormFieldId_' . $fieldId . '">';
                    if ($arrField['is_required'] == 1) {
                        $sourcecode[] = "<option value=\"" . ($preview ? $_ARRAYLANG['TXT_CONTACT_PLEASE_SELECT'] : '{TXT_CONTACT_PLEASE_SELECT}') . "\">" . ($preview ? $_ARRAYLANG['TXT_CONTACT_PLEASE_SELECT'] : '{TXT_CONTACT_PLEASE_SELECT}') . "</option>";
                    } else {
                        $sourcecode[] = "<option value=\"" . ($preview ? $_ARRAYLANG['TXT_CONTACT_NOT_SPECIFIED'] : '{TXT_CONTACT_NOT_SPECIFIED}') . "\">" . ($preview ? $_ARRAYLANG['TXT_CONTACT_NOT_SPECIFIED'] : '{TXT_CONTACT_NOT_SPECIFIED}') . "</option>";
                    }
                    if ($preview) {
                        $lang = $arrField['lang'][$lang]['name'];
                        $country = \Cx\Core\Country\Controller\Country::getNameArray(true, $lang);
                        foreach ($country as $id => $name) {
                            $sourcecode[] = "<option value=\"" . $name . "\" >" . $name . "</option>";
                        }
                    } else {
                        $sourcecode[] = "<!-- BEGIN field_" . $fieldId . " -->";
                        $sourcecode[] = "<option value=\"{" . $fieldId . "_VALUE}\" {SELECTED_" . $fieldId . "} >{" . $fieldId . "_VALUE}</option>";
                        $sourcecode[] = "<!-- END field_" . $fieldId . " -->";
                    }
                    $sourcecode[] = "</select>";
                    break;
                case 'date':
                    $sourcecode[] = '<input class="contactFormClass_' . $arrField['type'] . ' date" type="text" name="contactFormField_' . $fieldId . '" id="contactFormFieldId_' . $fieldId . '" value="{' . $fieldId . '_VALUE}" />';
                    break;
                case 'datetime':
                    $sourcecode[] = '<input class="contactFormClass_' . $arrField['type'] . ' datetime" type="text" name="contactFormField_' . $fieldId . '" id="contactFormFieldId_' . $fieldId . '" value="{' . $fieldId . '_VALUE}" />';
                    break;
                case 'access_birthday':
                    $sourcecode[] = '<input class="contactFormClass_' . $arrField['type'] . ' date" id="contactFormFieldId_' . $fieldId . '" type="text" name="contactFormField_' . $fieldId . '" value="' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['value']) : '{' . $fieldId . '_VALUE}') . '" />';
                    break;
                case 'file':
                case 'multi_file':
                    $sourcecode[] = '<div class="contactFormUpload" id="contactFormUpload_' . $fieldId . '">{CONTACT_UPLOADER_FOLDER_WIDGET_' . $fieldId . '}<input type="hidden" name="contactFormUploadId_' . $fieldId . '" value = "{CONTACT_UPLOADER_ID_' . $fieldId . '}"/>';
                    $sourcecode[] = '<input class="contactFormClass_' . $arrField['type'] . '" id="contactFormFieldId_' . $fieldId . '" type="file" name="contactFormField_' . $fieldId . '" disabled="disabled"/></div>';
                    break;
                case 'hidden':
                    $sourcecode[] = '<input class="contactFormClass_' . $arrField['type'] . '" id="contactFormFieldId_' . $fieldId . '" type="hidden" name="contactFormField_' . $fieldId . '" value="' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['value']) : "{" . $fieldId . "_VALUE}") . '" />';
                    break;
                case 'horizontalLine':
                    $sourcecode[] = '<hr />';
                    break;
                case 'password':
                    $sourcecode[] = '<input class="contactFormClass_' . $arrField['type'] . '" id="contactFormFieldId_' . $fieldId . '" type="password" name="contactFormField_' . $fieldId . '" value="" />';
                    break;
                case 'radio':
                    $selectedLang = $preview ? FRONTEND_LANG_ID : $lang;
                    $sourcecode[] = '<div class="contactFormGroup" id="contactFormFieldId_' . $fieldId . '">';
                    $options = explode(',', $arrField['lang'][$selectedLang]['value']);
                    foreach ($options as $index => $option) {
                        $sourcecode[] .= '<div class="radio"><label class="noCaption" for="contactFormField_' . $index . '_' . $fieldId . '"><input class="contactFormClass_' . $arrField['type'] . '" type="radio" name="contactFormField_' . $fieldId . '" id="contactFormField_' . $index . '_' . $fieldId . '" value="' . ($preview ? contrexx_raw2xhtml($option) : '{' . $fieldId . '_' . $index . '_VALUE}') . '" {SELECTED_' . $fieldId . '_' . $index . '} />' . ($preview ? contrexx_raw2xhtml($option) : '{' . $fieldId . '_' . $index . '_VALUE}') . '</label></div>';
                    }
                    $sourcecode[] = '</div>';
                    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) {
                        $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);
                case 'select':
                    $sourcecode[] = '<select class="contactFormClass_' . $arrField['type'] . '" name="contactFormField_' . $fieldId . '" id="contactFormFieldId_' . $fieldId . '">';
                    if ($preview) {
                        $options = explode(',', $arrField['lang'][FRONTEND_LANG_ID]['value']);
                        foreach ($options as $index => $option) {
                            $sourcecode[] = "<option value='" . contrexx_raw2xhtml($option) . "'>" . contrexx_raw2xhtml($option) . "</option>";
                        }
                    } else {
                        $sourcecode[] = "<!-- BEGIN field_" . $fieldId . " -->";
                        $sourcecode[] = "<option value='{" . $fieldId . "_VALUE}' {SELECTED_" . $fieldId . "}>" . '{' . $fieldId . '_VALUE}' . "</option>";
                        $sourcecode[] = "<!-- END field_" . $fieldId . " -->";
                    }
                    $sourcecode[] = "</select>";
                    break;
                case 'textarea':
                    $sourcecode[] = '<textarea class="contactFormClass_' . $arrField['type'] . '" name="contactFormField_' . $fieldId . '" id="contactFormFieldId_' . $fieldId . '" rows="5" cols="20">{' . $fieldId . '_VALUE}</textarea>';
                    break;
                case 'recipient':
                    $sourcecode[] = '<select class="contactFormClass_' . $arrField['type'] . '" name="contactFormField_' . $fieldId . '" id="contactFormFieldId_' . $fieldId . '">';
                    if ($preview) {
                        foreach ($this->arrForms[$id]['recipients'] as $index => $arrRecipient) {
                            $sourcecode[] = "<option value='" . $index . "'>" . $arrRecipient['lang'][$lang] . "</option>";
                        }
                    } else {
                        $sourcecode[] = "<!-- BEGIN field_" . $fieldId . " -->";
                        $sourcecode[] = "<option value='{" . $fieldId . "_VALUE_ID}' {SELECTED_" . $fieldId . "} >" . '{' . $fieldId . '_VALUE}' . "</option>";
                        $sourcecode[] = "<!-- END field_" . $fieldId . " -->";
                    }
                    $sourcecode[] = "</select>";
                    break;
                case 'fieldset':
                    break;
                default:
                    $sourcecode[] = '<input class="contactFormClass_' . $arrField['type'] . '" id="contactFormFieldId_' . $fieldId . '" type="text" name="contactFormField_' . $fieldId . '" value="' . ($preview ? contrexx_raw2xhtml($arrField['lang'][$lang]['value']) : '{' . $fieldId . '_VALUE}') . '" />';
                    break;
            }
            if ($arrField['type'] != 'fieldset' && $arrField['type'] != 'hidden') {
                $sourcecode[] = '</div>';
            }
        }
        if ($preview) {
            $themeId = $objInit->arrLang[FRONTEND_LANG_ID]['themesid'];
            if (($objRS = $objDatabase->SelectLimit("SELECT `foldername` FROM `" . DBPREFIX . "skins` WHERE `id` = " . $themeId, 1)) !== false) {
                $themePath = $objRS->fields['foldername'];
            }
            $sourcecode[] = '<link href="../core_modules/Contact/View/Style/form.css" rel="stylesheet" type="text/css" />';
            if ($this->arrForms[$id]['useCaptcha']) {
                $sourcecode[] = '<div class="contact row form-group">';
                $sourcecode[] = '<label>' . $_ARRAYLANG["TXT_CONTACT_CAPTCHA"] . '</label>';
                $sourcecode[] = \Cx\Core_Modules\Captcha\Controller\Captcha::getInstance()->getCode();
                $sourcecode[] = '</div>';
            }
        } else {
            $sourcecode[] = "<!-- BEGIN contact_form_captcha -->";
            $sourcecode[] = '<div class="contact row form-group">';
            $sourcecode[] = '<label>{TXT_CONTACT_CAPTCHA}</label>';
            $sourcecode[] = '{CONTACT_CAPTCHA_CODE}';
            $sourcecode[] = '</div>';
            $sourcecode[] = "<!-- END contact_form_captcha -->";
        }
        $sourcecode[] = '<div class="contact row form-group">';
        $sourcecode[] = '<input class="contactFormClass_button btn btn-default" type="submit" name="submitContactForm" value="' . ($preview ? $_ARRAYLANG['TXT_CONTACT_SUBMIT'] : '{TXT_CONTACT_SUBMIT}') . '" /><input class="contactFormClass_button btn btn-default" type="reset" value="' . ($preview ? $_ARRAYLANG['TXT_CONTACT_RESET'] : '{TXT_CONTACT_RESET}') . '" />';
        $sourcecode[] = '<input type="hidden" name="unique_id" value="{CONTACT_UNIQUE_ID}" />';
        $sourcecode[] = '</div>';
        $sourcecode[] = "</fieldset>";
        $sourcecode[] = "</form>";
        $sourcecode[] = "<!-- END contact_form -->";
        $sourcecode[] = $preview ? $this->_getJsSourceCode($id, $arrFields, $preview, $show) : "{CONTACT_JAVASCRIPT}";
        if ($show) {
            $sourcecode = preg_replace('/\\{([A-Z0-9_-]+)\\}/', '[[\\1]]', $sourcecode);
        }
        return implode("\n", $sourcecode);
    }
 /**
  * Get all countries.
  *
  * @access      public
  * @param       array       $arrIDs             ids of requested transactions
  * @param       integer     $offset             paging offset
  * @param       integer     $limit              paging limit
  * @return      array       $arrTransactions    contains all transactions
  * @return      boolean                         contains false if there are no transactions
  */
 public function get($arrIDs = array(), $offset = 0, $limit = 0)
 {
     $SQLWhere = '';
     if (is_array($arrIDs) && !empty($arrIDs)) {
         $arrIDs = array_map('intval', $arrIDs);
         $SQLWhere = ' WHERE (`transactions`.`id`=' . implode(' OR `transactions`.`id`=', $arrIDs) . ')';
     }
     $SQLLimit = '';
     if (!empty($offset) && !empty($limit)) {
         $SQLLimit = ' LIMIT ' . intval($offset) . ', ' . intval($limit);
     } else {
         if (empty($offset) && !empty($limit)) {
             $SQLLimit = ' LIMIT ' . intval($limit);
         }
     }
     $countries = \Cx\Core\Country\Controller\Country::getNameArray();
     $arrTransactions = array();
     $objResult = $this->objDatabase->Execute('
         SELECT
             `transactions`.`id`,
             `transactions`.`time`,
             `transactions`.`status`,
             `transactions`.`invoice_number`,
             `transactions`.`invoice_currency`,
             `transactions`.`invoice_amount`,
             `transactions`.`contact_title`,
             `transactions`.`contact_forename`,
             `transactions`.`contact_surname`,
             `transactions`.`contact_company`,
             `transactions`.`contact_street`,
             `transactions`.`contact_postcode`,
             `transactions`.`contact_place`,
             `countries`.`name` as `contact_country`,
             `transactions`.`contact_phone`,
             `transactions`.`contact_email`
         FROM `' . DBPREFIX . 'module_checkout_transactions` as `transactions`
         ' . $SQLWhere . '
         ORDER BY `transactions`.`id` DESC' . $SQLLimit);
     if ($objResult) {
         $i = 0;
         while (!$objResult->EOF) {
             $arrTransactions[$i]['id'] = $objResult->fields['id'];
             $arrTransactions[$i]['time'] = $objResult->fields['time'];
             $arrTransactions[$i]['status'] = $objResult->fields['status'];
             $arrTransactions[$i]['invoice_number'] = $objResult->fields['invoice_number'];
             $arrTransactions[$i]['invoice_currency'] = $objResult->fields['invoice_currency'];
             $arrTransactions[$i]['invoice_amount'] = $objResult->fields['invoice_amount'] / 100;
             $arrTransactions[$i]['contact_title'] = $objResult->fields['contact_title'];
             $arrTransactions[$i]['contact_forename'] = $objResult->fields['contact_forename'];
             $arrTransactions[$i]['contact_surname'] = $objResult->fields['contact_surname'];
             $arrTransactions[$i]['contact_company'] = $objResult->fields['contact_company'];
             $arrTransactions[$i]['contact_street'] = $objResult->fields['contact_street'];
             $arrTransactions[$i]['contact_postcode'] = $objResult->fields['contact_postcode'];
             $arrTransactions[$i]['contact_place'] = $objResult->fields['contact_place'];
             $arrTransactions[$i]['contact_country'] = $countries[$objResult->fields['contact_country']];
             $arrTransactions[$i]['contact_phone'] = $objResult->fields['contact_phone'];
             $arrTransactions[$i]['contact_email'] = $objResult->fields['contact_email'];
             $objResult->MoveNext();
             $i++;
         }
     }
     if (!empty($arrTransactions)) {
         return $arrTransactions;
     } else {
         return false;
     }
 }
 public function testGetAll()
 {
     $objCountries = Country::getNameArray();
     $this->assertNotEmpty($objCountries);
 }
 function _getFormFieldAttribute($id, $type, $attr, $show = true, $langid = 0)
 {
     global $_ARRAYLANG, $objDatabase;
     $field = "";
     $display = $show ? "block" : "none";
     switch ($type) {
         case 'text':
         case 'hidden':
         case 'special':
             $field .= "<div style=\"display: " . $display . ";\"  id=\"fieldValueTab_" . $id . "_" . $langid . "\" class=\"fieldValueTabs_" . $id . "\">";
             $field .= "<input style=\"width:308px;background: #FFFFFF;\" type=\"text\" name=\"contactFormFieldValue[" . $id . "][" . $langid . "]\" value=\"" . $attr . "\" />\n";
             $field .= "</div>";
             return $field;
             break;
         case 'label':
             $field .= "<div style=\"display: " . $display . ";\"  id=\"fieldValueTab_" . $id . "_" . $langid . "\" class=\"fieldValueTabs_" . $id . "\">";
             $field .= "<textarea style=\"width: 90%;background: #FFFFFF\" name=\"contactFormFieldValue[" . $id . "][" . $langid . "]\">" . $attr . "</textarea>\n";
             $field .= "</div>";
             return $field;
             break;
         case 'checkbox':
             /* Only one instance of checkbox is allowed for any number of active language */
             if ($show) {
                 return "<select style=\"width:331px;\" name=\"contactFormFieldValue[" . $id . "]\">\n\n                                    <option value=\"0\"" . ($attr == 0 ? ' selected="selected"' : '') . ">" . $_ARRAYLANG['TXT_CONTACT_NOT_SELECTED'] . "</option>\n\n                                    <option value=\"1\"" . ($attr == 1 ? ' selected="selected"' : '') . ">" . $_ARRAYLANG['TXT_CONTACT_SELECTED'] . "</option>\n\n                                </select>";
             }
             break;
         case 'country':
         case 'access_country':
             /* Only one instance of country select is allowed for any number of active language */
             if ($show) {
                 $field = "<select style=\"width:331px;\" name=\"contactFormFieldValue[" . $id . "]\">\n";
                 $field .= "<option value=\"" . $_ARRAYLANG['TXT_CONTACT_PLEASE_SELECT'] . "\" >" . $_ARRAYLANG['TXT_CONTACT_PLEASE_SELECT'] . "</option>\n";
                 $country = \Cx\Core\Country\Controller\Country::getNameArray(true, $langid);
                 foreach ($country as $id => $name) {
                     $sourcecode[] = "<option value=\"" . $name . "\" " . ($attr == $name ? 'selected="selected"' : '') . ">" . $name . "</option>";
                 }
                 $field .= "</select>";
                 return $field;
             }
             break;
         case 'checkboxGroup':
         case 'select':
         case 'radio':
             $field .= "<div style=\"display: " . $display . ";\"  id=\"fieldValueTab_" . $id . "_" . $langid . "\" class=\"fieldValueTabs_" . $id . "\">";
             $field .= "<input style=\"width:308px;background: #FFFFFF;\" type=\"text\" name=\"contactFormFieldValue[" . $id . "][" . $langid . "]\" value=\"" . $attr . "\" />&nbsp;<span class=\"tooltip-trigger icon-info\"></span><span class=\"tooltip-message multiple-values-by-comma\">{TXT_CONTACT_SEPARATE_MULTIPLE_VALUES_BY_COMMA}</span>\n";
             $field .= "</div>";
             return $field;
             break;
         default:
             return '';
             break;
     }
 }
 /**
  * Initialize countries.
  *
  * @access      public
  */
 public function __construct()
 {
     $this->arrCountries = \Cx\Core\Country\Controller\Country::getNameArray();
 }