/** * Encodes a raw string or array thereof for use with XML * * Apply to raw strings and those taken from the database or arrays thereof * before writing to the XML response stream. * @param mixed $raw The raw string or array * @return mixed The XML encoded string or array */ function contrexx_raw2xml($raw) { if (is_array($raw)) { $arr = array(); foreach ($raw as $i => $_raw) { $arr[$i] = contrexx_raw2xml($_raw); } return $arr; } return htmlspecialchars($raw, ENT_QUOTES, CONTREXX_CHARSET); }
protected function createRSS($langId) { global $_CONFIG, $objDatabase; $_FRONTEND_LANGID = $langId; if (intval($this->arrSettings['news_feed_status']) == 1) { $arrNews = array(); require_once ASCMS_FRAMEWORK_PATH . '/RSSWriter.class.php'; $objRSSWriter = new RSSWriter(); $objRSSWriter->characterEncoding = CONTREXX_CHARSET; $objRSSWriter->channelTitle = $this->arrSettings['news_feed_title']; $objRSSWriter->channelLink = 'http://' . $_CONFIG['domainUrl'] . ($_SERVER['SERVER_PORT'] == 80 ? "" : ":" . intval($_SERVER['SERVER_PORT'])) . ASCMS_PATH_OFFSET . '/' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '/' . CONTREXX_DIRECTORY_INDEX . '?section=news'; $objRSSWriter->channelDescription = $this->arrSettings['news_feed_description']; $objRSSWriter->channelLanguage = FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang'); $objRSSWriter->channelCopyright = 'Copyright ' . date('Y') . ', http://' . $_CONFIG['domainUrl']; if (!empty($this->arrSettings['news_feed_image'])) { $objRSSWriter->channelImageUrl = 'http://' . $_CONFIG['domainUrl'] . ($_SERVER['SERVER_PORT'] == 80 ? "" : ":" . intval($_SERVER['SERVER_PORT'])) . $this->arrSettings['news_feed_image']; $objRSSWriter->channelImageTitle = $objRSSWriter->channelTitle; $objRSSWriter->channelImageLink = $objRSSWriter->channelLink; } $objRSSWriter->channelWebMaster = $_CONFIG['coreAdminEmail']; $itemLink = "http://" . $_CONFIG['domainUrl'] . ($_SERVER['SERVER_PORT'] == 80 ? "" : ":" . intval($_SERVER['SERVER_PORT'])) . ASCMS_PATH_OFFSET . '/' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '/' . CONTREXX_DIRECTORY_INDEX . '?section=news&cmd=details&newsid='; $query = "\n SELECT tblNews.id,\n tblNews.date,\n tblNews.title,\n tblNews.text,\n tblNews.redirect,\n tblNews.source,\n tblNews.catid AS categoryId,\n tblNews.teaser_frames AS teaser_frames,\n tblNews.teaser_text,\n tblCategory.name AS category\n FROM " . DBPREFIX . "module_news AS tblNews\n INNER JOIN " . DBPREFIX . "module_news_categories AS tblCategory\n USING (catid)\n WHERE tblNews.status=1\n AND tblNews.lang = " . $_FRONTEND_LANGID . "\n AND (tblNews.startdate <= CURDATE() OR tblNews.startdate = '0000-00-00 00:00:00')\n AND (tblNews.enddate >= CURDATE() OR tblNews.enddate = '0000-00-00 00:00:00')" . ($this->arrSettings['news_message_protection'] == '1' ? " AND tblNews.frontend_access_id=0 " : '') . "ORDER BY tblNews.date DESC"; if (($objResult = $objDatabase->SelectLimit($query, 20)) !== false && $objResult->RecordCount() > 0) { while (!$objResult->EOF) { if (empty($objRSSWriter->channelLastBuildDate)) { $objRSSWriter->channelLastBuildDate = date('r', $objResult->fields['date']); } $arrNews[$objResult->fields['id']] = array('date' => $objResult->fields['date'], 'title' => $objResult->fields['title'], 'text' => empty($objResult->fields['redirect']) ? (!empty($objResult->fields['teaser_text']) ? nl2br($objResult->fields['teaser_text']) . '<br /><br />' : '') . $objResult->fields['text'] : (!empty($objResult->fields['teaser_text']) ? nl2br($objResult->fields['teaser_text']) : ''), 'redirect' => $objResult->fields['redirect'], 'source' => $objResult->fields['source'], 'category' => $objResult->fields['category'], 'teaser_frames' => explode(';', $objResult->fields['teaser_frames']), 'categoryId' => $objResult->fields['categoryId']); $objResult->MoveNext(); } } // create rss feed $objRSSWriter->xmlDocumentPath = ASCMS_FEED_PATH . '/news_' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '.xml'; foreach ($arrNews as $newsId => $arrNewsItem) { $objRSSWriter->addItem(contrexx_raw2xml($arrNewsItem['title']), empty($arrNewsItem['redirect']) ? $itemLink . $newsId . (isset($arrNewsItem['teaser_frames'][0]) ? '&teaserId=' . $arrNewsItem['teaser_frames'][0] : '') : htmlspecialchars($arrNewsItem['redirect'], ENT_QUOTES, CONTREXX_CHARSET), contrexx_raw2xml($arrNewsItem['text']), '', array('domain' => "http://" . $_CONFIG['domainUrl'] . ($_SERVER['SERVER_PORT'] == 80 ? "" : ":" . intval($_SERVER['SERVER_PORT'])) . ASCMS_PATH_OFFSET . '/' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '/' . CONTREXX_DIRECTORY_INDEX . '?section=news&category=' . $arrNewsItem['categoryId'], 'title' => $arrNewsItem['category']), '', '', '', $arrNewsItem['date'], array('url' => htmlspecialchars($arrNewsItem['source'], ENT_QUOTES, CONTREXX_CHARSET), 'title' => contrexx_raw2xml($arrNewsItem['title']))); } $status = $objRSSWriter->write(); // create headlines rss feed $objRSSWriter->removeItems(); $objRSSWriter->xmlDocumentPath = ASCMS_FEED_PATH . '/news_headlines_' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '.xml'; foreach ($arrNews as $newsId => $arrNewsItem) { $objRSSWriter->addItem(contrexx_raw2xml($arrNewsItem['title']), $itemLink . $newsId . (isset($arrNewsItem['teaser_frames'][0]) ? "&teaserId=" . $arrNewsItem['teaser_frames'][0] : ""), '', '', array('domain' => 'http://' . $_CONFIG['domainUrl'] . ($_SERVER['SERVER_PORT'] == 80 ? '' : ':' . intval($_SERVER['SERVER_PORT'])) . ASCMS_PATH_OFFSET . '/' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '/' . CONTREXX_DIRECTORY_INDEX . '?section=news&category=' . $arrNewsItem['categoryId'], 'title' => $arrNewsItem['category']), '', '', '', $arrNewsItem['date']); } $statusHeadlines = $objRSSWriter->write(); $objRSSWriter->feedType = 'js'; $objRSSWriter->xmlDocumentPath = ASCMS_FEED_PATH . '/news_' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '.js'; $objRSSWriter->write(); /* if (count($objRSSWriter->arrErrorMsg) > 0) { $this->strErrMessage .= implode('<br />', $objRSSWriter->arrErrorMsg); } if (count($objRSSWriter->arrWarningMsg) > 0) { $this->strErrMessage .= implode('<br />', $objRSSWriter->arrWarningMsg); } */ } else { @unlink(ASCMS_FEED_PATH . '/news_' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '.xml'); @unlink(ASCMS_FEED_PATH . '/news_headlines_' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '.xml'); @unlink(ASCMS_FEED_PATH . '/news_' . FWLanguage::getLanguageParameter($_FRONTEND_LANGID, 'lang') . '.js'); } }
/** * Get the RSS News links * * @param integer $langId * @param array $newsCategoryIds list of category Ids * * @global array $_CONFIG * */ public function getRssNewsLinks($langId, $newsCategoryIds, $categoryDetails) { global $_CONFIG; $categories = array(); $cmdDetail = ''; foreach ($newsCategoryIds as $newsCategoryId) { $currentCmdDetail = $this->findCmdById('details', array($newsCategoryId)); $cmdDetail = !empty($currentCmdDetail) ? $currentCmdDetail : $cmdDetail; $cmdOverview = $this->findCmdById('', array($newsCategoryId)); $cmdOverview = !empty($cmdOverview) ? '&cmd=' . $cmdOverview : ''; $categories[] = array('domain' => 'http://' . $_CONFIG['domainUrl'] . ($_SERVER['SERVER_PORT'] == 80 ? '' : ':' . intval($_SERVER['SERVER_PORT'])) . ASCMS_PATH_OFFSET . '/' . \FWLanguage::getLanguageParameter($langId, 'lang') . '/' . CONTREXX_DIRECTORY_INDEX . '?section=news' . $cmdOverview . '&category=' . $newsCategoryId, 'title' => contrexx_raw2xml($categoryDetails[$newsCategoryId])); } return array($cmdDetail, $categories); }
/** * Create's new rss feed for the calendar module * * @global array $_CONFIG * @global object $objDatabase */ function creatFeed() { global $_CONFIG, $objDatabase; $this->getFrontendLanguages(); $this->getSettings(); $this->objEventManager->getEventlist(); foreach ($this->arrFrontendLanguages as $langKey => $arrFrontendLanguage) { $objRSSWriter = new \RSSWriter(); $objRSSWriter->characterEncoding = CONTREXX_CHARSET; $objRSSWriter->channelTitle = contrexx_raw2xml($this->arrSettings['rssFeedTitle']); $objRSSWriter->channelLink = contrexx_raw2xml($this->domainUrl . 'index.php?section=' . $this->moduleName); $objRSSWriter->channelDescription = contrexx_raw2xml($this->arrSettings['rssFeedDescription']); $objRSSWriter->channelLanguage = contrexx_raw2xml($arrFrontendLanguage['lang']); $objRSSWriter->channelCopyright = contrexx_raw2xml('Copyright ' . date('Y') . ', ' . $this->domainUrl); if (!empty($this->arrSettings['rssFeedImage'])) { $objRSSWriter->channelImageUrl = $this->arrSettings['rssFeedImage']; $objRSSWriter->channelImageTitle = $objRSSWriter->channelTitle; $objRSSWriter->channelImageLink = $objRSSWriter->channelLink; } $objRSSWriter->channelWebMaster = $_CONFIG['coreAdminEmail']; $objRSSWriter->channelLastBuildDate = date('r', time()); foreach ($this->objEventManager->eventList as $eventKey => $objEvent) { $objFWUser = \FWUser::getFWUserObject(); $showIn = explode(',', $objEvent->showIn); if (in_array($arrFrontendLanguage['id'], $showIn)) { $itemTitle = contrexx_raw2xml(html_entity_decode($objEvent->arrData['title'][$arrFrontendLanguage['id']], ENT_QUOTES, CONTREXX_CHARSET)); $itemLink = $objEvent->type == 0 ? $this->domainUrl . $this->objEventManager->_getDetailLink($objEvent) : $objEvent->arrData['redirect'][$arrFrontendLanguage['id']]; $itemLink = contrexx_raw2xml(html_entity_decode($itemLink)); $itemDescription = contrexx_raw2xml($objEvent->arrData['description'][$arrFrontendLanguage['id']]); if ($objUser = $objFWUser->objUser->getUser(intval($objEvent->author))) { $itemAuthor = $objUser->getEmail(); } else { $itemAuthor = "unknown"; } $itemAuthor = contrexx_raw2xml($itemAuthor); $itemCategory = array(); $itemComments = null; $itemEnclosure = array(); $itemGuid = array(); $itemPubDate = $objEvent->startDate->getTimestamp(); $itemSource = array(); $objRSSWriter->addItem($itemTitle, $itemLink, $itemDescription, $itemAuthor, $itemCategory, $itemComments, $itemEnclosure, $itemGuid, $itemPubDate, $itemSource); } } $objRSSWriter->feedType = 'xml'; $objRSSWriter->xmlDocumentPath = \Env::get('cx')->getWebsiteFeedPath() . '/calendar_all_' . $arrFrontendLanguage['lang'] . '.' . $objRSSWriter->feedType; $objRSSWriter->write(); } }
function getContent($intEntryId, $arrInputfield, $arrTranslationStatus) { global $objDatabase, $_LANGID; $intId = intval($arrInputfield['id']); $objEntryDefaultLang = $objDatabase->Execute("SELECT `lang_id` FROM " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_entries WHERE id=" . intval($intEntryId) . " LIMIT 1"); $intEntryDefaultLang = intval($objEntryDefaultLang->fields['lang_id']); if ($this->arrSettings['settingsTranslationStatus'] == 1) { if (in_array($_LANGID, $arrTranslationStatus)) { $intLangId = $_LANGID; } else { $intLangId = $intEntryDefaultLang; } } else { $intLangId = $_LANGID; } $objInputfieldValue = $objDatabase->Execute("\n SELECT\n `value`\n FROM\n " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_rel_entry_inputfields\n WHERE\n field_id=" . $intId . "\n AND\n entry_id=" . intval($intEntryId) . "\n AND\n lang_id=" . $intLangId . "\n LIMIT 1\n "); if (empty($objInputfieldValue->fields['value'])) { $objInputfieldValue = $objDatabase->Execute("\n SELECT\n `value`\n FROM\n " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_rel_entry_inputfields\n WHERE\n field_id=" . $intId . "\n AND\n entry_id=" . intval($intEntryId) . "\n AND\n lang_id=" . intval($intEntryDefaultLang) . "\n LIMIT 1\n "); } $strValue = strip_tags($objInputfieldValue->fields['value']); $strValueAllowTags = $objInputfieldValue->fields['value']; if (!empty($strValue)) { if (strlen($strValue) > 200) { $strShortValue = preg_replace('/[^ ]*$/', '', substr($strValue, 0, 200)) . ' [...]'; } else { $strShortValue = $strValue; } $arrContent['TXT_' . $this->moduleLangVar . '_INPUTFIELD_NAME'] = contrexx_raw2xml($arrInputfield['name'][0]); $arrContent[$this->moduleLangVar . '_INPUTFIELD_VALUE'] = nl2br(contrexx_raw2xml($strValue)); $arrContent[$this->moduleLangVar . '_INPUTFIELD_VALUE_SHORT'] = nl2br(contrexx_raw2xml($strShortValue)); $arrContent[$this->moduleLangVar . '_INPUTFIELD_VALUE_ALLOW_TAGS'] = $strValueAllowTags; } else { $arrContent = null; } return $arrContent; }
/** * Get the RSS News links * * @param integer $langId * @param array $newsCategoryIds list of category Ids * * @global array $_CONFIG * */ public function getRssNewsLinks($langId, $newsCategoryIds, $categoryDetails) { global $_CONFIG; $categories = array(); $cmdDetail = ''; foreach ($newsCategoryIds as $newsCategoryId) { $currentCmdDetail = $this->findCmdById('details', array($newsCategoryId)); $cmdDetail = !empty($currentCmdDetail) ? $currentCmdDetail : $cmdDetail; $cmdOverview = $this->findCmdById('', array($newsCategoryId)); $overviewUrl = \Cx\Core\Routing\Url::fromModuleAndCmd('News', $cmdOverview, $LangId, array('category' => $newsCategoryId)); $categories[] = array('domain' => contrexx_raw2xml($overviewUrl->toString()), 'title' => contrexx_raw2xml($categoryDetails[$newsCategoryId])); } return array($cmdDetail, $categories); }