/** * Add / Edit Event * * @param integer $eventId Event id * * @return null */ function modifyEvent($eventId = null) { global $_ARRAYLANG, $_CORELANG, $_LANGID; \JS::activate('cx'); \JS::activate('jqueryui'); \JS::registerJS('modules/Calendar/View/Script/Frontend.js'); $this->getFrontendLanguages(); $this->getSettings(); $this->_objTpl->setTemplate($this->pageContent, true, true); $showFrom = true; $objEvent = new \Cx\Modules\Calendar\Controller\CalendarEvent(); $isEventLoaded = false; if (isset($_POST['submitFormModifyEvent'])) { $arrData = array(); $arrData = $_POST; $arrData['access'] = 0; $arrData['priority'] = 3; if ($objEvent->save($arrData)) { $showFrom = false; $this->_objTpl->hideBlock('calendarEventModifyForm'); $this->_objTpl->touchBlock('calendarEventOkMessage'); // refresh event data after save $objEvent->get($eventId); $objEvent->getData(); $isEventLoaded = true; $objMailManager = new \Cx\Modules\Calendar\Controller\CalendarMailManager(); $objMailManager->sendMail($objEvent, \Cx\Modules\Calendar\Controller\CalendarMailManager::MAIL_NOTFY_NEW_APP); } else { $this->_objTpl->touchBlock('calendarEventErrMessage'); } } if ($eventId && !$isEventLoaded) { $objEvent->get($eventId); $objEvent->getData(); } $dateFormat = $this->getDateFormat(1); $locationType = $this->arrSettings['placeData'] == 3 ? $eventId != 0 ? $objEvent->locationType : 1 : $this->arrSettings['placeData']; $hostType = $this->arrSettings['placeDataHost'] == 3 ? $eventId != 0 ? $objEvent->hostType : 1 : $this->arrSettings['placeDataHost']; \ContrexxJavascript::getInstance()->setVariable(array('language_id' => \FWLanguage::getDefaultLangId(), 'active_lang' => implode(',', \FWLanguage::getIdArray())), 'calendar'); $javascript = <<<EOF <script language="JavaScript" type="text/javascript"> var defaultLang = cx.variables.get('language_id', 'calendar'); var activeLang = [cx.variables.get('active_lang', 'calendar')]; cx.ready(function() { var options = { dateFormat: '{$dateFormat}', timeFormat: 'hh:mm', showSecond: false, onSelect: function(dateText, inst){ var startDate = cx.jQuery( ".startDate" ).datetimepicker("getDate"); var endDate = cx.jQuery( ".endDate" ).datetimepicker("getDate"); if ( cx.jQuery( this )[0].id == 'startDate' ) { var prevStartDate = cx.jQuery( ".startDate" ).data('prevDate'); if (cx.jQuery(".all_day").is(':checked')) { prevStartDate.setHours(0, 0, 0); startDate.setHours(0, 0, 0); endDate.setHours(0, 0, 0); } if (prevStartDate.getTime() != startDate.getTime()) { var timeDiff = Math.abs(endDate.getTime() - prevStartDate.getTime()); endDate = new Date(startDate.getTime() + timeDiff); cx.jQuery( ".endDate" ).datetimepicker('setDate', endDate); } } else if (startDate.getTime() > endDate.getTime()) { endDate = new Date(startDate.getTime() + (30*60*1000)); cx.jQuery(".endDate").datetimepicker('setDate', endDate); } cx.jQuery( ".startDate" ).data('prevDate', cx.jQuery(".startDate").datetimepicker("getDate")); cx.jQuery( ".endDate" ).data('prevDate', cx.jQuery(".endDate").datetimepicker("getDate")); cx.jQuery( this ).datetimepicker('refresh'); } }; cx.jQuery('input[name=startDate]') .datetimepicker(options) .data('prevDate', cx.jQuery(".startDate").datetimepicker("getDate")); cx.jQuery('input[name=endDate]') .datetimepicker(options) .data('prevDate', cx.jQuery(".endDate").datetimepicker("getDate")); if ( \$J(".all_day").is(':checked') ) { modifyEvent._handleAllDayEvent( \$J(".all_day") ); } showOrHidePlaceFields('{$locationType}', 'place'); showOrHidePlaceFields('{$hostType}', 'host'); }); </script> EOF; if ($showFrom) { try { $javascript .= <<<UPLOADER {$this->getUploaderCode(self::PICTURE_FIELD_KEY, 'pictureUpload')} {$this->getUploaderCode(self::MAP_FIELD_KEY, 'mapUpload')} {$this->getUploaderCode(self::ATTACHMENT_FIELD_KEY, 'attachmentUpload', 'uploadFinished', false)} UPLOADER; } catch (Exception $e) { \DBG::msg("Error in initializing uploader"); } } $this->_objTpl->setGlobalVariable(array($this->moduleLangVar . '_EVENT_LANG_ID' => $_LANGID, $this->moduleLangVar . '_JAVASCRIPT' => $javascript)); $objCategoryManager = new \Cx\Modules\Calendar\Controller\CalendarCategoryManager(true); $objCategoryManager->getCategoryList(); if ($eventId) { $startDate = $objEvent->startDate; $endDate = $objEvent->endDate; } else { $startDate = new \DateTime(); $endDate = new \DateTime(); } $eventStartDate = $this->format2userDateTime($startDate); $eventEndDate = $this->format2userDateTime($endDate); $this->_objTpl->setGlobalVariable(array('TXT_' . $this->moduleLangVar . '_EVENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_DETAILS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DETAILS'], 'TXT_' . $this->moduleLangVar . '_SAVE' => $_ARRAYLANG['TXT_CALENDAR_SAVE'], 'TXT_' . $this->moduleLangVar . '_EVENT_START' => $_ARRAYLANG['TXT_CALENDAR_START'], 'TXT_' . $this->moduleLangVar . '_EVENT_END' => $_ARRAYLANG['TXT_CALENDAR_END'], 'TXT_' . $this->moduleLangVar . '_EVENT_TITLE' => $_ARRAYLANG['TXT_CALENDAR_TITLE'], 'TXT_' . $this->moduleLangVar . '_EXPAND' => $_ARRAYLANG['TXT_CALENDAR_EXPAND'], 'TXT_' . $this->moduleLangVar . '_MINIMIZE' => $_ARRAYLANG['TXT_CALENDAR_MINIMIZE'], 'TXT_' . $this->moduleLangVar . '_EVENT_PLACE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PLACE'], 'TXT_' . $this->moduleLangVar . '_EVENT_STREET' => $_ARRAYLANG['TXT_CALENDAR_EVENT_STREET'], 'TXT_' . $this->moduleLangVar . '_EVENT_ZIP' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ZIP'], 'TXT_' . $this->moduleLangVar . '_EVENT_CITY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_CITY'], 'TXT_' . $this->moduleLangVar . '_EVENT_COUNTRY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_COUNTRY'], 'TXT_' . $this->moduleLangVar . '_EVENT_WEBSITE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_WEBSITE'], 'TXT_' . $this->moduleLangVar . '_EVENT_PHONE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PHONE'], 'TXT_' . $this->moduleLangVar . '_EVENT_MAP' => $_ARRAYLANG['TXT_CALENDAR_EVENT_MAP'], 'TXT_' . $this->moduleLangVar . '_EVENT_USE_GOOGLEMAPS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_USE_GOOGLEMAPS'], 'TXT_' . $this->moduleLangVar . '_EVENT_LINK' => $_ARRAYLANG['TXT_CALENDAR_EVENT_LINK'], 'TXT_' . $this->moduleLangVar . '_EVENT_EMAIL' => $_ARRAYLANG['TXT_CALENDAR_EVENT_EMAIL'], 'TXT_' . $this->moduleLangVar . '_EVENT_PICTURE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PICTURE'], 'TXT_' . $this->moduleLangVar . '_EVENT_ATTACHMENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ATTACHMENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_CATEGORY' => $_ARRAYLANG['TXT_CALENDAR_CAT'], 'TXT_' . $this->moduleLangVar . '_EVENT_DESCRIPTION' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DESCRIPTION'], 'TXT_' . $this->moduleLangVar . '_PLEASE_CHECK_INPUT' => $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHECK_INPUT'], 'TXT_' . $this->moduleLangVar . '_EVENT_HOST' => $_ARRAYLANG['TXT_CALENDAR_EVENT_HOST'], 'TXT_' . $this->moduleLangVar . '_EVENT_NAME' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NAME'], 'TXT_' . $this->moduleLangVar . '_EVENT_ALL_DAY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ALL_DAY'], 'TXT_' . $this->moduleLangVar . '_LANGUAGE' => $_ARRAYLANG['TXT_CALENDAR_LANG'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE_EVENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_EVENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE_REDIRECT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_REDIRECT'], 'TXT_' . $this->moduleLangVar . '_EVENT_DESCRIPTION' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DESCRIPTION'], 'TXT_' . $this->moduleLangVar . '_EVENT_REDIRECT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_REDIRECT'], 'TXT_' . $this->moduleLangVar . '_PLACE_DATA_DEFAULT' => $_ARRAYLANG['TXT_CALENDAR_PLACE_DATA_DEFAULT'], 'TXT_' . $this->moduleLangVar . '_PLACE_DATA_FROM_MEDIADIR' => $_ARRAYLANG['TXT_CALENDAR_PLACE_DATA_FROM_MEDIADIR'], 'TXT_' . $this->moduleLangVar . '_PREV' => $_ARRAYLANG['TXT_CALENDAR_PREV'], 'TXT_' . $this->moduleLangVar . '_NEXT' => $_ARRAYLANG['TXT_CALENDAR_NEXT'], 'TXT_' . $this->moduleLangVar . '_MORE' => $_ARRAYLANG['TXT_CALENDAR_MORE'], 'TXT_' . $this->moduleLangVar . '_MINIMIZE' => $_ARRAYLANG['TXT_CALENDAR_MINIMIZE'], $this->moduleLangVar . '_EVENT_TYPE_EVENT' => $eventId != 0 ? $objEvent->type == 0 ? 'selected="selected"' : '' : '', $this->moduleLangVar . '_EVENT_TYPE_REDIRECT' => $eventId != 0 ? $objEvent->type == 1 ? 'selected="selected"' : '' : '', $this->moduleLangVar . '_EVENT_START_DATE' => $eventStartDate, $this->moduleLangVar . '_EVENT_END_DATE' => $eventEndDate, $this->moduleLangVar . '_EVENT_PICTURE' => $objEvent->pic, $this->moduleLangVar . '_EVENT_PICTURE_THUMB' => $objEvent->pic != '' ? '<img src="' . $objEvent->pic . '.thumb" alt="' . $objEvent->title . '" title="' . $objEvent->title . '" />' : '', $this->moduleLangVar . '_EVENT_ATTACHMENT' => $objEvent->attach, $this->moduleLangVar . '_EVENT_CATEGORIES' => $objCategoryManager->getCategoryDropdown(intval($objEvent->catId), 2), $this->moduleLangVar . '_EVENT_LINK' => $objEvent->link, $this->moduleLangVar . '_EVENT_PLACE' => $objEvent->place, $this->moduleLangVar . '_EVENT_STREET' => $objEvent->place_street, $this->moduleLangVar . '_EVENT_ZIP' => $objEvent->place_zip, $this->moduleLangVar . '_EVENT_CITY' => $objEvent->place_city, $this->moduleLangVar . '_EVENT_COUNTRY' => $objEvent->place_country, $this->moduleLangVar . '_EVENT_PLACE_WEBSITE' => $objEvent->place_website, $this->moduleLangVar . '_EVENT_PLACE_MAP' => $objEvent->place_map, $this->moduleLangVar . '_EVENT_PLACE_LINK' => $objEvent->place_link, $this->moduleLangVar . '_EVENT_PLACE_PHONE' => $objEvent->place_phone, $this->moduleLangVar . '_EVENT_MAP' => $objEvent->google == 1 ? 'checked="checked"' : '', $this->moduleLangVar . '_EVENT_HOST' => $objEvent->org_name, $this->moduleLangVar . '_EVENT_HOST_ADDRESS' => $objEvent->org_street, $this->moduleLangVar . '_EVENT_HOST_ZIP' => $objEvent->org_zip, $this->moduleLangVar . '_EVENT_HOST_CITY' => $objEvent->org_city, $this->moduleLangVar . '_EVENT_HOST_COUNTRY' => $objEvent->org_country, $this->moduleLangVar . '_EVENT_HOST_WEBSITE' => $objEvent->org_website, $this->moduleLangVar . '_EVENT_HOST_LINK' => $objEvent->org_link, $this->moduleLangVar . '_EVENT_HOST_PHONE' => $objEvent->org_phone, $this->moduleLangVar . '_EVENT_HOST_EMAIL' => $objEvent->org_email, $this->moduleLangVar . '_EVENT_LOCATION_TYPE_MANUAL' => $eventId != 0 ? $objEvent->locationType == 1 ? "checked='checked'" : '' : "checked='checked'", $this->moduleLangVar . '_EVENT_LOCATION_TYPE_MEDIADIR' => $eventId != 0 ? $objEvent->locationType == 2 ? "checked='checked'" : '' : "", $this->moduleLangVar . '_EVENT_HOST_TYPE_MANUAL' => $eventId != 0 ? $objEvent->hostType == 1 ? "checked='checked'" : '' : "checked='checked'", $this->moduleLangVar . '_EVENT_HOST_TYPE_MEDIADIR' => $eventId != 0 ? $objEvent->hostType == 2 ? "checked='checked'" : '' : "", $this->moduleLangVar . '_EVENT_ID' => $eventId, $this->moduleLangVar . '_EVENT_ALL_DAY' => $eventId != 0 && $objEvent->all_day ? 'checked="checked"' : '', $this->moduleLangVar . '_HIDE_ON_SINGLE_LANG' => count($this->arrFrontendLanguages) == 1 ? "display: none;" : "")); $multiLingualFields = array('place', 'place_city', 'place_country', 'org_name', 'org_city', 'org_country'); $isOneActiveLanguage = count($this->arrFrontendLanguages) == 1; foreach ($multiLingualFields as $inputField) { if ($isOneActiveLanguage) { $this->_objTpl->hideBlock('calendar_event_' . $inputField . '_expand'); } else { $this->_objTpl->touchBlock('calendar_event_' . $inputField . '_expand'); } } foreach ($this->arrFrontendLanguages as $arrLang) { //parse globals $this->_objTpl->setGlobalVariable(array($this->moduleLangVar . '_EVENT_LANG_SHORTCUT' => $arrLang['lang'], $this->moduleLangVar . '_EVENT_LANG_ID' => $arrLang['id'], 'TXT_' . $this->moduleLangVar . '_EVENT_LANG_NAME' => $arrLang['name'])); //parse "show in" checkboxes $arrShowIn = explode(",", $objEvent->showIn); $langChecked = false; if ($eventId != 0) { $langChecked = in_array($arrLang['id'], $arrShowIn) ? true : false; } else { $langChecked = $arrLang['is_default'] == 'true'; } //parse eventTabMenuDescTab $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_TAB_DISPLAY' => $langChecked ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TAB_CLASS' => '')); $this->_objTpl->parse('eventTabMenuDescTab'); //parse eventDescTab $eventTitle = !empty($objEvent->arrData['title'][$arrLang['id']]) ? $objEvent->arrData['title'][$arrLang['id']] : (!empty($objEvent->arrData['redirect'][$_LANGID]) ? $objEvent->arrData['redirect'][$_LANGID] : ''); $eventDescription = !empty($objEvent->arrData['description'][$arrLang['id']]) ? $objEvent->arrData['description'][$arrLang['id']] : ''; $eventRedirect = !empty($objEvent->arrData['redirect'][$arrLang['id']]) ? $objEvent->arrData['redirect'][$arrLang['id']] : (!empty($objEvent->arrData['redirect'][$_LANGID]) ? $objEvent->arrData['redirect'][$_LANGID] : ''); $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_TAB_DISPLAY' => $langChecked ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TITLE' => contrexx_raw2xhtml($eventTitle), $this->moduleLangVar . '_EVENT_DESCRIPTION' => new \Cx\Core\Wysiwyg\Wysiwyg("description[{$arrLang['id']}]", contrexx_raw2xhtml($eventDescription), $eventId != 0 ? 'small' : 'bbcode'), $this->moduleLangVar . '_EVENT_REDIRECT' => contrexx_raw2xhtml($eventRedirect), $this->moduleLangVar . '_EVENT_TYPE_EVENT_DISPLAY' => $objEvent->type == 0 ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TYPE_REDIRECT_DISPLAY' => $objEvent->type == 1 ? 'block' : 'none')); $this->_objTpl->parse('eventDescTab'); //parse eventLingualFields foreach ($multiLingualFields as $inputField) { $this->_objTpl->setVariable($this->moduleLangVar . '_EVENT_' . strtoupper($inputField) . '_DEFAULT', $eventId != 0 ? $objEvent->{$inputField} : ''); $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_VALUE' => !empty($objEvent->arrData[$inputField][$arrLang['id']]) ? $objEvent->arrData[$inputField][$arrLang['id']] : ($eventId != 0 ? $objEvent->{$inputField} : ''))); $this->_objTpl->parse('calendar_event_' . $inputField); } $langChecked = $langChecked ? 'checked="checked"' : ''; $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_LANG_CHECKED' => $langChecked)); $this->_objTpl->parse('eventShowIn'); } //parse placeSelect if ((int) $this->arrSettings['placeData'] > 1) { $objMediadirEntries = new \Cx\Modules\MediaDir\Controller\MediaDirectoryEntry('MediaDir'); $objMediadirEntries->getEntries(null, null, null, null, null, null, true, 0, 'n', null, null, intval($this->arrSettings['placeDataForm'])); $placeOptions = '<option value="">' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>'; foreach ($objMediadirEntries->arrEntries as $key => $arrEntry) { $selectedPlace = $arrEntry['entryId'] == $objEvent->place_mediadir_id ? 'selected="selected"' : ''; $placeOptions .= '<option ' . $selectedPlace . ' value="' . $arrEntry['entryId'] . '">' . $arrEntry['entryFields'][0] . '</option>'; } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_PLACE_OPTIONS' => $placeOptions)); $this->_objTpl->parse('eventPlaceSelect'); if ((int) $this->arrSettings['placeData'] == 2) { $this->_objTpl->hideBlock('eventPlaceInput'); $this->_objTpl->hideBlock('eventPlaceTypeRadio'); } else { $this->_objTpl->touchBlock('eventPlaceInput'); $this->_objTpl->touchBlock('eventPlaceTypeRadio'); } } else { $this->_objTpl->touchBlock('eventPlaceInput'); $this->_objTpl->hideBlock('eventPlaceSelect'); $this->_objTpl->hideBlock('eventPlaceTypeRadio'); } //parse placeHostSelect if ((int) $this->arrSettings['placeDataHost'] > 1) { $objMediadirEntries = new \Cx\Modules\MediaDir\Controller\MediaDirectoryEntry('MediaDir'); $objMediadirEntries->getEntries(null, null, null, null, null, null, true, 0, 'n', null, null, intval($this->arrSettings['placeDataHostForm'])); $placeOptions = '<option value="">' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>'; foreach ($objMediadirEntries->arrEntries as $key => $arrEntry) { $selectedPlace = $arrEntry['entryId'] == $objEvent->host_mediadir_id ? 'selected="selected"' : ''; $placeOptions .= '<option ' . $selectedPlace . ' value="' . $arrEntry['entryId'] . '">' . $arrEntry['entryFields'][0] . '</option>'; } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_PLACE_OPTIONS' => $placeOptions)); $this->_objTpl->parse('eventHostSelect'); if ((int) $this->arrSettings['placeDataHost'] == 2) { $this->_objTpl->hideBlock('eventHostInput'); $this->_objTpl->hideBlock('eventHostTypeRadio'); } else { $this->_objTpl->touchBlock('eventHostInput'); $this->_objTpl->touchBlock('eventHostTypeRadio'); } } else { $this->_objTpl->touchBlock('eventHostInput'); $this->_objTpl->hideBlock('eventHostSelect'); $this->_objTpl->hideBlock('eventHostTypeRadio'); } }
/** * Shows the "Edit Entry" page. * * @global array * @global array * @global array * @global FWLanguage * @param integer $intEntryId: The values of this entry will be loaded into the form. */ function editEntry($intEntryId) { global $_CORELANG, $_ARRAYLANG, $objDatabase; $count = $objDatabase->Execute('SELECT message_id FROM ' . DBPREFIX . 'module_blog_messages WHERE message_id = "' . $intEntryId . '"'); if ($count->RecordCount() != 1) { \Permission::noAccess(); } $this->_strPageTitle = $_ARRAYLANG['TXT_BLOG_ENTRY_EDIT_TITLE']; $this->_objTpl->loadTemplateFile('module_blog_entries_edit.html', true, true); $options = array('type' => 'button', 'data-cx-mb-views' => 'filebrowser', 'data-cx-mb-startmediatype' => 'blog', 'id' => 'mediabrowser_button', 'style' => 'display:none'); $mediaBrowser = self::getMediaBrowserButton($_ARRAYLANG['TXT_BLOG_ENTRY_ADD_IMAGE_BROWSE'], $options, 'blogSetUrl'); $this->_objTpl->setVariable(array('TXT_EDIT_LANGUAGES' => $_ARRAYLANG['TXT_BLOG_CATEGORY_ADD_LANGUAGES'], 'TXT_EDIT_SUBMIT' => $_ARRAYLANG['TXT_BLOG_SAVE'], 'BLOG_MEDIABROWSER_BUTTON' => $mediaBrowser)); $arrCategories = $this->createCategoryArray(); $arrEntries = $this->createEntryArray(); $intEntryId = intval($intEntryId); $forcedLanguage = null; if (isset($_GET['langId']) && in_array(contrexx_input2raw($_GET['langId']), \FWLanguage::getIdArray())) { $forcedLanguage = contrexx_input2raw($_GET['langId']); } if ($intEntryId > 0 && key_exists($intEntryId, $arrEntries)) { if (count($this->_arrLanguages) > 0) { $intLanguageCounter = 0; $boolFirstLanguage = true; $arrLanguages = array(0 => '', 1 => '', 2 => ''); $strJsTabToDiv = ''; foreach ($this->_arrLanguages as $intLanguageId => $arrTranslations) { $boolLanguageIsActive = $arrEntries[$intEntryId]['translation'][$intLanguageId]['is_active']; if (!$boolLanguageIsActive && $forcedLanguage == $intLanguageId) { $boolLanguageIsActive = true; } $arrLanguages[$intLanguageCounter % 3] .= '<input ' . ($boolLanguageIsActive ? 'checked="checked"' : '') . ' type="checkbox" name="frmEditEntry_Languages[]" value="' . $intLanguageId . '" onclick="switchBoxAndTab(this, \'addEntry_' . $arrTranslations['long'] . '\');" />' . $arrTranslations['long'] . ' [' . $arrTranslations['short'] . ']<br />'; $strJsTabToDiv .= 'arrTabToDiv["addEntry_' . $arrTranslations['long'] . '"] = "' . $arrTranslations['long'] . '";' . "\n"; $activeTab = $boolFirstLanguage; if ($forcedLanguage) { $activeTab = $forcedLanguage == $intLanguageId; } //Parse the TABS at the top of the language-selection $this->_objTpl->setVariable(array('TABS_LINK_ID' => 'addEntry_' . $arrTranslations['long'], 'TABS_DIV_ID' => $arrTranslations['long'], 'TABS_CLASS' => $activeTab && $boolLanguageIsActive ? 'active' : 'inactive', 'TABS_DISPLAY_STYLE' => $boolLanguageIsActive ? 'display: inline;' : 'display: none;', 'TABS_NAME' => $arrTranslations['long'])); $this->_objTpl->parse('showLanguageTabs'); //Parse the DIVS for every language $this->_objTpl->setVariable(array('TXT_DIV_SUBJECT' => $_ARRAYLANG['TXT_BLOG_ENTRY_ADD_SUBJECT'], 'TXT_DIV_KEYWORDS' => $_ARRAYLANG['TXT_BLOG_ENTRY_ADD_KEYWORDS'], 'TXT_DIV_IMAGE' => $_ARRAYLANG['TXT_BLOG_ENTRY_ADD_IMAGE'], 'TXT_DIV_IMAGE_BROWSE' => $_ARRAYLANG['TXT_BLOG_ENTRY_ADD_IMAGE_BROWSE'], 'TXT_DIV_CATEGORIES' => $_ARRAYLANG['TXT_BLOG_ENTRY_ADD_CATEGORIES'])); //Filter out active categories for this language $intCategoriesCounter = 0; $arrCategoriesContent = array(0 => '', 1 => '', 2 => ''); foreach ($arrCategories as $intCategoryId => $arrCategoryValues) { if ($arrCategoryValues[$intLanguageId]['is_active']) { $arrCategoriesContent[$intCategoriesCounter % 3] .= '<input type="checkbox" name="frmEditEntry_Categories_' . $intLanguageId . '[]" value="' . $intCategoryId . '" ' . (key_exists($intCategoryId, $arrEntries[$intEntryId]['categories'][$intLanguageId]) ? 'checked="checked"' : '') . ' />' . $arrCategoryValues[$intLanguageId]['name'] . '<br />'; ++$intCategoriesCounter; } } $this->_objTpl->setVariable(array('DIV_ID' => $arrTranslations['long'], 'DIV_LANGUAGE_ID' => $intLanguageId, 'DIV_DISPLAY_STYLE' => $boolFirstLanguage && $boolLanguageIsActive ? 'display: block;' : 'display: none;', 'DIV_TITLE' => $arrTranslations['long'], 'DIV_SUBJECT' => $arrEntries[$intEntryId]['translation'][$intLanguageId]['subject'], 'DIV_KEYWORDS' => $arrEntries[$intEntryId]['translation'][$intLanguageId]['tags'], 'DIV_IMAGE' => $arrEntries[$intEntryId]['translation'][$intLanguageId]['image'], 'DIV_CATEGORIES_1' => $arrCategoriesContent[0], 'DIV_CATEGORIES_2' => $arrCategoriesContent[1], 'DIV_CATEGORIES_3' => $arrCategoriesContent[2], 'DIV_CONTENT' => new \Cx\Core\Wysiwyg\Wysiwyg('frmEditEntry_Content_' . $intLanguageId, $arrEntries[$intEntryId]['translation'][$intLanguageId]['content'], 'full', $intLanguageId))); $this->_objTpl->parse('showLanguageDivs'); if ($boolLanguageIsActive) { $boolFirstLanguage = false; } ++$intLanguageCounter; } $this->_objTpl->setVariable(array('EDIT_POST_ACTION' => '?cmd=Blog&act=updateEntry', 'EDIT_MESSAGE_ID' => $intEntryId, 'EDIT_LANGUAGES_1' => $arrLanguages[0], 'EDIT_LANGUAGES_2' => $arrLanguages[1], 'EDIT_LANGUAGES_3' => $arrLanguages[2], 'EDIT_JS_TAB_TO_DIV' => $strJsTabToDiv)); } } else { $this->_strErrMessage = $_ARRAYLANG['TXT_BLOG_ENTRY_EDIT_ERROR_ID']; } }
/** * Gets the search query builder. * Searches for slug, title and content title by the given search term. * * @return \Doctrine\ORM\QueryBuilder $qb */ private function getSearchQueryBuilder() { $qb = $this->em->createQueryBuilder(); // build query $qb->from('Cx\\Core\\ContentManager\\Model\\Entity\\Page', 'p')->where($qb->expr()->andX($qb->expr()->orX($qb->expr()->like('p.slug', ':searchTerm'), $qb->expr()->like('p.title', ':searchTerm'), $qb->expr()->like('p.contentTitle', ':searchTerm'), $qb->expr()->andX($qb->expr()->like('p.content', ':searchTerm'), 'p.type = \'' . \Cx\Core\ContentManager\Model\Entity\Page::TYPE_CONTENT . '\''), $qb->expr()->andX($qb->expr()->orX($qb->expr()->like('p.module', ':searchTerm'), $qb->expr()->like('p.cmd', ':searchTerm')), 'p.type = \'' . \Cx\Core\ContentManager\Model\Entity\Page::TYPE_APPLICATION . '\'')), $qb->expr()->orX('p.module = \'\'', 'p.module IS NULL', $qb->expr()->in('p.module', $this->license->getLegalComponentsList())), $qb->expr()->orX($qb->expr()->in('p.lang', \FWLanguage::getIdArray('frontend')), $qb->expr()->eq('p.lang', "''"))))->setParameter('searchTerm', '%' . $this->term . '%')->orderBy('p.title'); return $qb; }
public function getInactiveContentLanguageCheckboxes() { try { $activeLanguageIds = implode(',', \FWLanguage::getIdArray()); $objResult = \Cx\Lib\UpdateUtil::sql(' SELECT DISTINCT `lang` FROM `' . DBPREFIX . 'content_navigation` WHERE `lang` NOT IN (' . $activeLanguageIds . ') UNION DISTINCT SELECT DISTINCT `lang` FROM `' . DBPREFIX . 'content_navigation_history` WHERE `lang` NOT IN (' . $activeLanguageIds . ') ORDER BY `lang` ASC '); if ($objResult->RecordCount()) { $arrLanguages = \FWLanguage::getLanguageArray(); $inactiveContentLanguages = ''; while (!$objResult->EOF) { $inactiveContentLanguages .= ' <input style="clear:left;float:left;margin-top:3px;" type="checkbox" name="migrateLangIds" id="migrate-lang-' . $objResult->fields['lang'] . '" value="' . $objResult->fields['lang'] . '" /> <label for="migrate-lang-' . $objResult->fields['lang'] . '">' . $arrLanguages[$objResult->fields['lang']]['name'] . '</label><br /> '; $objResult->MoveNext(); } return $inactiveContentLanguages; } else { return ''; } } catch (\Cx\Lib\UpdateException $e) { return \Cx\Lib\UpdateUtil::DefaultActionHandler($e); } }
/** * Edit the news, or if $copy is true, it copies an entry * * @global ADONewConnection * @global array * @global array * @param string $pageContent */ function edit($copy = false) { global $objDatabase, $_ARRAYLANG, $_CONFIG; \JS::activate('cx'); if (!empty($this->arrSettings['news_use_tags'])) { \JS::registerJS('lib/javascript/tag-it/js/tag-it.min.js'); \JS::registerCss('lib/javascript/tag-it/css/tag-it.css'); } $newsTagId = 'newsTags'; \FWUser::getUserLiveSearch(); if (!$this->hasCategories()) { return $this->manageCategories(); } $objFWUser = \FWUser::getFWUserObject(); $status = ''; $this->_objTpl->loadTemplateFile('module_news_modify.html', true, true); $this->pageTitle = $copy ? $_ARRAYLANG['TXT_CREATE_NEWS'] : $_ARRAYLANG['TXT_EDIT_NEWS_CONTENT']; $catrow = 'row2'; if ($this->arrSettings['news_use_types'] == 1) { $catrow = 'row1'; } $this->_objTpl->setGlobalVariable(array('TXT_CATEGORY_SELECT' => $_ARRAYLANG['TXT_CATEGORY_SELECT'], 'TXT_COPY' => $_ARRAYLANG['TXT_NEWS_COPY'], 'TXT_NEWS_MESSAGE' => $_ARRAYLANG['TXT_NEWS_MESSAGE'], 'TXT_TITLE' => $_ARRAYLANG['TXT_TITLE'], 'TXT_CATEGORY' => $_ARRAYLANG['TXT_CATEGORY'], 'TXT_NEWS_AUTHOR' => $_ARRAYLANG['TXT_NEWS_AUTHOR'], 'TXT_NEWS_PUBLISHER' => $_ARRAYLANG['TXT_NEWS_PUBLISHER'], 'TXT_CORE_SEARCH_USER' => $_ARRAYLANG['TXT_CORE_SEARCH_USER'], 'NEWS_FORM_CAT_ROW' => $catrow, 'TXT_NEWS_TYPE' => $_ARRAYLANG['TXT_NEWS_TYPE'], 'TXT_EXTERNAL_SOURCE' => $_ARRAYLANG['TXT_EXTERNAL_SOURCE'], 'TXT_LINK' => $_ARRAYLANG['TXT_LINK'], 'TXT_NEWS_NEWS_CONTENT' => $_ARRAYLANG['TXT_NEWS_NEWS_CONTENT'], 'TXT_PUBLISHING' => $_ARRAYLANG['TXT_PUBLISHING'], 'TXT_STARTDATE' => $_ARRAYLANG['TXT_STARTDATE'], 'TXT_ENDDATE' => $_ARRAYLANG['TXT_ENDDATE'], 'TXT_OPTIONAL' => $_ARRAYLANG['TXT_OPTIONAL'], 'TXT_ACTIVE' => $_ARRAYLANG['TXT_ACTIVE'], 'TXT_SCHEDULED_PUBLICATION' => $_ARRAYLANG['TXT_SCHEDULED_PUBLICATION'], 'TXT_DATE' => $_ARRAYLANG['TXT_DATE'], 'TXT_HEADLINES' => $_ARRAYLANG['TXT_HEADLINES'], 'TXT_TOPNEWS' => $_ARRAYLANG['TXT_TOPNEWS'], 'TXT_TEASERS' => $_ARRAYLANG['TXT_TEASERS'], 'TXT_NEWS_TEASER_TEXT' => $_ARRAYLANG['TXT_NEWS_TEASER_TEXT'], 'TXT_IMAGE' => $_ARRAYLANG['TXT_IMAGE'], 'TXT_NEWS_THUMBNAIL' => $_ARRAYLANG['TXT_NEWS_THUMBNAIL'], 'TXT_BROWSE' => $_ARRAYLANG['TXT_BROWSE'], 'TXT_NUMBER_OF_CHARS' => $_ARRAYLANG['TXT_NUMBER_OF_CHARS'], 'TXT_TEASER_SHOW_NEWS_LINK' => $_ARRAYLANG['TXT_TEASER_SHOW_NEWS_LINK'], 'TXT_NEWS_DEFINE_LINK_ALT_TEXT' => $_ARRAYLANG['TXT_NEWS_DEFINE_LINK_ALT_TEXT'], 'TXT_NEWS_INSERT_LINK' => $_ARRAYLANG['TXT_NEWS_INSERT_LINK'], 'TXT_NEWS_REDIRECT_TITLE' => $_ARRAYLANG['TXT_NEWS_REDIRECT_TITLE'], 'TXT_NEWS_MESSAGE_TYPE' => $_ARRAYLANG['TXT_NEWS_MESSAGE_TYPE'], 'TXT_NEWS_TYPE_REDIRECT' => $_ARRAYLANG['TXT_NEWS_REDIRECT_TITLE'], 'TXT_NEWS_TYPE_REDIRECT_HELP' => $_ARRAYLANG['TXT_NEWS_TYPE_REDIRECT_HELP'], 'TXT_NEWS_TYPE_DEFAULT' => $_ARRAYLANG['TXT_NEWS_TYPE_DEFAULT'], 'TXT_NEWS_BASIC_DATA' => $_ARRAYLANG['TXT_BASIC_DATA'], 'TXT_NEWS_MORE_OPTIONS' => $_ARRAYLANG['TXT_MORE_OPTIONS'], 'TXT_NEWS_PERMISSIONS' => $_ARRAYLANG['TXT_NEWS_PERMISSIONS'], 'TXT_NEWS_READ_ACCESS' => $_ARRAYLANG['TXT_NEWS_READ_ACCESS'], 'TXT_NEWS_MODIFY_ACCESS' => $_ARRAYLANG['TXT_NEWS_MODIFY_ACCESS'], 'TXT_NEWS_AVAILABLE_USER_GROUPS' => $_ARRAYLANG['TXT_NEWS_AVAILABLE_USER_GROUPS'], 'TXT_NEWS_ASSIGNED_USER_GROUPS' => $_ARRAYLANG['TXT_NEWS_ASSIGNED_USER_GROUPS'], 'TXT_NEWS_CHECK_ALL' => $_ARRAYLANG['TXT_NEWS_CHECK_ALL'], 'TXT_NEWS_UNCHECK_ALL' => $_ARRAYLANG['TXT_NEWS_UNCHECK_ALL'], 'TXT_NEWS_READ_ALL_ACCESS_DESC' => $_ARRAYLANG['TXT_NEWS_READ_ALL_ACCESS_DESC'], 'TXT_NEWS_RELATED_NEWS' => $_ARRAYLANG['TXT_NEWS_RELATED_NEWS'], 'TXT_NEWS_INCLUDE_NEWS' => $_ARRAYLANG['TXT_NEWS_INCLUDE_NEWS'], 'TXT_NEWS_INCLUDE_RELATED_NEWS_DESC' => $_ARRAYLANG['TXT_NEWS_INCLUDE_RELATED_NEWS_DESC'], 'TXT_NEWS_SEARCH_INFO' => $_ARRAYLANG['TXT_NEWS_SEARCH_INFO'], 'TXT_NEWS_SEARCH_PLACEHOLDER' => $_ARRAYLANG['TXT_NEWS_SEARCH_PLACEHOLDER'], 'TXT_NEWS_READ_SELECTED_ACCESS_DESC' => $_ARRAYLANG['TXT_NEWS_READ_SELECTED_ACCESS_DESC'], 'TXT_NEWS_AVAILABLE_USER_GROUPS' => $_ARRAYLANG['TXT_NEWS_AVAILABLE_USER_GROUPS'], 'TXT_NEWS_ASSIGNED_USER_GROUPS' => $_ARRAYLANG['TXT_NEWS_ASSIGNED_USER_GROUPS'], 'TXT_NEWS_MODIFY_ALL_ACCESS_DESC' => $_ARRAYLANG['TXT_NEWS_MODIFY_ALL_ACCESS_DESC'], 'TXT_NEWS_MODIFY_SELECTED_ACCESS_DESC' => $_ARRAYLANG['TXT_NEWS_MODIFY_SELECTED_ACCESS_DESC'], 'TXT_NEWS_TAGS' => $_ARRAYLANG['TXT_NEWS_TAGS'], 'TXT_NEWS_TAGS_ENABLE' => $_ARRAYLANG['TXT_NEWS_TAGS_ENABLE'], 'NEWS_TAG_ID' => $newsTagId)); $newsid = intval($_REQUEST['newsId']); $objResult = $objDatabase->SelectLimit("SELECT typeid,\n date,\n id,\n redirect,\n source,\n url1,\n url2,\n publisher,\n publisher_id,\n author,\n author_id,\n startdate,\n enddate,\n status,\n userid,\n frontend_access_id,\n backend_access_id,\n teaser_only,\n teaser_show_link,\n teaser_image_path,\n teaser_image_thumbnail_path,\n allow_comments,\n enable_related_news,\n enable_tags\n FROM " . DBPREFIX . "module_news\n WHERE id = '" . $newsid . "'", 1); if ($objResult !== false && !$objResult->EOF && ($this->arrSettings['news_message_protection'] != '1' || \Permission::hasAllAccess() || !$objResult->fields['backend_access_id'] || \Permission::checkAccess($objResult->fields['backend_access_id'], 'dynamic', true) || $objResult->fields['userid'] == $objFWUser->objUser->getId())) { $newsType = $objResult->fields['typeid']; $id = $objResult->fields['id']; $arrLanguages = \FWLanguage::getLanguageArray(); $langData = $this->getLangData($id); $newsComment = $objResult->fields['allow_comments']; $newsAuthorName = $objResult->fields['author']; $newsAuthorId = $objResult->fields['author_id']; $newsPublisherName = $objResult->fields['publisher']; $newsPublisherId = $objResult->fields['publisher_id']; if ($newsPublisherId != 0 && ($objUser = $objFWUser->objUser->getUser($newsPublisherId))) { $newsPublisherName = \FWUser::getParsedUserTitle($objUser); } else { $newsPublisherId = 0; } if ($newsAuthorId != 0 && ($objUser = $objFWUser->objUser->getUser($newsAuthorId))) { $newsAuthorName = \FWUser::getParsedUserTitle($objUser); } else { $newsAuthorId = 0; } $active_lang = array(); $activeLanguage = null; if (isset($_GET['langId']) && in_array($_GET['langId'], \FWLanguage::getIdArray())) { if (!in_array($_GET['langId'], $active_lang)) { $active_lang[] = contrexx_input2raw($_GET['langId']); } $activeLanguage = contrexx_input2raw($_GET['langId']); } if (count($arrLanguages) > 0) { $intLanguageCounter = 0; $arrActiveLang = array(0 => '', 1 => '', 2 => ''); $strJsTabToDiv = ''; $query = "SELECT `lang_id` FROM `" . DBPREFIX . "module_news_locale`\n WHERE `news_id` = " . $newsid . "\n AND `is_active` = '1'"; $activeLangResult = $objDatabase->Execute($query); while (!$activeLangResult->EOF) { $active_lang[] = $activeLangResult->fields['lang_id']; $activeLangResult->MoveNext(); } if (isset($_POST['newsManagerLanguages'])) { $active_lang = array_keys($_POST['newsManagerLanguages']); } foreach ($arrLanguages as $intId => $arrLanguage) { if ($arrLanguage['frontend'] == 1) { $intLanguageId = $arrLanguage['id']; $arrActiveLang[$intLanguageCounter % 3] .= '<input id="languagebar_' . $intLanguageId . '" class="langCheckboxes" ' . (in_array($intLanguageId, $active_lang) ? 'checked="checked"' : '') . ' type="checkbox" name="newsManagerLanguages[' . $intLanguageId . ']" value="1" onclick="switchBoxAndTab(this, \'news_lang_tab_' . $intLanguageId . '\');" /><label for="languagebar_' . $intLanguageId . '">' . $arrLanguage['name'] . ' [' . $arrLanguage['lang'] . ']</label><br />'; ++$intLanguageCounter; } } $this->_objTpl->setVariable(array('TXT_LANGUAGE' => $_ARRAYLANG['TXT_LANGUAGE'], 'EDIT_LANGUAGES_1' => $arrActiveLang[0], 'EDIT_LANGUAGES_2' => $arrActiveLang[1], 'EDIT_LANGUAGES_3' => $arrActiveLang[2])); } $first = true; if (!$activeLanguage) { $activeLanguage = current($active_lang); } foreach ($arrLanguages as $langId => $arrLanguage) { if ($arrLanguage['frontend'] == 1) { $isActive = isset($langData[$langId]) && $langData[$langId]['active'] == 1; $display = $langId == $activeLanguage; // parse tabs $this->_objTpl->setVariable(array('NEWS_LANG_ID' => $langId, 'NEWS_LANG_DISPLAY_STATUS' => $display ? 'active' : 'inactive', 'NEWS_LANG_DISPLAY_STYLE' => in_array($arrLanguage['id'], $active_lang) ? 'inline' : 'none', 'NEWS_LANG_NAME' => contrexx_raw2xhtml($arrLanguage['name']))); $this->_objTpl->parse('news_lang_list'); // parse title $title = isset($_POST['newsTitle'][$langId]) ? contrexx_input2raw($_POST['newsTitle'][$langId]) : ''; if (empty($title)) { $title = isset($langData[$langId]['title']) ? $langData[$langId]['title'] : ''; } $this->_objTpl->setVariable(array('NEWS_LANG_ID' => $langId, 'NEWS_TITLE' => contrexx_raw2xhtml($title), 'NEWS_TITLE_DISPLAY' => $display ? 'block' : 'none')); $this->_objTpl->parse('news_title_list'); // parse teaser text $teaserText = isset($_POST['newsTeaserText'][$langId]) ? contrexx_input2raw($_POST['newsTeaserText'][$langId]) : null; if (!isset($teaserText)) { $teaserText = isset($langData[$langId]['teaser_text']) ? $langData[$langId]['teaser_text'] : ''; } $this->_objTpl->setVariable(array('NEWS_LANG_ID' => $langId, 'NEWS_TEASER_TEXT' => contrexx_raw2xhtml($teaserText), 'NEWS_TEASER_TEXT_LENGTH' => !empty($teaserText) ? strlen($teaserText) : 0, 'NEWS_TITLE_DISPLAY' => $display ? 'block' : 'none')); $this->_objTpl->parse('news_teaser_text_list'); // parse text $text = isset($_POST['news_text'][$langId]) ? $_POST['news_text'][$langId] : null; if (!isset($text)) { $text = isset($langData[$langId]['text']) ? $langData[$langId]['text'] : ''; } $this->_objTpl->setVariable(array('NEWS_LANG_ID' => $langId, 'NEWS_TEXT' => contrexx_raw2xhtml($text))); $this->_objTpl->parse('news_text_list'); if ($display) { $selectedLangId = $langId; $newsText = contrexx_raw2xhtml($text); $first = false; } } } if ($intLanguageCounter == 1) { $this->_objTpl->setVariable('NEWS_LANG_TAB_DISPLAY_STYLE', 'none'); $this->_objTpl->hideBlock('news_language_checkboxes'); } $this->_objTpl->setVariable('NEWS_DEFAULT_LANG', contrexx_raw2xhtml(\FWLanguage::getLanguageParameter($selectedLangId, 'name'))); if ($this->arrSettings['news_use_teaser_text'] != 1) { $this->_objTpl->hideBlock('news_use_teaser_text'); } $teaserShowLink = $objResult->fields['teaser_show_link']; if ($objResult->fields['status'] == 1) { $status = 'checked="checked"'; } $startDate = $objResult->fields['startdate'] !== '0000-00-00 00:00:00' ? strtotime($objResult->fields['startdate']) : 0; $endDate = $objResult->fields['enddate'] !== '0000-00-00 00:00:00' ? strtotime($objResult->fields['enddate']) : 0; if (!empty($startDate) || !empty($endDate)) { $this->_objTpl->setVariable(array('NEWS_SCHEDULED' => 'checked="checked"', 'NEWS_SCHEDULED_DISPLAY' => 'display: block;')); } else { $this->_objTpl->setVariable('NEWS_SCHEDULED_DISPLAY', 'display: none;'); } if (empty($objResult->fields['redirect'])) { $this->_objTpl->setVariable(array('NEWS_TYPE_SELECTION_CONTENT' => 'style="display: block;"', 'NEWS_TYPE_SELECTION_REDIRECT' => 'style="display: none;"', 'NEWS_TYPE_CHECKED_CONTENT' => 'checked="checked"', 'NEWS_TYPE_CHECKED_REDIRECT' => '')); } else { $this->_objTpl->setVariable(array('NEWS_TYPE_SELECTION_CONTENT' => 'style="display: none;"', 'NEWS_TYPE_SELECTION_REDIRECT' => 'style="display: block;"', 'NEWS_TYPE_CHECKED_CONTENT' => '', 'NEWS_TYPE_CHECKED_REDIRECT' => 'checked="checked"')); } $objTeaser = new \Cx\Core_Modules\News\Controller\Teasers(true); $frameIds = ''; $associatedFrameIds = ''; $arrAssociatedFrameIds = explode(';', $objTeaser->arrTeasers[$newsid]['teaser_frames']); foreach ($arrAssociatedFrameIds as $teaserFrameId) { if (empty($teaserFrameId)) { continue; } $associatedFrameIds .= "<option value=\"" . $teaserFrameId . "\">" . $objTeaser->arrTeaserFrames[$teaserFrameId]['name'] . "</option>\n"; } foreach ($objTeaser->arrTeaserFrameNames as $frameName => $frameId) { if (!in_array($frameId, $arrAssociatedFrameIds)) { $frameIds .= "<option value=\"" . $frameId . "\">" . $frameName . "</option>\n"; } } $this->_objTpl->setVariable(array('NEWS_ID' => $copy ? '' : $id, 'NEWS_STORED_ID' => $copy ? '' : $id, 'NEWS_TEXT_PREVIEW' => new \Cx\Core\Wysiwyg\Wysiwyg('newsText', $newsText, 'full'), 'NEWS_REDIRECT' => contrexx_raw2xhtml($objResult->fields['redirect']), 'NEWS_SOURCE' => contrexx_raw2xhtml($objResult->fields['source']), 'NEWS_URL1' => contrexx_raw2xhtml($objResult->fields['url1']), 'NEWS_URL2' => contrexx_raw2xhtml($objResult->fields['url2']), 'NEWS_PUBLISHER_NAME' => contrexx_raw2xhtml($newsPublisherName), 'NEWS_PUBLISHER_ID' => contrexx_raw2xhtml($newsPublisherId), 'NEWS_AUTHOR_NAME' => contrexx_raw2xhtml($newsAuthorName), 'NEWS_AUTHOR_ID' => contrexx_raw2xhtml($newsAuthorId), 'NEWS_CREATE_DATE' => $this->valueFromDate($objResult->fields['date']), 'NEWS_STARTDATE' => $this->valueFromDate($startDate), 'NEWS_ENDDATE' => $this->valueFromDate($endDate), 'NEWS_STATUS' => isset($_GET['validate']) ? 'checked="checked"' : $status, 'NEWS_TEASER_SHOW_LINK_CHECKED' => $teaserShowLink ? 'checked="checked"' : '', 'NEWS_TEASER_IMAGE_PATH' => contrexx_raw2xhtml($objResult->fields['teaser_image_path']), 'NEWS_TEASER_IMAGE_THUMBNAIL_PATH' => contrexx_raw2xhtml($objResult->fields['teaser_image_thumbnail_path']), 'NEWS_DATE' => date('Y-m-d H:i:s'), 'NEWS_SUBMIT_NAME' => isset($_GET['validate']) ? 'validate' : 'store', 'NEWS_SUBMIT_NAME_TEXT' => isset($_GET['validate']) ? $_ARRAYLANG['TXT_CONFIRM'] : $_ARRAYLANG['TXT_STORE'], 'NEWS_MEDIA_BROWSER_BROWSE_BUTTON' => self::getMediaBrowserButton(array('type' => 'button', 'id' => 'newsMediaBrowser', 'style' => 'display:none;'), 'SetUrl'), 'NEWS_RELATED_NEWS_ENABLED_CHECKED' => !empty($objResult->fields['enable_related_news']) ? 'checked="checked"' : '', 'NEWS_TAGS_ENABLED_CHECKED' => !empty($objResult->fields['enable_tags']) ? 'checked="checked"' : '')); if ($this->arrSettings['news_message_protection'] == '1') { if ($this->arrSettings['news_message_protection_restricted'] == '1') { $userGroupIds = $objFWUser->objUser->getAssociatedGroupIds(); } if ($objResult->fields['frontend_access_id']) { $objFrontendGroups = $objFWUser->objGroup->getGroups(array('dynamic' => $objResult->fields['frontend_access_id'])); $arrFrontendGroups = $objFrontendGroups ? $objFrontendGroups->getLoadedGroupIds() : array(); } else { $arrFrontendGroups = array(); } if ($objResult->fields['backend_access_id']) { $objBackendGroups = $objFWUser->objGroup->getGroups(array('dynamic' => $objResult->fields['backend_access_id'])); $arrBackendGroups = $objBackendGroups ? $objBackendGroups->getLoadedGroupIds() : array(); } else { $arrBackendGroups = array(); } $readAccessGroups = ''; $readNotAccessGroups = ''; $modifyAccessGroups = ''; $modifyNotAccessGroups = ''; $objGroup = $objFWUser->objGroup->getGroups(); if ($objGroup) { while (!$objGroup->EOF) { ${$objGroup->getType() == 'frontend' ? in_array($objGroup->getId(), $arrFrontendGroups) ? 'readAccessGroups' : 'readNotAccessGroups' : (in_array($objGroup->getId(), $arrBackendGroups) ? 'modifyAccessGroups' : 'modifyNotAccessGroups')} .= '<option value="' . $objGroup->getId() . '"' . (!\Permission::hasAllAccess() && $this->arrSettings['news_message_protection_restricted'] == '1' && !in_array($objGroup->getId(), $userGroupIds) ? ' disabled="disabled"' : '') . '>' . htmlentities($objGroup->getName(), ENT_QUOTES, CONTREXX_CHARSET) . '</option>'; $objGroup->next(); } } $this->_objTpl->setVariable(array('NEWS_READ_ACCESS_NOT_ASSOCIATED_GROUPS' => $readNotAccessGroups, 'NEWS_READ_ACCESS_ASSOCIATED_GROUPS' => $readAccessGroups, 'NEWS_READ_ACCESS_ALL_CHECKED' => $objResult->fields['frontend_access_id'] ? '' : 'checked="checked"', 'NEWS_READ_ACCESS_SELECTED_CHECKED' => $objResult->fields['frontend_access_id'] ? 'checked="checked"' : '', 'NEWS_READ_ACCESS_DISPLAY' => $objResult->fields['frontend_access_id'] ? '' : 'none', 'NEWS_MODIFY_ACCESS_NOT_ASSOCIATED_GROUPS' => $modifyNotAccessGroups, 'NEWS_MODIFY_ACCESS_ASSOCIATED_GROUPS' => $modifyAccessGroups, 'NEWS_MODIFY_ACCESS_ALL_CHECKED' => $objResult->fields['backend_access_id'] ? '' : 'checked="checked"', 'NEWS_MODIFY_ACCESS_SELECTED_CHECKED' => $objResult->fields['backend_access_id'] ? 'checked="checked"' : '', 'NEWS_MODIFY_ACCESS_DISPLAY' => $objResult->fields['backend_access_id'] ? '' : 'none')); $this->_objTpl->touchBlock('news_permission_tab'); } else { $this->_objTpl->hideBlock('news_permission_tab'); } //Customized News Module Improvements if (!empty($this->arrSettings['news_use_tags'])) { $this->registerTagJsCode(); $newsTagDetails = $this->getNewsTags($id); $newsTags = $newsTagDetails['tagList']; if ($this->_objTpl->blockExists('newsTags')) { foreach ($newsTags as $newsTag) { $this->_objTpl->setVariable('NEWS_TAGS', $newsTag); $this->_objTpl->parse('newsTags'); } } $this->_objTpl->touchBlock('newsTagsBlock'); } else { $this->_objTpl->hideBlock('newsTagsBlock'); } if (!empty($this->arrSettings['use_related_news'])) { $objCx = \ContrexxJavascript::getInstance(); $objCx->setVariable('noResultsMsg', $_ARRAYLANG['TXT_NEWS_NOT_FOUND'], 'news/news-live-search'); \JS::registerJS('core_modules/News/View/Script/news-live-search.js'); \JS::registerCss('core_modules/News/View/Style/news-live-search.css'); //Parsing the related news tags $relatedNewsIds = isset($_POST['relatedNews']) ? contrexx_input2raw($_POST['relatedNews']) : $this->getRelatedNews($id); //Getting the related news ids $this->parseRelatedNewsTags($this->_objTpl, $relatedNewsIds, LANG_ID); $this->_objTpl->touchBlock('relatedNewsBlock'); } else { $this->_objTpl->hideBlock('relatedNewsBlock'); } } else { $this->strErrMessage = $_ARRAYLANG['TXT_NEWS_ENTRY_NOT_FOUND']; $this->overview(); return; } if ($_CONFIG['newsTeasersStatus'] == '1') { $this->_objTpl->parse('newsTeaserOptions'); $this->_objTpl->setVariable(array('TXT_USAGE' => $_ARRAYLANG['TXT_USAGE'], 'TXT_USE_ONLY_TEASER_TEXT' => $_ARRAYLANG['TXT_USE_ONLY_TEASER_TEXT'], 'TXT_TEASER_TEASER_BOXES' => $_ARRAYLANG['TXT_TEASER_TEASER_BOXES'], 'TXT_AVAILABLE_BOXES' => $_ARRAYLANG['TXT_AVAILABLE_BOXES'], 'TXT_SELECT_ALL' => $_ARRAYLANG['TXT_SELECT_ALL'], 'TXT_DESELECT_ALL' => $_ARRAYLANG['TXT_DESELECT_ALL'], 'TXT_ASSOCIATED_BOXES' => $_ARRAYLANG['TXT_ASSOCIATED_BOXES'], 'NEWS_HEADLINES_TEASERS_TXT' => $_ARRAYLANG['TXT_HEADLINES'] . ' / ' . $_ARRAYLANG['TXT_TEASERS'], 'NEWS_USE_ONLY_TEASER_CHECKED' => $objResult->fields['teaser_only'] == '1' ? 'checked="checked"' : '', 'NEWS_TEASER_FRAMES' => $frameIds, 'NEWS_TEASER_ASSOCIATED_FRAMES' => $associatedFrameIds)); } else { $this->_objTpl->hideBlock('newsTeaserOptions'); $this->_objTpl->setVariable('NEWS_HEADLINES_TEASERS_TXT', $_ARRAYLANG['TXT_HEADLINES']); } $categoryRelatedToNews = $this->getNewsRelCategories($id); $this->_objTpl->setVariable('NEWS_CAT_MENU', $this->getCategoryMenu($this->nestedSetRootId, $categoryRelatedToNews)); $news_type_menu = ''; if ($this->arrSettings['news_use_types'] == 1) { $news_type_menu = "<tr class=\"row2\">\n<td nowrap=\"nowrap\">{$_ARRAYLANG['TXT_NEWS_TYPE']}</td><td><select name=\"newsType\"><option value=\"0\">{$_ARRAYLANG['TXT_NO_TYPE']}</option>" . $this->getTypeMenu($newsType) . "</select></td></tr>"; } // Activate Comments $news_comment = ''; if ($this->arrSettings['news_comments_activated'] == 1) { $commentsChecked = $newsComment == 1 ? 'checked="checked"' : ''; $this->_objTpl->setVariable(array('TXT_NEWS_ALLOW_COMMENTS' => $_ARRAYLANG['TXT_NEWS_ALLOW_COMMENTS'], 'NEWS_COMMENT_CHECKED' => $commentsChecked)); } else { $this->_objTpl->hideBlock('news_allow_comments_option'); } $this->_objTpl->setVariable('NEWS_TYPE_MENU', $news_type_menu); $this->_objTpl->setVariable('NEWS_FORM_ACTION', $copy ? 'add' : 'update'); $this->_objTpl->setVariable('NEWS_STORED_FORM_ACTION', 'update'); $this->_objTpl->setVariable('NEWS_TOP_TITLE', $_ARRAYLANG['TXT_EDIT_NEWS_CONTENT']); }
/** * Add / Edit of the Event * * @param integer $eventId Event id * * @return null */ function modifyEvent($eventId) { global $objDatabase, $_ARRAYLANG, $_CORELANG, $_LANGID; $this->_objTpl->loadTemplateFile('module_calendar_modify_event.html'); \JS::registerJS("modules/{$this->moduleName}/View/Script/jquery.pagination.js"); \ContrexxJavascript::getInstance()->setVariable(array('language_id' => \FWLanguage::getDefaultLangId(), 'active_lang' => implode(',', \FWLanguage::getIdArray())), 'calendar'); $this->getSettings(); $this->getFrontendLanguages(); if (isset($_POST['submitModifyEvent']) || isset($_POST['save_and_publish'])) { $objEvent = new \Cx\Modules\Calendar\Controller\CalendarEvent(); if ($objEvent->save($_POST)) { $this->okMessage = $_ARRAYLANG['TXT_CALENDAR_EVENT_SUCCESSFULLY_SAVED']; if (isset($_POST['save_and_publish'])) { \Permission::checkAccess(180, 'static'); if ($objEvent->confirm()) { // do nothing } else { $this->errMessage = $_ARRAYLANG['TXT_CALENDAR_EVENT_CORRUPT_EDITED']; } } $this->showOverview(); return; } else { $this->errMessage = $_ARRAYLANG['TXT_CALENDAR_EVENT_CORRUPT_SAVED']; } if ($this->arrSettings['rssFeedStatus'] == 1) { $objFeedEventManager = new \Cx\Modules\Calendar\Controller\CalendarEventManager(time(), null, null, null, true); $objFeed = new \Cx\Modules\Calendar\Controller\CalendarFeed($objFeedEventManager); $objFeed->creatFeed(); } } $objCategoryManager = new \Cx\Modules\Calendar\Controller\CalendarCategoryManager(true); $objCategoryManager->getCategoryList(); $objFormManager = new \Cx\Modules\Calendar\Controller\CalendarFormManager(true); $objFormManager->getFormList(); $objMail = new \Cx\Modules\Calendar\Controller\CalendarMail(); $objMail->getTemplateList(); $copy = isset($_REQUEST['copy']) && !empty($_REQUEST['copy']); $this->_pageTitle = $copy || empty($eventId) ? $_ARRAYLANG['TXT_CALENDAR_INSERT_EVENT'] : $_ARRAYLANG['TXT_CALENDAR_EVENT'] . " " . $_ARRAYLANG['TXT_CALENDAR_EDIT']; if ($eventId != 0) { $objEvent = new \Cx\Modules\Calendar\Controller\CalendarEvent($eventId); $objEvent->getData(); } //parse weekdays $arrWeekdays = array("1000000" => $_ARRAYLANG['TXT_CALENDAR_DAYS_MONDAY'], "0100000" => $_ARRAYLANG['TXT_CALENDAR_DAYS_TUESDAY'], "0010000" => $_ARRAYLANG['TXT_CALENDAR_DAYS_WEDNESDAY'], "0001000" => $_ARRAYLANG['TXT_CALENDAR_DAYS_THURSDAY'], "0000100" => $_ARRAYLANG['TXT_CALENDAR_DAYS_FRIDAY'], "0000010" => $_ARRAYLANG['TXT_CALENDAR_DAYS_SATURDAY'], "0000001" => $_ARRAYLANG['TXT_CALENDAR_DAYS_SUNDAY']); foreach ($arrWeekdays as $value => $name) { $selectedWeekday = $value == $objEvent->seriesData['seriesPatternWeekday'] ? 'selected="selected"' : ''; $weekdays .= '<option value="' . $value . '" ' . $selectedWeekday . '>' . $name . '</option>'; } //parse count $arrCount = array(1 => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_FIRST'], 2 => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_SECOND'], 3 => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_THIRD'], 4 => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_FOURTH'], 5 => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_LAST']); foreach ($arrCount as $value => $name) { $selectedCount = $value == $objEvent->seriesData['seriesPatternCount'] ? 'selected="selected"' : ''; $count .= '<option value="' . $value . '" ' . $selectedCount . '>' . $name . '</option>'; } if ($eventId) { $startDate = $objEvent->startDate; $endDate = $objEvent->endDate; } else { $startDate = new \DateTime(); $startMin = (int) $startDate->format('i'); // Adjust the time to next half hour if (!in_array($startMin, array(0, 30))) { $minAdj = 60 - $startMin > 30 ? 30 - $startMin : 60 - $startMin; $startDate->setTime($startDate->format('H'), $startDate->format('i') + $minAdj, 00); } $endDate = clone $startDate; $endDate->modify("+30 mins"); } $eventStartDate = $this->format2userDateTime($startDate); $eventEndDate = $this->format2userDateTime($endDate); //parse globals $this->_objTpl->setGlobalVariable(array('TXT_' . $this->moduleLangVar . '_TITLE' => $this->_pageTitle, 'TXT_' . $this->moduleLangVar . '_EVENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT'], 'TXT_' . $this->moduleLangVar . '_SAVE' => $_ARRAYLANG['TXT_CALENDAR_SAVE'], 'TXT_' . $this->moduleLangVar . '_DELETE' => $_ARRAYLANG['TXT_CALENDAR_DELETE'], 'TXT_' . $this->moduleLangVar . '_CANCEL' => $_CORELANG['TXT_CANCEL'], 'TXT_' . $this->moduleLangVar . '_EXPAND' => $_ARRAYLANG['TXT_CALENDAR_EXPAND'], 'TXT_' . $this->moduleLangVar . '_MINIMIZE' => $_ARRAYLANG['TXT_CALENDAR_MINIMIZE'], 'TXT_' . $this->moduleLangVar . '_EVENT_DETAILS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DETAILS'], 'TXT_' . $this->moduleLangVar . '_EVENT_INVITE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_INVITE'], 'TXT_' . $this->moduleLangVar . '_EVENT_SERIES' => $_ARRAYLANG['TXT_CALENDAR_EVENT_SERIES'], 'TXT_' . $this->moduleLangVar . '_EVENT_SERIES_TYPE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_SERIES_TYPE'], 'TXT_' . $this->moduleLangVar . '_EVENT_SERIES_PATTERN' => $_ARRAYLANG['TXT_CALENDAR_EVENT_SERIES_PATTERN'], 'TXT_' . $this->moduleLangVar . '_EVENT_SERIES_EXCEPTIONS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_SERIES_EXCEPTIONS'], 'TXT_' . $this->moduleLangVar . '_EVENT_PUBLICATE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PUBLICATE'], 'TXT_' . $this->moduleLangVar . '_YES' => $_ARRAYLANG['TXT_CALENDAR_YES'], 'TXT_' . $this->moduleLangVar . '_NEXT' => $_ARRAYLANG['TXT_CALENDAR_NEXT'], 'TXT_' . $this->moduleLangVar . '_BACK' => $_ARRAYLANG['TXT_CALENDAR_STEP_BACK'], 'TXT_' . $this->moduleLangVar . '_EVENT_PRIORITY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PRIORITY'], 'TXT_' . $this->moduleLangVar . '_EVENT_START' => $_ARRAYLANG['TXT_CALENDAR_EVENT_START'], 'TXT_' . $this->moduleLangVar . '_EVENT_END' => $_ARRAYLANG['TXT_CALENDAR_EVENT_END'], 'TXT_' . $this->moduleLangVar . '_EVENT_ACCESS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ACCESS'], 'TXT_' . $this->moduleLangVar . '_EVENT_WHOLE_DAY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_WHOLE_DAY'], 'TXT_' . $this->moduleLangVar . '_BROWSE' => $_ARRAYLANG['TXT_CALENDAR_BROWSE'], 'TXT_' . $this->moduleLangVar . '_ACTIVATE' => $_ARRAYLANG['TXT_CALENDAR_ACTIVATE'], 'TXT_' . $this->moduleLangVar . '_EVENT_PRICE' => $_ARRAYLANG['TXT_CALENDAR_PRICE'], 'TXT_' . $this->moduleLangVar . '_EVENT_LINK' => $_ARRAYLANG['TXT_CALENDAR_EVENT_LINK'], 'TXT_' . $this->moduleLangVar . '_EVENT_PICTURE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PICTURE'], 'TXT_' . $this->moduleLangVar . '_EVENT_ATTACHMENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ATTACHMENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_CATEGORY' => $_ARRAYLANG['TXT_CALENDAR_CATEGORY'], 'TXT_' . $this->moduleLangVar . '_COMMUNITY_GROUPS' => $_ARRAYLANG['TXT_CALENDAR_COMMUNITY_GROUPS'], 'TXT_' . $this->moduleLangVar . '_PLEASE_CHECK_INPUT' => $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHECK_INPUT'], 'TXT_' . $this->moduleLangVar . '_EVENT_MORE_INVITATIONS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_MORE_INVITATIONS'], 'TXT_' . $this->moduleLangVar . '_EVENT_REGISTRATION' => $_ARRAYLANG['TXT_CALENDAR_EVENT_REGISTRATION'], 'TXT_' . $this->moduleLangVar . '_EVENT_NUM_SUBSCRIBER' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NUM_SUBSCRIBER'], 'TXT_' . $this->moduleLangVar . '_EVENT_NOTIFICATION_TO' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NOTIFICATION_TO'], 'TXT_' . $this->moduleLangVar . '_EVENT_EMAIL_TEMPLATE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_EMAIL_TEMPLATE'], 'TXT_' . $this->moduleLangVar . '_EVENT_TICKET_SALES' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TICKET_SALES'], 'TXT_' . $this->moduleLangVar . '_EVENT_NUM_SEATING' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NUM_SEATING'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_DURANCE' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_DURANCE'], 'TXT_' . $this->moduleLangVar . '_SERIES_ACTIVATE' => $_ARRAYLANG['TXT_CALENDAR_SERIES_ACTIVATE'], 'TXT_' . $this->moduleLangVar . '_SERIES' => $_ARRAYLANG['TXT_CALENDAR_SERIES'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_DAILY' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_DAILY'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_WEEKLY'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_MONTHLY' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_MONTHLY'], 'TXT_' . $this->moduleLangVar . '_DAYS' => $_ARRAYLANG['TXT_CALENDAR_DAYS'], 'TXT_' . $this->moduleLangVar . '_DAYS_DAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_DAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_MONDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_MONDAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_TUESDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_TUESDAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_WEDNESDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_WEDNESDAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_THURSDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_THURSDAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_FRIDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_FRIDAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_SATURDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_SATURDAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_SUNDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_SUNDAY'], 'TXT_' . $this->moduleLangVar . '_DAYS_WORKDAY' => $_ARRAYLANG['TXT_CALENDAR_DAYS_WORKDAY'], 'TXT_' . $this->moduleLangVar . '_AT' => $_ARRAYLANG['TXT_CALENDAR_AT'], 'TXT_' . $this->moduleLangVar . '_EVERY_1' => $_ARRAYLANG['TXT_CALENDAR_EVERY_1'], 'TXT_' . $this->moduleLangVar . '_ALL' => $_ARRAYLANG['TXT_CALENDAR_ALL'], 'TXT_' . $this->moduleLangVar . '_EVERY_2' => $_ARRAYLANG['TXT_CALENDAR_EVERY_2'], 'TXT_' . $this->moduleLangVar . '_WEEKS' => $_ARRAYLANG['TXT_CALENDAR_WEEKS'], 'TXT_' . $this->moduleLangVar . '_MONTHS' => $_ARRAYLANG['TXT_CALENDAR_MONTHS'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_BEGINS' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_BEGINS'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_NO_ENDDATE' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_NO_ENDDATE'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_ENDS_AFTER' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_ENDS_AFTER'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_APPONTMENTS' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_APPONTMENTS'], 'TXT_' . $this->moduleLangVar . '_SERIES_PATTERN_ENDS' => $_ARRAYLANG['TXT_CALENDAR_SERIES_PATTERN_ENDS'], 'TXT_' . $this->moduleLangVar . '_EVENT_SEND_INVITATION' => $objEvent->invitationSent == 0 ? $_ARRAYLANG['TXT_CALENDAR_EVENT_SEND_INVITATION'] : $_ARRAYLANG['TXT_CALENDAR_EVENT_SEND_AGAIN_INVITATION'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE_EVENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_EVENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE_REDIRECT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_REDIRECT'], 'TXT_' . $this->moduleLangVar . '_EVENT_REGISTRATION_FORM' => $_ARRAYLANG['TXT_CALENDAR_REGISTRATION_FORM'], 'TXT_' . $this->moduleLangVar . '_EVENT_MORE_INVITATIONS_INFO' => $_ARRAYLANG['TXT_CALENDAR_EVENT_MORE_INVITATIONS_INFO'], 'TXT_' . $this->moduleLangVar . '_REGISTRATIONS_SUBSCRIBER_INFO' => $_ARRAYLANG['TXT_CALENDAR_REGISTRATIONS_SUBSCRIBER_INFO'], 'TXT_' . $this->moduleLangVar . '_EVENT_NOTIFICATION_TO_INFO' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NOTIFICATION_TO_INFO'], 'TXT_' . $this->moduleLangVar . '_EVENT_EMAIL_TEMPLATE_INFO' => $_ARRAYLANG['TXT_CALENDAR_EVENT_EMAIL_TEMPLATE_INFO'], 'TXT_' . $this->moduleLangVar . '_EVENT_NUM_SEATING_INFO' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NUM_SEATING_INFO'], 'TXT_' . $this->moduleLangVar . '_SHOW_START_DATE' => $_ARRAYLANG['TXT_CALENDAR_SHOW_START_DATE'], 'TXT_' . $this->moduleLangVar . '_SHOW_END_DATE' => $_ARRAYLANG['TXT_CALENDAR_SHOW_END_DATE'], 'TXT_' . $this->moduleLangVar . '_SHOW_TIME_TYPE' => $_ARRAYLANG['TXT_CALENDAR_SHOW_TIME_TYPE'], 'TXT_' . $this->moduleLangVar . '_SHOW_START_TIME' => $_ARRAYLANG['TXT_CALENDAR_SHOW_START_TIME'], 'TXT_' . $this->moduleLangVar . '_SHOW_END_TIME' => $_ARRAYLANG['TXT_CALENDAR_SHOW_END_TIME'], 'TXT_' . $this->moduleLangVar . '_LIST' => $_ARRAYLANG['TXT_CALENDAR_LIST'], 'TXT_' . $this->moduleLangVar . '_DETAIL' => $_ARRAYLANG['TXT_CALENDAR_DETAIL'], 'TXT_' . $this->moduleLangVar . '_BASIC_DATA' => $_ARRAYLANG['TXT_CALENDAR_BASIC_DATA'], 'TXT_' . $this->moduleLangVar . '_LANGUAGE' => $_ARRAYLANG['TXT_CALENDAR_LANG'], 'TXT_' . $this->moduleLangVar . '_ADDITIONAL_OPTIONS' => $_ARRAYLANG['TXT_CALENDAR_ADDITIONAL_OPTIONS'], 'TXT_' . $this->moduleLangVar . '_EVENT_LOCATION' => $_ARRAYLANG['TXT_CALENDAR_EVENT_LOCATION'], 'TXT_' . $this->moduleLangVar . '_EVENT_ALL_DAY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ALL_DAY'], 'TXT_' . $this->moduleLangVar . '_EVENT_NAME' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NAME'], 'TXT_' . $this->moduleLangVar . '_EVENT_HOST' => $_ARRAYLANG['TXT_CALENDAR_EVENT_HOST'], 'TXT_' . $this->moduleLangVar . '_EVENT_EMAIL' => $_ARRAYLANG['TXT_CALENDAR_EVENT_EMAIL'], 'TXT_' . $this->moduleLangVar . '_SELECT_EXCEPTION_DATE_INFO' => $_ARRAYLANG['TXT_CALENDAR_SELECT_EXCEPTION_DATE_INFO'], 'TXT_' . $this->moduleLangVar . '_OK' => $_ARRAYLANG['TXT_CALENDAR_OK'], 'TXT_' . $this->moduleLangVar . '_CANCEL' => $_ARRAYLANG['TXT_CALENDAR_CANCEL'], 'TXT_' . $this->moduleLangVar . '_MANAGE' => $_ARRAYLANG['TXT_CALENDAR_MANAGE'], 'TXT_' . $this->moduleLangVar . '_EVENT_SHOW_IN' => $_ARRAYLANG['TXT_CALENDAR_EVENT_SHOW_IN'], 'TXT_' . $this->moduleLangVar . '_EVENT_TITLE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TITLE'], 'TXT_' . $this->moduleLangVar . '_EVENT_TEASER' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TEASER'], 'TXT_' . $this->moduleLangVar . '_EVENT_PLACE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PLACE'], 'TXT_' . $this->moduleLangVar . '_EVENT_STREET' => $_ARRAYLANG['TXT_CALENDAR_EVENT_STREET'], 'TXT_' . $this->moduleLangVar . '_EVENT_ZIP' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ZIP'], 'TXT_' . $this->moduleLangVar . '_EVENT_CITY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_CITY'], 'TXT_' . $this->moduleLangVar . '_EVENT_COUNTRY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_COUNTRY'], 'TXT_' . $this->moduleLangVar . '_EVENT_WEBSITE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_WEBSITE'], 'TXT_' . $this->moduleLangVar . '_EVENT_PHONE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PHONE'], 'TXT_' . $this->moduleLangVar . '_EVENT_MAP' => $_ARRAYLANG['TXT_CALENDAR_EVENT_MAP'], 'TXT_' . $this->moduleLangVar . '_EVENT_USE_GOOGLEMAPS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_USE_GOOGLEMAPS'], 'TXT_' . $this->moduleLangVar . '_PLACE_DATA_DEFAULT' => $_ARRAYLANG['TXT_CALENDAR_PLACE_DATA_DEFAULT'], 'TXT_' . $this->moduleLangVar . '_PLACE_DATA_FROM_MEDIADIR' => $_ARRAYLANG['TXT_CALENDAR_PLACE_DATA_FROM_MEDIADIR'], 'TXT_' . $this->moduleLangVar . '_PREV' => $_ARRAYLANG['TXT_CALENDAR_PREV'], 'TXT_' . $this->moduleLangVar . '_NEXT' => $_ARRAYLANG['TXT_CALENDAR_NEXT'], 'TXT_' . $this->moduleLangVar . '_EVENT_DETAIL_VIEW' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DETAIL_VIEW'], 'TXT_' . $this->moduleLangVar . '_EVENT_DETAIL_VIEW_LABEL' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DETAIL_VIEW_LABEL'], 'TXT_' . $this->moduleLangVar . '_EVENT_TREAT_AS_INDEPENDENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TREAT_AS_INDEPENDENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_REGISTRATION_NONE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_REGISTRATION_NONE'], 'TXT_' . $this->moduleLangVar . '_EVENT_REGISTRATION_INTERNAL' => $_ARRAYLANG['TXT_CALENDAR_EVENT_REGISTRATION_INTERNAL'], 'TXT_' . $this->moduleLangVar . '_EVENT_REGISTRATION_EXTERNAL' => $_ARRAYLANG['TXT_CALENDAR_EVENT_REGISTRATION_EXTERNAL'], 'TXT_' . $this->moduleLangVar . '_EVENT_REGISTRATION_FULL_BOOKED' => $_ARRAYLANG['TXT_CALENDAR_EVENT_REGISTRATION_FULL_BOOKED'], 'TXT_' . $this->moduleLangVar . '_MORE' => $_ARRAYLANG['TXT_CALENDAR_MORE'], 'TXT_' . $this->moduleLangVar . '_MINIMIZE' => $_ARRAYLANG['TXT_CALENDAR_MINIMIZE'], $this->moduleLangVar . '_EVENT_REDIRECT_BROWSE_BUTTON' => self::showMediaBrowserButton('eventRedirect', 'sitestructure'), $this->moduleLangVar . '_EVENT_PICTURE_BROWSE_BUTTON' => self::showMediaBrowserButton('eventPicture'), $this->moduleLangVar . '_EVENT_ATTACHMENT_BROWSE_BUTTON' => self::showMediaBrowserButton('eventAttachment'), $this->moduleLangVar . '_PLACE_MAP_SOURCE_BROWSE_BUTTON' => self::showMediaBrowserButton('inputPlaceMap'), $this->moduleLangVar . '_EVENT_ID' => $eventId, $this->moduleLangVar . '_EVENT_DEFAULT_LANG_ID' => $_LANGID, $this->moduleLangVar . '_EVENT_DATE_FORMAT' => $this->getDateFormat(1), $this->moduleLangVar . '_EVENT_CURRENCY' => $this->arrSettings['paymentCurrency'], $this->moduleLangVar . '_EVENT_CATEGORIES' => $objCategoryManager->getCategoryDropdown(intval($objEvent->catId), 2), $this->moduleLangVar . '_EVENT_SERIES_PATTERN_MONTHLY_COUNT' => $count, $this->moduleLangVar . '_EVENT_SERIES_PATTERN_MONTHLY_WEEKDAY' => $weekdays, $this->moduleLangVar . '_EVENT_REGISTRATION_FORMS' => $objFormManager->getFormDorpdown(intval($objEvent->registrationForm)), $this->moduleLangVar . '_EVENT_SHOW_DETAIL_VIEW' => $eventId != 0 ? $objEvent->showDetailView == 1 ? 'checked="checked"' : '' : 'checked="checked"', $this->moduleLangVar . '_EVENT_TYPE_EVENT' => $eventId != 0 ? $objEvent->type == 0 ? 'selected="selected"' : '' : '', $this->moduleLangVar . '_EVENT_TYPE_REDIRECT' => $eventId != 0 ? $objEvent->type == 1 ? 'selected="selected"' : '' : '', $this->moduleLangVar . '_EVENT_START_DATE' => $eventStartDate, $this->moduleLangVar . '_EVENT_END_DATE' => $eventEndDate, $this->moduleLangVar . '_EVENT_PRICE' => $eventId != 0 ? $objEvent->price : '', $this->moduleLangVar . '_EVENT_LINK' => $eventId != 0 ? $objEvent->link : '', $this->moduleLangVar . '_EVENT_PICTURE' => $eventId != 0 ? $objEvent->pic : '', $this->moduleLangVar . '_EVENT_ATTACHMENT' => $eventId != 0 ? $objEvent->attach : '', $this->moduleLangVar . '_EVENT_MORE_INVITATIONS' => $eventId != 0 ? $objEvent->invitedMails : '', $this->moduleLangVar . '_EVENT_NUM_SUBSCRIBER' => $eventId != 0 ? $objEvent->numSubscriber : '', $this->moduleLangVar . '_EVENT_NOTIFICATION_TO' => $eventId != 0 ? $objEvent->notificationTo : '', $this->moduleLangVar . '_EVENT_TICKET_SALES' => $eventId != 0 ? $objEvent->ticketSales ? 'checked="checked"' : '' : '', $this->moduleLangVar . '_EVENT_NUM_SEATING' => $eventId != 0 ? $objEvent->numSeating : '', $this->moduleLangVar . '_EVENT_ALL_DAY' => $eventId != 0 && $objEvent->all_day ? 'checked="checked"' : '', $this->moduleLangVar . '_HIDE_ON_SINGLE_LANG' => count($this->arrFrontendLanguages) == 1 ? "display: none;" : "", $this->moduleLangVar . '_LOCATION_TYPE' => $this->arrSettings['placeData'] == 3 ? $eventId != 0 ? $objEvent->locationType : 1 : $this->arrSettings['placeData'], $this->moduleLangVar . '_EVENT_LOCATION_TYPE_MANUAL' => $eventId != 0 ? $objEvent->locationType == 1 ? "checked='checked'" : '' : "checked='checked'", $this->moduleLangVar . '_EVENT_LOCATION_TYPE_MEDIADIR' => $eventId != 0 ? $objEvent->locationType == 2 ? "checked='checked'" : '' : "", $this->moduleLangVar . '_EVENT_PLACE' => $eventId != 0 ? $objEvent->place : '', $this->moduleLangVar . '_EVENT_STREET' => $eventId != 0 ? $objEvent->place_street : '', $this->moduleLangVar . '_EVENT_ZIP' => $eventId != 0 ? $objEvent->place_zip : '', $this->moduleLangVar . '_EVENT_CITY' => $eventId != 0 ? $objEvent->place_city : '', $this->moduleLangVar . '_EVENT_COUNTRY' => $eventId != 0 ? $objEvent->place_country : '', $this->moduleLangVar . '_EVENT_PLACE_WEBSITE' => $eventId != 0 ? $objEvent->place_website : '', $this->moduleLangVar . '_EVENT_PLACE_LINK' => $eventId != 0 ? $objEvent->place_link : '', $this->moduleLangVar . '_EVENT_PLACE_PHONE' => $eventId != 0 ? $objEvent->place_phone : '', $this->moduleLangVar . '_PLACE_MAP_SOURCE' => $eventId != 0 ? $objEvent->place_map : '', $this->moduleLangVar . '_EVENT_MAP' => $objEvent->google == 1 ? 'checked="checked"' : '', $this->moduleLangVar . '_EVENT_HOST_TYPE' => $this->arrSettings['placeDataHost'] == 3 ? $eventId != 0 ? $objEvent->hostType : 1 : $this->arrSettings['placeDataHost'], $this->moduleLangVar . '_EVENT_HOST' => $eventId != 0 ? $objEvent->org_name : '', $this->moduleLangVar . '_EVENT_HOST_ADDRESS' => $eventId != 0 ? $objEvent->org_street : '', $this->moduleLangVar . '_EVENT_HOST_ZIP' => $eventId != 0 ? $objEvent->org_zip : '', $this->moduleLangVar . '_EVENT_HOST_CITY' => $eventId != 0 ? $objEvent->org_city : '', $this->moduleLangVar . '_EVENT_HOST_COUNTRY' => $eventId != 0 ? $objEvent->org_country : '', $this->moduleLangVar . '_EVENT_HOST_WEBSITE' => $eventId != 0 ? $objEvent->org_website : '', $this->moduleLangVar . '_EVENT_HOST_LINK' => $eventId != 0 ? $objEvent->org_link : '', $this->moduleLangVar . '_EVENT_HOST_PHONE' => $eventId != 0 ? $objEvent->org_phone : '', $this->moduleLangVar . '_EVENT_HOST_EMAIL' => $eventId != 0 ? $objEvent->org_email : '', $this->moduleLangVar . '_EVENT_HOST_TYPE_MANUAL' => $eventId != 0 ? $objEvent->hostType == 1 ? "checked='checked'" : '' : "checked='checked'", $this->moduleLangVar . '_EVENT_HOST_TYPE_MEDIADIR' => $eventId != 0 ? $objEvent->hostType == 2 ? "checked='checked'" : '' : "", $this->moduleLangVar . '_EVENT_COPY' => $copy ? 1 : 0, $this->moduleLangVar . '_EVENT_REGISTRATION_NONE_SELECTED' => !empty($eventId) ? $objEvent->registration == CalendarEvent::EVENT_REGISTRATION_NONE ? 'selected="selected"' : '' : 'selected="selected"', $this->moduleLangVar . '_EVENT_REGISTRATION_INTERNAL_SELECTED' => !empty($eventId) && $objEvent->registration == CalendarEvent::EVENT_REGISTRATION_INTERNAL ? 'selected="selected"' : '', $this->moduleLangVar . '_EVENT_REGISTRATION_EXTERNAL_SELECTED' => !empty($eventId) && $objEvent->registration == CalendarEvent::EVENT_REGISTRATION_EXTERNAL ? 'selected="selected"' : '', $this->moduleLangVar . '_EVENT_REGISTRATION_EXTERNAL_LINK' => !empty($eventId) ? $objEvent->registrationExternalLink : '', $this->moduleLangVar . '_EVENT_REGISTRATION_EXTERNAL_FULL_BOOKED' => !empty($eventId) ? $objEvent->registrationExternalFullyBooked ? 'checked="checked"' : '' : '')); // parse invitation E-mail template foreach ($this->arrFrontendLanguages as $language) { $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_INVITATION_EMAIL_LANG' => \Html::getLanguageIcon($language['id'], 'active', 'javascript:void()'), $this->moduleLangVar . '_EVENT_INVITATION_EMAIL_LANG_ID' => (int) $language['id'], $this->moduleLangVar . '_EVENT_INVITATION_EMAIL_TEMPLATE' => $objMail->getTemplateDropdown(intval($objEvent->invitationTemplate[$language['id']]), \Cx\Modules\Calendar\Controller\CalendarMailManager::MAIL_INVITATION, $language['id']))); $this->_objTpl->parse('invitation_email_template'); $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_REGISTRATION_EMAIL_LANG' => \Html::getLanguageIcon($language['id'], 'active', 'javascript:void()'), $this->moduleLangVar . '_EVENT_REGISTRATION_EMAIL_LANG_ID' => (int) $language['id'], $this->moduleLangVar . '_EVENT_REGISTRATION_EMAIL_TEMPLATE' => $objMail->getTemplateDropdown(intval($objEvent->emailTemplate[$language['id']]), \Cx\Modules\Calendar\Controller\CalendarMailManager::MAIL_CONFIRM_REG, $language['id']))); $this->_objTpl->parse('registration_email_template'); } //parse access for ($i = 0; $i < 2; $i++) { $selectedAccess = $eventId == 0 && $i == 0 ? 'selected="selected"' : $objEvent->access == $i ? 'selected="selected"' : ''; $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_ACCESS' => $i, $this->moduleLangVar . '_EVENT_ACCESS_SELECT' => $selectedAccess, $this->moduleLangVar . '_EVENT_ACCESS_NAME' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ACCESS_' . $i])); $this->_objTpl->parse('eventAccess'); } //parse priority for ($i = 1; $i <= 5; $i++) { $selectedPriority = $eventId == 0 && $i == 3 ? 'selected="selected"' : $objEvent->priority == $i ? 'selected="selected"' : ''; $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_PRIORITY' => $i, $this->moduleLangVar . '_EVENT_PRIORITY_SELECT' => $selectedPriority, $this->moduleLangVar . '_EVENT_PRIORITY_NAME' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PRIORITY_' . $i])); $this->_objTpl->parse('eventPriority'); } //parse timetypes if ($eventId != 0) { // list view $showStartDateList = $objEvent->showStartDateList; $showEndDateList = $objEvent->showEndDateList; $showStartTimeList = $objEvent->showStartTimeList; $showEndTimeList = $objEvent->showEndTimeList; $showTimeTypeList = $objEvent->showTimeTypeList; // detail view $showStartDateDetail = $objEvent->showStartDateDetail; $showEndDateDetail = $objEvent->showEndDateDetail; $showStartTimeDetail = $objEvent->showStartTimeDetail; $showEndTimeDetail = $objEvent->showEndTimeDetail; $showTimeTypeDetail = $objEvent->showTimeTypeDetail; } else { // list view $showStartDateList = $this->arrSettings['showStartDateList'] == 1; $showEndDateList = $this->arrSettings['showEndDateList'] == 1; $showStartTimeList = $this->arrSettings['showStartTimeList'] == 1; $showEndTimeList = $this->arrSettings['showEndTimeList'] == 1; // check if start- or endtime is selected in settings to set type "show time" by default if (!$_POST['showTimeTypeList'] && ($showStartTimeList == 1 || $showEndTimeList == 1)) { $showTimeTypeList = 1; } else { $showTimeTypeList = $_POST['showTimeTypeList']; } // detail view $showStartDateDetail = $this->arrSettings['showStartDateDetail'] == 1; $showEndDateDetail = $this->arrSettings['showEndDateDetail'] == 1; $showStartTimeDetail = $this->arrSettings['showStartTimeDetail'] == 1; $showEndTimeDetail = $this->arrSettings['showEndTimeDetail'] == 1; // check if start- or endtime is selected in settings to set type "show time" by default if (!$_POST['showTimeTypeDetail'] && ($showStartTimeDetail == 1 || $showEndTimeDetail == 1)) { $showTimeTypeDetail = 1; } else { $showTimeTypeDetail = $_POST['showTimeTypeDetail']; } } //time type dropdown for list $c = 0; $arrListOptions = array($_ARRAYLANG['TXT_CALENDAR_TIME_TYPE_NOTHING'], $_ARRAYLANG['TXT_CALENDAR_TIME_TYPE_TIME'], $_ARRAYLANG['TXT_CALENDAR_TIME_TYPE_FULLTIME']); $strTimeTypeListDropdown = '<select id="showTimeTypeList" name="showTimeTypeList" onchange="showTimeListSelection();" >'; foreach ($arrListOptions as $key => $option) { $c == $showTimeTypeList ? $selected = 'selected="selected"' : ($selected = ''); $strTimeTypeListDropdown .= '<option value="' . $c . '" ' . $selected . ' >' . $arrListOptions[$c] . '</option>'; $c++; } $strTimeTypeListDropdown .= '</select>'; //time type dropdown for detail $c = 0; $arrDetailOptions = array($_ARRAYLANG['TXT_CALENDAR_TIME_TYPE_NOTHING'], $_ARRAYLANG['TXT_CALENDAR_TIME_TYPE_TIME'], $_ARRAYLANG['TXT_CALENDAR_TIME_TYPE_FULLTIME']); $strTimeTypeDetailDropdown = '<select id="showTimeTypeDetail" name="showTimeTypeDetail" onchange="showTimeDetailSelection();" >'; foreach ($arrDetailOptions as $key => $option) { $c == $showTimeTypeDetail ? $selected = 'selected="selected"' : ($selected = ''); $strTimeTypeDetailDropdown .= '<option value="' . $c . '" ' . $selected . ' >' . $arrDetailOptions[$c] . '</option>'; $c++; } $strTimeTypeDetailDropdown .= '</select>'; //time type placeholders $this->_objTpl->setVariable(array($this->moduleLangVar . '_USE_CUSTOM_DATE_DISPLAY' => $objEvent->useCustomDateDisplay ? 'checked="checked"' : '', $this->moduleLangVar . '_START_DATE_CHECKED_LIST' => $showStartDateList ? 'checked="checked"' : '', $this->moduleLangVar . '_START_DATE_VALUE_LIST' => 1, $this->moduleLangVar . '_END_DATE_CHECKED_LIST' => $showEndDateList ? 'checked="checked"' : '', $this->moduleLangVar . '_END_DATE_VALUE_LIST' => 1, $this->moduleLangVar . '_SHOW_TIME_TYPE_DROPDOWN_LIST' => $strTimeTypeListDropdown, $this->moduleLangVar . '_START_TIME_CHECKED_LIST' => $showStartTimeList ? 'checked="checked"' : '', $this->moduleLangVar . '_START_TIME_VALUE_LIST' => 1, $this->moduleLangVar . '_END_TIME_CHECKED_LIST' => $showEndTimeList ? 'checked="checked"' : '', $this->moduleLangVar . '_END_TIME_VALUE_LIST' => 1, $this->moduleLangVar . '_START_DATE_CHECKED_DETAIL' => $showStartDateDetail ? 'checked="checked"' : '', $this->moduleLangVar . '_START_DATE_VALUE_DETAIL' => 1, $this->moduleLangVar . '_END_DATE_CHECKED_DETAIL' => $showEndDateDetail ? 'checked="checked"' : '', $this->moduleLangVar . '_END_DATE_VALUE_DETAIL' => 1, $this->moduleLangVar . '_SHOW_TIME_TYPE_DROPDOWN_DETAIL' => $strTimeTypeDetailDropdown, $this->moduleLangVar . '_START_TIME_CHECKED_DETAIL' => $showStartTimeDetail ? 'checked="checked"' : '', $this->moduleLangVar . '_START_TIME_VALUE_DETAIL' => 1, $this->moduleLangVar . '_END_TIME_CHECKED_DETAIL' => $showEndTimeDetail ? 'checked="checked"' : '', $this->moduleLangVar . '_END_TIME_VALUE_DETAIL' => 1)); //parse series $lastExeptionId = 4; $seriesStatus = $objEvent->seriesStatus == 1 ? 'checked="checked"' : ''; $seriesIndependent = empty($eventId) || $objEvent->independentSeries == 1 ? 'checked="checked"' : ''; $seriesPatternDailyDays = 1; $seriesPatternWeeklyWeeks = 1; $seriesPatternMonthlyDay = 1; $seriesPatternMonthl1 = 1; $seriesPatternMonthl2 = 1; $seriesPatternEndsEvents = 5; if ($eventId != 0 && $objEvent->seriesStatus == 1) { $seriesPatternDaily = $objEvent->seriesData['seriesType'] == 1 ? 'selected="selected"' : ''; $seriesPatternWeekly = $objEvent->seriesData['seriesType'] == 2 ? 'selected="selected"' : ''; $seriesPatternMonthly = $objEvent->seriesData['seriesType'] == 3 ? 'selected="selected"' : ''; //daily if ($objEvent->seriesData['seriesType'] == 1) { $seriesPatternDaily1 = $objEvent->seriesData['seriesPatternType'] == 1 ? 'checked="checked"' : ''; $seriesPatternDaily2 = $objEvent->seriesData['seriesPatternType'] == 2 ? 'checked="checked"' : ''; $seriesPatternDailyDays = $objEvent->seriesData['seriesPatternType'] == 1 ? $objEvent->seriesData['seriesPatternDay'] : 1; } //weekly if ($objEvent->seriesData['seriesType'] == 2) { $seriesPatternWeeklyWeeks = $objEvent->seriesData['seriesPatternWeek']; $seriesPatternWeeklyMon = substr($objEvent->seriesData['seriesPatternWeekday'], 0, 1) == 1 ? 'checked="checked"' : ''; $seriesPatternWeeklyTue = substr($objEvent->seriesData['seriesPatternWeekday'], 1, 1) == 1 ? 'checked="checked"' : ''; $seriesPatternWeeklyWed = substr($objEvent->seriesData['seriesPatternWeekday'], 2, 1) == 1 ? 'checked="checked"' : ''; $seriesPatternWeeklyThu = substr($objEvent->seriesData['seriesPatternWeekday'], 3, 1) == 1 ? 'checked="checked"' : ''; $seriesPatternWeeklyFri = substr($objEvent->seriesData['seriesPatternWeekday'], 4, 1) == 1 ? 'checked="checked"' : ''; $seriesPatternWeeklySat = substr($objEvent->seriesData['seriesPatternWeekday'], 5, 1) == 1 ? 'checked="checked"' : ''; $seriesPatternWeeklySun = substr($objEvent->seriesData['seriesPatternWeekday'], 6, 1) == 1 ? 'checked="checked"' : ''; } //monthly if ($objEvent->seriesData['seriesType'] == 3) { $seriesPatternMonthly1 = $objEvent->seriesData['seriesPatternType'] == 1 ? 'checked="checked"' : ''; $seriesPatternMonthly2 = $objEvent->seriesData['seriesPatternType'] == 2 ? 'checked="checked"' : ''; if ($objEvent->seriesData['seriesPatternType'] == 1) { $seriesPatternMonthlyDay = $objEvent->seriesData['seriesPatternDay']; $seriesPatternMonthl1 = $objEvent->seriesData['seriesPatternMonth']; } if ($objEvent->seriesData['seriesPatternType'] == 2) { $seriesPatternMonthl2 = $objEvent->seriesData['seriesPatternMonth']; } } //douration $seriesPatternDourance1 = $objEvent->seriesData['seriesPatternDouranceType'] == 1 ? 'checked="checked"' : ''; $seriesPatternDourance2 = $objEvent->seriesData['seriesPatternDouranceType'] == 2 ? 'checked="checked"' : ''; $seriesPatternDourance3 = $objEvent->seriesData['seriesPatternDouranceType'] == 3 ? 'checked="checked"' : ''; $seriesPatternEndsEvents = $objEvent->seriesData['seriesPatternDouranceType'] == 2 ? $objEvent->seriesData['seriesPatternEnd'] : 5; $seriesPatternEndsDate = $objEvent->seriesData['seriesPatternDouranceType'] == 3 ? $this->format2userDate($objEvent->seriesData['seriesPatternEndDate']) : ''; foreach ($objEvent->seriesData['seriesPatternExceptions'] as $key => $seriesExceptionDate) { if ($seriesExceptionDate != null) { $this->_objTpl->setVariable(array($this->moduleLangVar . '_SERIES_EXEPTION_DATE' => $this->format2userDate($seriesExceptionDate))); $this->_objTpl->parse('eventExeptions'); } } } else { $seriesPatternDaily = 'checked="checked"'; $seriesPatternDaily1 = 'checked="checked"'; $seriesPatternMonthly1 = 'checked="checked"'; $seriesPatternDourance1 = 'checked="checked"'; $this->_objTpl->hideBlock('eventExeptions'); } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_SERIES_STATUS' => $seriesStatus, $this->moduleLangVar . '_EVENT_SERIES_INDEPENDENT' => $seriesIndependent, $this->moduleLangVar . '_SERIES_PATTERN_DAILY' => $seriesPatternDaily, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY' => $seriesPatternWeekly, $this->moduleLangVar . '_SERIES_PATTERN_MONTHLY' => $seriesPatternMonthly, $this->moduleLangVar . '_SERIES_PATTERN_DAILY_1' => $seriesPatternDaily1, $this->moduleLangVar . '_SERIES_PATTERN_DAILY_2' => $seriesPatternDaily2, $this->moduleLangVar . '_SERIES_PATTERN_DAILY_DAYS' => $seriesPatternDailyDays, $this->moduleLangVar . '_SERIES_PATTERN_MONTHLY_1' => $seriesPatternMonthly1, $this->moduleLangVar . '_SERIES_PATTERN_MONTHLY_DAY' => $seriesPatternMonthlyDay, $this->moduleLangVar . '_SERIES_PATTERN_MONTHLY_MONTH_1' => $seriesPatternMonthl1, $this->moduleLangVar . '_SERIES_PATTERN_MONTHLY_MONTH_2' => $seriesPatternMonthl2, $this->moduleLangVar . '_SERIES_PATTERN_MONTHLY_2' => $seriesPatternMonthly2, $this->moduleLangVar . '_SERIES_PATTERN_DOURANCE_1' => $seriesPatternDourance1, $this->moduleLangVar . '_SERIES_PATTERN_DOURANCE_2' => $seriesPatternDourance2, $this->moduleLangVar . '_SERIES_PATTERN_DOURANCE_3' => $seriesPatternDourance3, $this->moduleLangVar . '_SERIES_PATTERN_ENDS_EVENTS' => $seriesPatternEndsEvents, $this->moduleLangVar . '_SERIES_PATTERN_ENDS_DATE' => $seriesPatternEndsDate, $this->moduleLangVar . '_SERIES_PATTERN_ENDS_INPUT_ID' => $seriesPatternEndsInputId, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_WEEKS' => $seriesPatternWeeklyWeeks, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_MONDAY' => $seriesPatternWeeklyMon, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_TUESDAY' => $seriesPatternWeeklyTue, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_WEDNESDAY' => $seriesPatternWeeklyWed, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_THURSDAY' => $seriesPatternWeeklyThu, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_FRIDAY' => $seriesPatternWeeklyFri, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_SATURDAY' => $seriesPatternWeeklySat, $this->moduleLangVar . '_SERIES_PATTERN_WEEKLY_SUNDAY' => $seriesPatternWeeklySun)); //parse publicate $objHostManager = new \Cx\Modules\Calendar\Controller\CalendarHostManager(null, true); $objHostManager->getHostList(); foreach ($objHostManager->hostList as $key => $objHost) { if (in_array($objHost->id, $objEvent->relatedHosts)) { $selectetHosts .= '<option value="' . $objHost->id . '">' . $objHost->title . '</option>'; } else { $deselectetHosts .= '<option value="' . $objHost->id . '">' . $objHost->title . '</option>'; } } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_DESELECTED_HOSTS' => $deselectetHosts, $this->moduleLangVar . '_EVENT_SELECTED_HOSTS' => $selectetHosts)); if ($this->arrSettings['publicationStatus'] == 1 && !empty($objHostManager->hostList)) { $onsubmitPublications = "selectAll(document.formModifyEvent.elements['selectedHosts[]']);"; $this->_objTpl->touchBlock('eventPublicateMenu'); $this->_objTpl->touchBlock('eventPublicateTab'); } else { $onsubmitPublications = ""; $this->_objTpl->hideBlock('eventPublicateMenu'); $this->_objTpl->hideBlock('eventPublicateTab'); } //parse ivited groups $this->getCommunityGroups(); foreach ($this->arrCommunityGroups as $key => $arrGroup) { if (in_array($arrGroup['id'], $objEvent->invitedGroups)) { $selectedGroups .= '<option value="' . $arrGroup['id'] . '">' . htmlentities($arrGroup['name'], ENT_QUOTES, CONTREXX_CHARSET) . '</option>'; } else { $deselectedGroups .= '<option value="' . $arrGroup['id'] . '">' . htmlentities($arrGroup['name'], ENT_QUOTES, CONTREXX_CHARSET) . '</option>'; } } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_DESELECTED_GROUPS' => $deselectedGroups, $this->moduleLangVar . '_EVENT_SELECTED_GROUPS' => $selectedGroups, $this->moduleLangVar . '_EVENT_ONSUBMIT_PUBLICATIONS' => $onsubmitPublications)); $forcedLanguage = null; if (isset($_GET['langId']) && in_array(contrexx_input2raw($_GET['langId']), \FWLanguage::getIdArray())) { $forcedLanguage = contrexx_input2raw($_GET['langId']); } //parse placeSelect if ((int) $this->arrSettings['placeData'] > 1) { $objMediadirEntries = new \Cx\Modules\MediaDir\Controller\MediaDirectoryEntry('MediaDir'); $objMediadirEntries->getEntries(null, null, null, null, null, null, true, 0, 'n', null, null, intval($this->arrSettings['placeDataForm'])); $placeOptions = '<option value="">' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>'; foreach ($objMediadirEntries->arrEntries as $key => $arrEntry) { $selectedPlace = $arrEntry['entryId'] == $objEvent->place_mediadir_id ? 'selected="selected"' : ''; $placeOptions .= '<option ' . $selectedPlace . ' value="' . $arrEntry['entryId'] . '">' . $arrEntry['entryFields'][0] . '</option>'; } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_PLACE_OPTIONS' => $placeOptions)); $this->_objTpl->parse('eventPlaceSelect'); if ((int) $this->arrSettings['placeData'] == 2) { $this->_objTpl->hideBlock('eventPlaceInput'); $this->_objTpl->hideBlock('eventPlaceTypeRadio'); } else { $this->_objTpl->touchBlock('eventPlaceInput'); $this->_objTpl->touchBlock('eventPlaceTypeRadio'); } } else { $this->_objTpl->touchBlock('eventPlaceInput'); $this->_objTpl->hideBlock('eventPlaceSelect'); $this->_objTpl->hideBlock('eventPlaceTypeRadio'); } //parse placeHostSelect if ((int) $this->arrSettings['placeDataHost'] > 1) { $objMediadirEntries = new \Cx\Modules\MediaDir\Controller\MediaDirectoryEntry('MediaDir'); $objMediadirEntries->getEntries(null, null, null, null, null, null, true, 0, 'n', null, null, intval($this->arrSettings['placeDataHostForm'])); $placeOptions = '<option value="">' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>'; foreach ($objMediadirEntries->arrEntries as $key => $arrEntry) { $selectedPlace = $arrEntry['entryId'] == $objEvent->host_mediadir_id ? 'selected="selected"' : ''; $placeOptions .= '<option ' . $selectedPlace . ' value="' . $arrEntry['entryId'] . '">' . $arrEntry['entryFields'][0] . '</option>'; } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_PLACE_OPTIONS' => $placeOptions)); $this->_objTpl->parse('eventHostSelect'); if ((int) $this->arrSettings['placeDataHost'] == 2) { $this->_objTpl->hideBlock('eventHostInput'); $this->_objTpl->hideBlock('eventHostTypeRadio'); } else { $this->_objTpl->touchBlock('eventHostInput'); $this->_objTpl->touchBlock('eventHostTypeRadio'); } } else { $this->_objTpl->touchBlock('eventHostInput'); $this->_objTpl->hideBlock('eventHostSelect'); $this->_objTpl->hideBlock('eventHostTypeRadio'); } $multiLingualFields = array('place', 'place_city', 'place_country', 'org_name', 'org_city', 'org_country'); $isOneActiveLanguage = count($this->arrFrontendLanguages) == 1; foreach ($multiLingualFields as $inputField) { if ($isOneActiveLanguage) { $this->_objTpl->hideBlock('calendar_event_' . $inputField . '_expand'); } else { $this->_objTpl->touchBlock('calendar_event_' . $inputField . '_expand'); } } foreach ($this->arrFrontendLanguages as $key => $arrLang) { //parse globals $this->_objTpl->setGlobalVariable(array($this->moduleLangVar . '_EVENT_LANG_SHORTCUT' => $arrLang['lang'], $this->moduleLangVar . '_EVENT_LANG_ID' => $arrLang['id'], 'TXT_' . $this->moduleLangVar . '_EVENT_LANG_NAME' => $arrLang['name'])); //parse "show in" checkboxes $arrShowIn = explode(",", $objEvent->showIn); $langChecked = false; if ($eventId != 0) { $langChecked = in_array($arrLang['id'], $arrShowIn); if ($forcedLanguage && !$langChecked) { $langChecked = $forcedLanguage == $arrLang['id']; } } else { $langChecked = $arrLang['is_default'] == 'true'; } if ($langChecked) { $langChecked = 'checked="checked"'; } else { $langChecked = ''; } $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_LANG_CHECKED' => $langChecked)); $this->_objTpl->parse('eventShowIn'); $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_TAB_DISPLAY' => $arrLang['is_default'] == 'true' ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TITLE' => !empty($objEvent->arrData['title'][$arrLang['id']]) ? $objEvent->arrData['title'][$arrLang['id']] : $objEvent->title, $this->moduleLangVar . '_EVENT_TEASER' => !empty($objEvent->arrData['teaser'][$arrLang['id']]) ? $objEvent->arrData['teaser'][$arrLang['id']] : $objEvent->teaser)); //parse eventTabMenuDescTab $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_TAB_CLASS' => $defaultLang ? 'active' : '')); $this->_objTpl->parse('eventTabMenuDescTab'); //parse eventDescTab $this->_objTpl->setVariable(array('TXT_' . $this->moduleLangVar . '_EVENT_DESCRIPTION' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DESCRIPTION'], 'TXT_' . $this->moduleLangVar . '_EVENT_REDIRECT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_REDIRECT'], $this->moduleLangVar . '_EVENT_TAB_DISPLAY' => $arrLang['is_default'] == 'true' ? 'block' : 'none', $this->moduleLangVar . '_EVENT_DESCRIPTION' => new \Cx\Core\Wysiwyg\Wysiwyg('description[' . $arrLang['id'] . ']', !empty($objEvent->arrData['description'][$arrLang['id']]) ? contrexx_raw2xhtml($objEvent->arrData['description'][$arrLang['id']]) : contrexx_raw2xhtml($objEvent->description), 'full'), $this->moduleLangVar . '_EVENT_REDIRECT' => !empty($objEvent->arrData['redirect'][$arrLang['id']]) ? $objEvent->arrData['redirect'][$arrLang['id']] : $objEvent->arrData['redirect'][$_LANGID], $this->moduleLangVar . '_EVENT_TYPE_EVENT_DISPLAY' => $objEvent->type == 0 ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TYPE_REDIRECT_DISPLAY' => $objEvent->type == 1 ? 'block' : 'none', $this->moduleLangVar . '_ONSUBMIT_PUBLICATION' => $onsubmitPublications)); $this->_objTpl->parse('eventDescTab'); //parse eventLingualFields foreach ($multiLingualFields as $inputField) { $this->_objTpl->setVariable($this->moduleLangVar . '_EVENT_' . strtoupper($inputField) . '_DEFAULT', $eventId != 0 ? $objEvent->{$inputField} : ''); $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_VALUE' => !empty($objEvent->arrData[$inputField][$arrLang['id']]) ? $objEvent->arrData[$inputField][$arrLang['id']] : ($eventId != 0 ? $objEvent->{$inputField} : ''))); $this->_objTpl->parse('calendar_event_' . $inputField); } } if (isset($_GET['confirm']) && $_GET['confirm']) { $this->_objTpl->setGlobalVariable(array($this->moduleLangVar . '_SAVE_PUBLISH' => "<input type='submit' name='save_and_publish' value='{$_ARRAYLANG['TXT_CALENDAR_SAVE_AND_PUBLISH']}'>", $this->moduleLangVar . '_EVENT_DELETE' => "<input type='button' name='delete' value='{$_ARRAYLANG['TXT_CALENDAR_DELETE']}' onClick='if (confirm(\"{$_ARRAYLANG['TXT_CALENDAR_CONFIRM_DELETE_DATA']}\\n{$_ARRAYLANG['TXT_CALENDAR_ACTION_IS_IRREVERSIBLE']}\")) { window.location.href = \"index.php?cmd={$this->moduleName}&delete={$eventId}&" . \Cx\Core\Csrf\Controller\Csrf::param() . "\"} return false;'>")); } \Cx\Core\Core\Controller\Cx::instanciate()->getComponent('Cache')->deleteComponentFiles('Calendar'); }
/** * Sets placeholders for the form view. * * @param object $objTpl Template object * @param integer $formId Form id * @param integer $intView request mode frontend or backend * @param integer $arrNumSeating number of seating * * @return null */ function showForm($objTpl, $formId, $intView, $ticketSales = false) { global $_ARRAYLANG, $_LANGID; $objForm = new \Cx\Modules\Calendar\Controller\CalendarForm(intval($formId)); if (!empty($formId)) { $this->formList[$formId] = $objForm; } switch ($intView) { case 1: $this->getFrontendLanguages(); $objTpl->setGlobalVariable(array($this->moduleLangVar . '_FORM_ID' => !empty($formId) ? $objForm->id : '', $this->moduleLangVar . '_FORM_TITLE' => !empty($formId) ? $objForm->title : '')); $i = 0; $formFields = array(); if (!empty($formId)) { $defaultLangId = $_LANGID; if (!in_array($defaultLangId, \FWLanguage::getIdArray())) { $defaultLangId = \FWLanguage::getDefaultLangId(); } foreach ($objForm->inputfields as $key => $arrInputfield) { $i++; $fieldValue = array(); $defaultFieldValue = array(); foreach ($this->arrFrontendLanguages as $key => $arrLang) { $fieldValue[$arrLang['id']] = isset($arrInputfield['name'][$arrLang['id']]) ? $arrInputfield['name'][$arrLang['id']] : ''; $defaultFieldValue[$arrLang['id']] = isset($arrInputfield['default_value'][$arrLang['id']]) ? $arrInputfield['default_value'][$arrLang['id']] : ''; } $formFields[] = array('type' => $arrInputfield['type'], 'id' => $arrInputfield['id'], 'row' => $i % 2 == 0 ? 'row2' : 'row1', 'order' => $arrInputfield['order'], 'name_master' => $fieldValue[$defaultLangId], 'default_value_master' => $defaultFieldValue[$defaultLangId], 'required' => $arrInputfield['required'], 'affiliation' => $arrInputfield['affiliation'], 'field_value' => json_encode($fieldValue), 'default_field_value' => json_encode($defaultFieldValue)); } } foreach ($this->arrFrontendLanguages as $key => $arrLang) { $objTpl->setVariable(array($this->moduleLangVar . '_INPUTFIELD_LANG_ID' => $arrLang['id'], $this->moduleLangVar . '_INPUTFIELD_LANG_NAME' => $arrLang['name'], $this->moduleLangVar . '_INPUTFIELD_LANG_SHORTCUT' => $arrLang['lang'])); $objTpl->parse('inputfieldNameList'); $objTpl->setVariable(array($this->moduleLangVar . '_INPUTFIELD_LANG_ID' => $arrLang['id'], $this->moduleLangVar . '_INPUTFIELD_LANG_NAME' => $arrLang['name'], $this->moduleLangVar . '_INPUTFIELD_LANG_SHORTCUT' => $arrLang['lang'])); $objTpl->parse('inputfieldDefaultValueList'); $objTpl->setVariable(array($this->moduleLangVar . '_INPUTFIELD_LANG_NAME' => $arrLang['name'])); $objTpl->parse('inputfieldLanguagesList'); } foreach ($this->arrInputfieldTypes as $fieldType) { $objTpl->setVariable(array($this->moduleLangVar . '_FORM_FIELD_TYPE' => $fieldType, 'TXT_' . $this->moduleLangVar . '_FORM_FIELD_TYPE' => $_ARRAYLANG['TXT_CALENDAR_FORM_FIELD_' . strtoupper($fieldType)])); $objTpl->parse('inputfieldTypes'); } foreach ($this->arrRegistrationFields as $fieldType) { $objTpl->setVariable(array($this->moduleLangVar . '_FORM_FIELD_TYPE' => $fieldType, 'TXT_' . $this->moduleLangVar . '_FORM_FIELD_TYPE' => $_ARRAYLANG['TXT_CALENDAR_FORM_FIELD_' . strtoupper($fieldType)])); $objTpl->parse('inputRegfieldTypes'); } /* foreach ($this->arrInputfieldAffiliations as $strAffiliation) { $objTpl->setVariable(array( $this->moduleLangVar.'_FORM_FIELD_TYPE' => $strAffiliation, 'TXT_'.$this->moduleLangVar.'_FORM_FIELD_TYPE' => $_ARRAYLANG['TXT_CALENDAR_FORM_FIELD_AFFILIATION_'.strtoupper($strAffiliation)], )); $objTpl->parse('fieldAfflications'); }*/ $objTpl->setVariable(array($this->moduleLangVar . '_FORM_DATA' => json_encode($formFields), $this->moduleLangVar . '_FRONTEND_LANG_COUNT' => count($this->arrFrontendLanguages), $this->moduleLangVar . '_INPUTFIELD_LAST_ID' => $objForm->getLastInputfieldId(), $this->moduleLangVar . '_INPUTFIELD_LAST_ROW' => $i % 2 == 0 ? "'row2'" : "'row1'", $this->moduleLangVar . '_DISPLAY_EXPAND' => count($this->arrFrontendLanguages) > 1 ? "block" : "none")); break; case 2: $objFieldTemplate = new \Cx\Core\Html\Sigma('.'); $objFieldTemplate->setTemplate(self::frontendFieldTemplate, true, true); $objFieldTemplate->setVariable(array('TXT_' . $this->moduleLangVar . '_FIELD_NAME' => $_ARRAYLANG['TXT_CALENDAR_TYPE'] . '<font class="calendarRequired"> *</font>', $this->moduleLangVar . '_FIELD_INPUT' => '<select class="calendarSelect affiliateForm" name="registrationType"><option value="1" selected="selected"/>' . $_ARRAYLANG['TXT_CALENDAR_REG_REGISTRATION'] . '</option><option value="0"/>' . $_ARRAYLANG['TXT_CALENDAR_REG_SIGNOFF'] . '</option></select>', $this->moduleLangVar . '_FIELD_CLASS' => 'affiliationForm')); $objTpl->setVariable($this->moduleLangVar . '_REGISTRATION_FIELD', $objFieldTemplate->get()); $objTpl->parse('calendarRegistrationField'); // $selectBillingAddressStatus = false; foreach ($objForm->inputfields as $key => $arrInputfield) { $objFieldTemplate->setTemplate(self::frontendFieldTemplate, true, true); $options = array(); $options = explode(',', $arrInputfield['default_value'][$_LANGID]); $inputfield = null; $hide = false; $optionSelect = true; $availableSeat = 0; $checkSeating = false; if (isset($_POST['registrationField'][$arrInputfield['id']])) { $value = $_POST['registrationField'][$arrInputfield['id']]; } elseif (\FWUser::getFWUserObject()->objUser->login() && in_array($arrInputfield['type'], array('mail', 'firstname', 'lastname'))) { $value = ''; switch ($arrInputfield['type']) { case 'mail': $value = \FWUser::getFWUserObject()->objUser->getEmail(); break; case 'firstname': $value = \FWUser::getFWUserObject()->objUser->getProfileAttribute('firstname'); break; case 'lastname': $value = \FWUser::getFWUserObject()->objUser->getProfileAttribute('lastname'); break; default: $value = $arrInputfield['default_value'][$_LANGID]; break; } } else { $value = $arrInputfield['default_value'][$_LANGID]; } $affiliationClass = 'affiliation' . ucfirst($arrInputfield['affiliation']); switch ($arrInputfield['type']) { case 'inputtext': case 'mail': case 'firstname': case 'lastname': $inputfield = '<input type="text" class="calendarInputText" name="registrationField[' . $arrInputfield['id'] . ']" value="' . $value . '" /> '; break; case 'textarea': $inputfield = '<textarea class="calendarTextarea" name="registrationField[' . $arrInputfield['id'] . ']">' . $value . '</textarea>'; break; case 'seating': if (!$ticketSales) { $hide = true; } $optionSelect = false; if ($this->event) { $checkSeating = $this->event->registration && $this->event->numSubscriber; $availableSeat = $this->event->getFreePlaces(); } case 'select': case 'salutation': $inputfield = '<select class="calendarSelect" name="registrationField[' . $arrInputfield['id'] . ']">'; $selected = empty($_POST) ? 'selected="selected"' : ''; $inputfield .= $optionSelect ? '<option value="" ' . $selected . '>' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>' : ''; foreach ($options as $key => $name) { if ($checkSeating && contrexx_input2int($name) > $availableSeat) { continue; } $selected = $key + 1 == $value ? 'selected="selected"' : ''; $inputfield .= '<option value="' . intval($key + 1) . '" ' . $selected . '>' . $name . '</option>'; } $inputfield .= '</select>'; break; case 'radio': foreach ($options as $key => $name) { $checked = $key + 1 == $value || empty($_POST) && $key == 0 ? 'checked="checked"' : ''; $textValue = isset($_POST["registrationFieldAdditional"][$arrInputfield['id']][$key]) ? $_POST["registrationFieldAdditional"][$arrInputfield['id']][$key] : ''; $textfield = '<input type="text" class="calendarInputCheckboxAdditional" name="registrationFieldAdditional[' . $arrInputfield['id'] . '][' . $key . ']" value="' . contrexx_input2xhtml($textValue) . '" />'; $name = str_replace('[[INPUT]]', $textfield, $name); $inputfield .= '<input type="radio" class="calendarInputCheckbox" name="registrationField[' . $arrInputfield['id'] . ']" value="' . intval($key + 1) . '" ' . $checked . '/> ' . $name . '<br />'; } break; case 'checkbox': foreach ($options as $key => $name) { $textValue = isset($_POST["registrationFieldAdditional"][$arrInputfield['id']][$key]) ? $_POST["registrationFieldAdditional"][$arrInputfield['id']][$key] : ''; $textfield = '<input type="text" class="calendarInputCheckboxAdditional" name="registrationFieldAdditional[' . $arrInputfield['id'] . '][' . $key . ']" value="' . contrexx_input2xhtml($textValue) . '" />'; $name = str_replace('[[INPUT]]', $textfield, $name); $checked = in_array($key + 1, $_POST['registrationField'][$arrInputfield['id']]) ? 'checked="checked"' : ''; $inputfield .= '<input ' . $checked . ' type="checkbox" class="calendarInputCheckbox" name="registrationField[' . $arrInputfield['id'] . '][]" value="' . intval($key + 1) . '" /> ' . $name . '<br />'; } break; case 'agb': $inputfield = '<input class="calendarInputCheckbox" type="checkbox" name="registrationField[' . $arrInputfield['id'] . '][]" value="1" /> ' . $_ARRAYLANG['TXT_CALENDAR_AGB'] . '<br />'; break; /* case 'selectBillingAddress': if(!$selectBillingAddressStatus) { if($_REQUEST['registrationField'][$arrInputfield['id']] == 'deviatesFromContact') { $selectDeviatesFromContact = 'selected="selected"'; } else { $selectDeviatesFromContact = ''; } $inputfield = '<select id="calendarSelectBillingAddress" class="calendarSelect" name="registrationField['.$arrInputfield['id'].']">'; $inputfield .= '<option value="sameAsContact">'.$_ARRAYLANG['TXT_CALENDAR_SAME_AS_CONTACT'].'</option>'; $inputfield .= '<option value="deviatesFromContact" '.$selectDeviatesFromContact.'>'.$_ARRAYLANG['TXT_CALENDAR_DEVIATES_FROM_CONTACT'].'</option>'; $inputfield .= '</select>'; $selectBillingAddressStatus = true; } break; */ /* case 'selectBillingAddress': if(!$selectBillingAddressStatus) { if($_REQUEST['registrationField'][$arrInputfield['id']] == 'deviatesFromContact') { $selectDeviatesFromContact = 'selected="selected"'; } else { $selectDeviatesFromContact = ''; } $inputfield = '<select id="calendarSelectBillingAddress" class="calendarSelect" name="registrationField['.$arrInputfield['id'].']">'; $inputfield .= '<option value="sameAsContact">'.$_ARRAYLANG['TXT_CALENDAR_SAME_AS_CONTACT'].'</option>'; $inputfield .= '<option value="deviatesFromContact" '.$selectDeviatesFromContact.'>'.$_ARRAYLANG['TXT_CALENDAR_DEVIATES_FROM_CONTACT'].'</option>'; $inputfield .= '</select>'; $selectBillingAddressStatus = true; } break; */ case 'fieldset': $inputfield = null; break; } $field = ''; if ($arrInputfield['type'] == 'fieldset') { $field = '</fieldset><fieldset><legend>' . $arrInputfield['name'][$_LANGID] . '</legend>'; $hide = true; } else { $required = $arrInputfield['required'] == 1 ? '<font class="calendarRequired"> *</font>' : ''; $label = $arrInputfield['name'][$_LANGID] . $required; } if (!$hide) { $objFieldTemplate->setVariable(array('TXT_' . $this->moduleLangVar . '_FIELD_NAME' => $label, $this->moduleLangVar . '_FIELD_INPUT' => $inputfield, $this->moduleLangVar . '_FIELD_CLASS' => $affiliationClass)); $field = $objFieldTemplate->get(); } $objTpl->setVariable($this->moduleLangVar . '_REGISTRATION_FIELD', $field); $objTpl->parse('calendarRegistrationField'); } break; } }
/** * Migrates existing old Shop mailtemplates to the new MailTemplate class * @return boolean False. Always. * @throws Cx\Lib\Update_DatabaseException */ static function errorHandler() { if (!(include_once \Cx\Core\Core\Controller\Cx::instanciate()->getCodeBaseFrameworkPath() . '/UpdateUtil')) { return false; } if (\Cx\Lib\UpdateUtil::table_empty(DBPREFIX . 'core_mail_template')) { // Make sure there are no bodies lying around \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_NAME); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_FROM); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_SENDER); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_REPLY); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_TO); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_CC); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_BCC); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_SUBJECT); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_MESSAGE); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_MESSAGE_HTML); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_ATTACHMENTS); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_INLINE); } // Migrate existing templates from the shop to the MailTemplate. // These are the keys replacing the IDs. // TODO: Migrate the old template using the original IDs, make them unprotected // TODO: Add the new default templates with the new keys // and have the user migrate changes herself! $arrKey = array(1 => 'order_confirmation', 2 => 'order_complete', 3 => 'customer_login', 4 => 'order_confirmation_login'); $arrLanguageId = \FWLanguage::getIdArray(); if (empty($arrLanguageId)) { throw new \Cx\Lib\Update_DatabaseException("Failed to get frontend language IDs"); } foreach ($arrLanguageId as $lang_id) { // Mind that the template name is single language yet! $arrTemplates = self::getTemplateArray($lang_id); if (empty($arrTemplates)) { continue; } foreach ($arrTemplates as $id => $arrTemplate) { // TODO: utf8_encode() may not be necessary in all cases. // It worked without it for me earlier, but was necessary for verkehrstheorie.ch $arrTemplate = array_map("utf8_encode", $arrTemplate); if (isset($arrKey[$id])) { // System templates get their default key $arrTemplate['key'] = $arrKey[$id]; if ($id == 4) { // Clear the protected flag, so the obsolete template // #4 may be removed at will $arrTemplate['protected'] = false; } } else { // Custom templates: // Make the name lowercase and replace any non-letter $new_key = preg_replace('/[^a-z]/', '_', strtolower($arrTemplate['name'])); // Keep it unique! Use the ID if the key is taken if (in_array($new_key, $arrKey)) { $new_key = $id; } // Remember used keys, and replace the former ID $arrKey[$id] = $new_key; $arrTemplate['key'] = $new_key; } foreach ($arrTemplate as &$string) { // Replace old <PLACEHOLDERS> with new [PLACEHOLDERS]. $string = preg_replace('/\\<([A-Z_]+)\\>/', '[$1]', $string); // TODO: This is completely unreliable. // Use the process as described above, not replacing the old templates, // but adding the new ones instead. // $string = str_replace('[ORDER_DATA]', $order_data, $string); // $string = preg_replace('/[\\w\\s\\:]+\\[USERNAME\\](?:\\n|<br\\s?\\/? // >)*[\\w\\s\\:]+\\[PASSWORD\\]/', // $login_data, $string); } // $arrTemplate['message_html'] = preg_replace( // '/(?:\r|\n|\r\n)/', "<br />\n", $arrTemplate['message']); $arrTemplate['lang_id'] = $lang_id; if (!\Cx\Core\MailTemplate\Controller\MailTemplate::store('Shop', $arrTemplate)) { throw new \Cx\Lib\Update_DatabaseException("Failed to store Mailtemplate"); } } } // Drop old Mail tables after successful migration \Cx\Lib\UpdateUtil::drop_table(DBPREFIX . 'module_shop_mail_content'); \Cx\Lib\UpdateUtil::drop_table(DBPREFIX . 'module_shop_mail'); // Always! return false; }
/** * Migrates existing old Shop mailtemplates to the new MailTemplate class * @return boolean False. Always. * @throws Cx\Lib\Update_DatabaseException */ static function errorHandler() { // Mail \Cx\Core\MailTemplate\Controller\MailTemplate::errorHandler(); if (\Cx\Lib\UpdateUtil::table_empty(DBPREFIX . 'core_mail_template')) { // Make sure there are no bodies lying around \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_NAME); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_FROM); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_SENDER); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_REPLY); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_TO); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_CC); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_BCC); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_SUBJECT); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_MESSAGE); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_MESSAGE_HTML); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_ATTACHMENTS); \Text::deleteByKey('Shop', \Cx\Core\MailTemplate\Controller\MailTemplate::TEXT_INLINE); } $arrFrom = $arrSender = $arrSubject = array(); $arrLanguageId = \FWLanguage::getIdArray(); if (empty($arrLanguageId)) { throw new \Cx\Lib\Update_DatabaseException("Failed to get frontend language IDs"); } if (\Cx\Lib\UpdateUtil::table_exist(DBPREFIX . 'module_shop_mail')) { // Migrate existing templates from the shop to the MailTemplate, // appending "_backup_by_update" to the respective keys. // Make them unprotected. // These are the keys replacing the IDs: $arrKey = array(1 => 'order_confirmation', 2 => 'order_complete', 3 => 'customer_login', 4 => 'order_confirmation_login'); foreach ($arrLanguageId as $lang_id) { // Mind that the template name is single language yet! $arrTemplates = self::getTemplateArray($lang_id); if (empty($arrTemplates)) { continue; } foreach ($arrTemplates as $id => $arrTemplate) { // NOTE: utf8_encode() may be necessary in some cases. // It usually works without it, but was necessary on a few installations. // $arrTemplate = array_map("utf8_encode", $arrTemplate); if (!empty($arrTemplate['from']) && empty($arrFrom[$id])) { $arrFrom[$id] = $arrTemplate['from']; } if (!empty($arrTemplate['sender']) && empty($arrSender[$id])) { $arrSender[$id] = $arrTemplate['sender']; } if (!empty($arrTemplate['subject']) && empty($arrSubject[$id])) { $arrSubject[$id] = str_replace('<DATE>', '[ORDER_DATE]', $arrTemplate['subject']); } if (isset($arrKey[$id])) { // System templates get their default key $arrTemplate['key'] = $arrKey[$id] . '_backup_by_update'; // Clear the protected flag, so the old templates // may be removed at will $arrTemplate['protected'] = false; } else { // Custom templates: // Make the name lowercase and replace any non-letter $new_key = preg_replace('/[^a-z]/', '_', strtolower($arrTemplate['name'])); // Keep it unique! Use the ID if the key is taken if (in_array($new_key, $arrKey)) { $new_key = $id; } // Remember used keys, and replace the former ID $arrKey[$id] = $new_key; $arrTemplate['key'] = $new_key; } // Some installations may contain corrupt templates // causing empty (0 or "") keys. Those would make // MailTemplate::store() fail! if (empty($arrTemplate['key'])) { $arrTemplate['key'] = uniqid() . '_backup_by_update)'; } foreach ($arrTemplate as &$string) { // Replace old <PLACEHOLDERS> with new [PLACEHOLDERS]. $string = preg_replace('/\\<([A-Z_]+)\\>/', '[$1]', $string); // This is completely unreliable. // Use the process as described above, not replacing the old templates, // but adding the new ones instead. // $string = str_replace('[ORDER_DATA]', $order_data, $string); // $string = preg_replace('/[\\w\\s\\:]+\\[USERNAME\\](?:\\n|<br\\s?\\/? // >)*[\\w\\s\\:]+\\[PASSWORD\\]/', // $login_data, $string); } // $arrTemplate['message_html'] = preg_replace( // '/(?:\r|\n|\r\n)/', "<br />\n", $arrTemplate['message']); $arrTemplate['lang_id'] = $lang_id; if (!\Cx\Core\MailTemplate\Controller\MailTemplate::store('Shop', $arrTemplate)) { throw new \Cx\Lib\Update_DatabaseException("Failed to store Mailtemplate"); } } } // Drop old Mail tables after successful migration \Cx\Lib\UpdateUtil::drop_table(DBPREFIX . 'module_shop_mail_content'); \Cx\Lib\UpdateUtil::drop_table(DBPREFIX . 'module_shop_mail'); } // Add the new default templates with the new keys // and have the user migrate changes herself! foreach ($arrLanguageId as $lang_id) { if (!\Cx\Core\MailTemplate\Controller\MailTemplate::get('Shop', 'order_confirmation', $lang_id)) { \Cx\Core\MailTemplate\Controller\MailTemplate::store('Shop', array('lang_id' => $lang_id, 'key' => 'order_confirmation', 'name' => 'Bestellungsbestätigung', 'from' => isset($arrFrom[1]) ? $arrFrom[1] : '', 'sender' => isset($arrSender[1]) ? $arrSender[1] : '', 'to' => '[CUSTOMER_EMAIL]', 'subject' => isset($arrSubject[1]) ? $arrSubject[1] : '', 'message' => <<<EOF [CUSTOMER_SALUTATION], Herzlichen Dank für Ihre Bestellung im [SHOP_COMPANY] Online Shop. Ihre Auftrags-Nr. lautet: [ORDER_ID] Ihre Kunden-Nr. lautet: [CUSTOMER_ID] Bestellungszeit: [ORDER_DATE] [ORDER_TIME] ------------------------------------------------------------------------ Bestellinformationen ------------------------------------------------------------------------[[ORDER_ITEM] ID: [PRODUCT_ID] Artikel Nr.: [PRODUCT_CODE] Menge: [PRODUCT_QUANTITY] Beschreibung: [PRODUCT_TITLE][[PRODUCT_OPTIONS] [PRODUCT_OPTIONS][PRODUCT_OPTIONS]] Stückpreis: [PRODUCT_ITEM_PRICE] [CURRENCY] Total [PRODUCT_TOTAL_PRICE] [CURRENCY][[USER_DATA] Benutzername: [USER_NAME] Passwort: [USER_PASS][USER_DATA]][[COUPON_DATA] Gutschein Code: [COUPON_CODE][COUPON_DATA]][ORDER_ITEM]] ------------------------------------------------------------------------ Zwischensumme: [ORDER_ITEM_COUNT] Artikel [ORDER_ITEM_SUM] [CURRENCY][[DISCOUNT_COUPON] Gutschein Code: [DISCOUNT_COUPON_CODE] [DISCOUNT_COUPON_AMOUNT] [CURRENCY][DISCOUNT_COUPON]] ------------------------------------------------------------------------[[SHIPMENT] Versandart: [SHIPMENT_NAME] [SHIPMENT_PRICE] [CURRENCY][SHIPMENT]][[PAYMENT] Bezahlung: [PAYMENT_NAME] [PAYMENT_PRICE] [CURRENCY][PAYMENT]][[VAT] [VAT_TEXT] [VAT_PRICE] [CURRENCY][VAT]] ------------------------------------------------------------------------ Gesamtsumme [ORDER_SUM] [CURRENCY] ------------------------------------------------------------------------ Bemerkungen: [REMARKS] Ihre Kundenadresse: [CUSTOMER_COMPANY] [CUSTOMER_FIRSTNAME] [CUSTOMER_LASTNAME] [CUSTOMER_ADDRESS] [CUSTOMER_ZIP] [CUSTOMER_CITY] [CUSTOMER_COUNTRY][[SHIPPING_ADDRESS] Lieferadresse: [SHIPPING_COMPANY] [SHIPPING_FIRSTNAME] [SHIPPING_LASTNAME] [SHIPPING_ADDRESS] [SHIPPING_ZIP] [SHIPPING_CITY] [SHIPPING_COUNTRY][SHIPPING_ADDRESS]] Ihr Link zum Online Store: [SHOP_HOMEPAGE][[CUSTOMER_LOGIN] Ihre Zugangsdaten zum Shop: Benutzername: [CUSTOMER_USERNAME] Passwort: [CUSTOMER_PASSWORD][CUSTOMER_LOGIN]] Wir freuen uns auf Ihren nächsten Besuch im [SHOP_COMPANY] Online Store und wünschen Ihnen noch einen schönen Tag. P.S. Diese Auftragsbestätigung wurde gesendet an: [CUSTOMER_EMAIL] Mit freundlichen Grüssen Ihr [SHOP_COMPANY] Online Shop Team [SHOP_HOMEPAGE] EOF , 'message_html' => <<<EOF [CUSTOMER_SALUTATION],<br /> <br /> Herzlichen Dank für Ihre Bestellung im [SHOP_COMPANY] Online Shop.<br /> <br /> Ihre Auftrags-Nr. lautet: [ORDER_ID]<br /> Ihre Kunden-Nr. lautet: [CUSTOMER_ID]<br /> Bestellungszeit: [ORDER_DATE] [ORDER_TIME]<br /> <br /> <br /> <table cellspacing="1" cellpadding="1" style="border: 0;"> <tbody> <tr> <td colspan="6">Bestellinformationen</td> </tr> <tr> <td><div style="text-align: right;">ID</div></td> <td><div style="text-align: right;">Artikel Nr.</div></td> <td><div style="text-align: right;">Menge</div></td> <td>Beschreibung</td> <td><div style="text-align: right;">Stückpreis</div></td> <td><div style="text-align: right;">Total</div></td> </tr><!--[[ORDER_ITEM]--> <tr> <td><div style="text-align: right;">[PRODUCT_ID]</div></td> <td><div style="text-align: right;">[PRODUCT_CODE]</div></td> <td><div style="text-align: right;">[PRODUCT_QUANTITY]</div></td> <td>[PRODUCT_TITLE]<!--[[PRODUCT_OPTIONS]--><br /> [PRODUCT_OPTIONS]<!--[PRODUCT_OPTIONS]]--></td> <td><div style="text-align: right;">[PRODUCT_ITEM_PRICE] [CURRENCY]</div></td> <td><div style="text-align: right;">[PRODUCT_TOTAL_PRICE] [CURRENCY]</div></td> </tr><!--[[USER_DATA]--> <tr> <td colspan="3"> </td> <td>Benutzername: [USER_NAME]<br />Passwort: [USER_PASS]</td> <td colspan="2"> </td> </tr><!--[USER_DATA]]--><!--[[COUPON_DATA]--> <tr> <td colspan="3"> </td> <td>Gutschein Code: [COUPON_CODE]</td> <td colspan="2"> </td> </tr><!--[COUPON_DATA]]--><!--[ORDER_ITEM]]--> <tr style="border-top: 4px none;"> <td colspan="2">Zwischensumme</td> <td><div style="text-align: right;">[ORDER_ITEM_COUNT]</div></td> <td colspan="2">Artikel</td> <td><div style="text-align: right;">[ORDER_ITEM_SUM] [CURRENCY]</div></td> </tr><!--[[DISCOUNT_COUPON]--> <tr style="border-top: 4px none;"> <td colspan="3">Gutscheincode</td> <td colspan="2">[DISCOUNT_COUPON_CODE]</td> <td><div style="text-align: right;">[DISCOUNT_COUPON_AMOUNT] [CURRENCY]</div></td> </tr><!--[DISCOUNT_COUPON]][[SHIPMENT]--> <tr style="border-top: 2px none;"> <td colspan="3">Versandart</td> <td colspan="2">[SHIPMENT_NAME]</td> <td><div style="text-align: right;">[SHIPMENT_PRICE] [CURRENCY]</div></td> </tr><!--[SHIPMENT]][[PAYMENT]--> <tr style="border-top: 2px none;"> <td colspan="3">Bezahlung</td> <td colspan="2">[PAYMENT_NAME]</td> <td><div style="text-align: right;">[PAYMENT_PRICE] [CURRENCY]</div></td> </tr><!--[PAYMENT]][[VAT]--> <tr style="border-top: 2px none;"> <td colspan="5">[VAT_TEXT]</td> <td><div style="text-align: right;">[VAT_PRICE] [CURRENCY]</div></td> </tr><!--[VAT]]--> <tr style="border-top: 4px none;"> <td colspan="5">Gesamtsumme</td> <td><div style="text-align: right;">[ORDER_SUM] [CURRENCY]</div></td> </tr> </tbody> </table> <br /> Bemerkungen:<br /> [REMARKS]<br /> <br /> <br /> Ihre Kundenadresse:<br /> [CUSTOMER_COMPANY]<br /> [CUSTOMER_FIRSTNAME] [CUSTOMER_LASTNAME]<br /> [CUSTOMER_ADDRESS]<br /> [CUSTOMER_ZIP] [CUSTOMER_CITY]<br /> [CUSTOMER_COUNTRY]<br /><!--[[SHIPPING_ADDRESS]--> <br /> <br /> Lieferadresse:<br /> [SHIPPING_COMPANY]<br /> [SHIPPING_FIRSTNAME] [SHIPPING_LASTNAME]<br /> [SHIPPING_ADDRESS]<br /> [SHIPPING_ZIP] [SHIPPING_CITY]<br /> [SHIPPING_COUNTRY]<br /><!--[SHIPPING_ADDRESS]]--> <br /> <br /> Ihr Link zum Online Store: [SHOP_HOMEPAGE]<br /><!--[[CUSTOMER_LOGIN]--> <br /> Ihre Zugangsdaten zum Shop:<br /> Benutzername: [CUSTOMER_USERNAME]<br /> Passwort: [CUSTOMER_PASSWORD]<br /><!--[CUSTOMER_LOGIN]]--> <br /> Wir freuen uns auf Ihren nächsten Besuch im [SHOP_COMPANY] Online Store und wünschen Ihnen noch einen schönen Tag.<br /> <br /> P.S. Diese Auftragsbestätigung wurde gesendet an: [CUSTOMER_EMAIL]<br /> <br /> Mit freundlichen Grüssen<br /> Ihr [SHOP_COMPANY] Online Shop Team<br /> <br /> [SHOP_HOMEPAGE]<br /> <br /> EOF , 'protected' => true, 'html' => true)); } if (!\Cx\Core\MailTemplate\Controller\MailTemplate::get('Shop', 'order_complete', $lang_id)) { \Cx\Core\MailTemplate\Controller\MailTemplate::store('Shop', array('lang_id' => $lang_id, 'key' => 'order_complete', 'name' => 'Auftrag abgeschlossen', 'from' => isset($arrFrom[2]) ? $arrFrom[2] : '', 'sender' => isset($arrSender[2]) ? $arrSender[2] : '', 'to' => '[CUSTOMER_EMAIL]', 'subject' => isset($arrSubject[2]) ? $arrSubject[2] : '', 'message' => <<<EOF [CUSTOMER_SALUTATION] Ihre Bestellung wurde ausgeführt. Sie werden in den nächsten Tagen ihre Lieferung erhalten. Herzlichen Dank für das Vertrauen. Wir würden uns freuen, wenn Sie uns weiterempfehlen und wünschen Ihnen noch einen schönen Tag. Mit freundlichen Grüssen Ihr [SHOP_COMPANY] Online Shop Team [SHOP_HOMEPAGE] EOF , 'message_html' => <<<EOF [CUSTOMER_SALUTATION]<br /> <br /> Ihre Bestellung wurde ausgeführt. Sie werden in den nächsten Tagen ihre Lieferung erhalten.<br /> <br /> Herzlichen Dank für das Vertrauen.<br /> Wir würden uns freuen, wenn Sie uns weiterempfehlen und wünschen Ihnen noch einen schönen Tag.<br /> <br /> Mit freundlichen Grüssen<br /> Ihr [SHOP_COMPANY] Online Shop Team<br /> <br /> [SHOP_HOMEPAGE]<br /> EOF , 'protected' => true, 'html' => true)); } if (!\Cx\Core\MailTemplate\Controller\MailTemplate::get('Shop', 'customer_login', $lang_id)) { \Cx\Core\MailTemplate\Controller\MailTemplate::store('Shop', array('lang_id' => $lang_id, 'key' => 'customer_login', 'name' => 'Logindaten', 'from' => isset($arrFrom[3]) ? $arrFrom[3] : '', 'sender' => isset($arrSender[3]) ? $arrSender[3] : '', 'to' => '[CUSTOMER_EMAIL]', 'subject' => isset($arrSubject[3]) ? $arrSubject[3] : '', 'message' => <<<EOF [CUSTOMER_SALUTATION] Hier Ihre Zugangsdaten zum Shop:[[CUSTOMER_LOGIN] Benutzername: [CUSTOMER_USERNAME] Passwort: [CUSTOMER_PASSWORD][CUSTOMER_LOGIN]] Mit freundlichen Grüssen Ihr [SHOP_COMPANY] Online Shop Team [SHOP_HOMEPAGE] EOF , 'message_html' => <<<EOF [CUSTOMER_SALUTATION]<br /> <br /> Hier Ihre Zugangsdaten zum Shop:<br /><!--[[CUSTOMER_LOGIN]--> Benutzername: [CUSTOMER_USERNAME]<br /> Passwort: [CUSTOMER_PASSWORD]<br /><!--[CUSTOMER_LOGIN]]--> <br /> Mit freundlichen Grüssen<br /> Ihr [SHOP_COMPANY] Online Shop Team<br /> <br /> [SHOP_HOMEPAGE]<br /> EOF , 'protected' => true, 'html' => true)); } } // Always! return false; }
/** * Initialize the mail template array for the current module * * Uses the given language ID $lang_id if not empty, or all active * frontend languages otherwise. * The $limit value defaults to the value of the * mailtemplate_per_page_backend setting from the core settings * (@see \Cx\Core\Setting\Controller\Setting}. * @param integer $section The section * @param integer $lang_id The optional language ID * @param string $order The optional sorting order string, * SQL syntax * @param integer $position The optional position offset, * defaults to zero * @param integer $limit The optional limit for returned * templates * @param integer $count The actual count of templates * available in total, by reference * @return boolean True on success, false otherwise */ static function init($section, $lang_id = null, $order = '', $position = 0, $limit = -1, &$count = 0) { global $objDatabase; if (empty($section)) { die("MailTemplate::init(): Empty section!"); } $arrLanguageId = null; if ($lang_id) { // Init one language $arrLanguageId = array($lang_id); } else { // Load all languages if none is specified $arrLanguageId = \FWLanguage::getIdArray(); } self::reset(); if (empty($limit)) { $limit = \Cx\Core\Setting\Controller\Setting::getValue('mailtemplate_per_page_backend'); } if (empty($limit)) { $limit = 25; } $query_from = null; self::$arrTemplates = array(); foreach ($arrLanguageId as $lang_id) { $arrSql = \Text::getSqlSnippets('`mail`.`text_id`', $lang_id, $section, array('name' => self::TEXT_NAME, 'from' => self::TEXT_FROM, 'sender' => self::TEXT_SENDER, 'reply' => self::TEXT_REPLY, 'to' => self::TEXT_TO, 'cc' => self::TEXT_CC, 'bcc' => self::TEXT_BCC, 'subject' => self::TEXT_SUBJECT, 'message' => self::TEXT_MESSAGE, 'message_html' => self::TEXT_MESSAGE_HTML, 'attachments' => self::TEXT_ATTACHMENTS, 'inline' => self::TEXT_INLINE)); $query_from = "\n FROM `" . DBPREFIX . "core_mail_template` AS `mail`" . $arrSql['join'] . "\n WHERE `mail`.`section`" . (isset($section) ? "='" . addslashes($section) . "'" : ' IS NULL'); $query_order = $order ? " ORDER BY {$order}" : ''; // The count of available templates needs to be initialized to zero // in case there is a problem with one of the queries ahead. // Ignore the code analyzer warning. $count = 0; $objResult = $objDatabase->SelectLimit("\n SELECT `mail`.`key`, `mail`.`text_id`, `mail`.`protected`, `mail`.`html`, " . $arrSql['field'] . $query_from . $query_order, $limit, $position); if (!$objResult) { return self::errorHandler(); } while (!$objResult->EOF) { $available = true; $key = $objResult->fields['key']; $text_id = $objResult->fields['text_id']; $strName = $objResult->fields['name']; if ($strName === null) { $strName = \Text::getById($text_id, $section, self::TEXT_NAME)->content(); if ($strName) { $available = false; } } $strFrom = $objResult->fields['from']; if ($strFrom === null) { $strFrom = \Text::getById($text_id, $section, self::TEXT_FROM)->content(); if ($strFrom) { $available = false; } } $strSender = $objResult->fields['sender']; if ($strSender === null) { $strSender = \Text::getById($text_id, $section, self::TEXT_SENDER)->content(); if ($strSender) { $available = false; } } $strReply = $objResult->fields['reply']; if ($strReply === null) { $strReply = \Text::getById($text_id, $section, self::TEXT_REPLY)->content(); if ($strReply) { $available = false; } } $strTo = $objResult->fields['to']; if ($strTo === null) { $strTo = \Text::getById($text_id, $section, self::TEXT_TO)->content(); if ($strTo) { $available = false; } } $strCc = $objResult->fields['cc']; if ($strCc === null) { $strCc = \Text::getById($text_id, $section, self::TEXT_CC)->content(); if ($strCc) { $available = false; } } $strBcc = $objResult->fields['bcc']; if ($strBcc === null) { $strBcc = \Text::getById($text_id, $section, self::TEXT_BCC)->content(); if ($strBcc) { $available = false; } } $strSubject = $objResult->fields['subject']; if ($strSubject === null) { $strSubject = \Text::getById($text_id, $section, self::TEXT_SUBJECT)->content(); if ($strSubject) { $available = false; } } $strMessage = $objResult->fields['message']; if ($strMessage === null) { $strMessage = \Text::getById($text_id, $section, self::TEXT_MESSAGE)->content(); if ($strMessage) { $available = false; } } $strMessageHtml = $objResult->fields['message_html']; if ($strMessageHtml === null) { $strMessageHtml = \Text::getById($text_id, $section, self::TEXT_MESSAGE_HTML)->content(); if ($strMessageHtml) { $available = false; } } $strAttachments = $objResult->fields['attachments']; if ($strAttachments === null) { $strAttachments = \Text::getById($text_id, $section, self::TEXT_ATTACHMENTS)->content(); if ($strAttachments) { $available = false; } } $strInline = $objResult->fields['inline']; if ($strInline === null) { $strInline = \Text::getById($text_id, $section, self::TEXT_INLINE)->content(); if ($strInline) { $available = false; } } // TODO: Hard to decide which should be mandatory, as any of them may // be filled in "just in time". -- Time will tell. // if ( $strName == '' // || $strFrom == '' // || $strSender == '' // || $strReply == '' // || $strTo == '' // || $strCc == '' // || $strBcc == '' // || $strSubject == '' // || $strMessage == '' // || $strMessageHtml == '' // || $strAttachments == '' // || $strInline == '' // ) { // $available = false; // } self::$arrTemplates[$lang_id][$key] = array('key' => $key, 'text_id' => $text_id, 'name' => $strName, 'protected' => $objResult->fields['protected'], 'html' => $objResult->fields['html'], 'from' => $strFrom, 'sender' => $strSender, 'reply' => $strReply, 'to' => $strTo, 'cc' => $strCc, 'bcc' => $strBcc, 'subject' => $strSubject, 'message' => $strMessage, 'message_html' => $strMessageHtml, 'attachments' => eval("{$strAttachments};"), 'inline' => eval("{$strInline};"), 'available' => $available); $objResult->MoveNext(); } } $objResult = $objDatabase->Execute("\n SELECT COUNT(*) AS `count` {$query_from}"); if (!$objResult) { return self::errorHandler(); } $count += $objResult->fields['count']; // Remember the module used self::$section = $section; return true; }