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'); } }
/** * Create the RSS-Feed */ function createRSS() { global $_CONFIG, $objDatabase, $_FRONTEND_LANGID; // languages $arrLanguages = \FWLanguage::getLanguageArray(); if (intval($this->arrSettings['news_feed_status']) == 1) { if (count($arrLanguages > 0)) { $categoryDetails = $this->getCategoryLocale(null, array_keys($arrLanguages)); foreach ($arrLanguages as $LangId => $arrLanguage) { if ($arrLanguage['frontend'] == 1) { $objRSSWriter = new \RSSWriter(); $query = "\n SELECT tblNews.id,\n tblNews.date,\n tblNews.redirect,\n tblNews.source,\n tblNews.teaser_frames AS teaser_frames,\n tblLocale.lang_id,\n tblLocale.title,\n tblLocale.text,\n tblLocale.teaser_text\n FROM " . DBPREFIX . "module_news AS tblNews\n INNER JOIN " . DBPREFIX . "module_news_locale AS tblLocale ON tblLocale.news_id = tblNews.id\n WHERE tblNews.status=1\n AND tblLocale.is_active = 1\n AND tblLocale.lang_id = " . $LangId . " \n AND (tblNews.startdate <= '" . date('Y-m-d') . "' OR tblNews.startdate = '0000-00-00 00:00:00')\n AND (tblNews.enddate >= '" . date('Y-m-d') . "' 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"; $arrNews = array(); if (($objResult = $objDatabase->SelectLimit($query, 20)) !== false && $objResult->RecordCount() > 0) { while (!$objResult->EOF) { if (empty($objRSSWriter->channelLastBuildDate)) { $objRSSWriter->channelLastBuildDate = date('r', $objResult->fields['date']); } $teaserText = preg_replace('/\\[\\[([A-Z0-9_-]+)\\]\\]/', '{\\1}', $objResult->fields['teaser_text']); $text = preg_replace('/\\[\\[([A-Z0-9_-]+)\\]\\]/', '{\\1}', $objResult->fields['text']); $redirect = preg_replace('/\\[\\[([A-Z0-9_-]+)\\]\\]/', '{\\1}', $objResult->fields['redirect']); \LinkGenerator::parseTemplate($teaserText, true); \LinkGenerator::parseTemplate($text, true); \LinkGenerator::parseTemplate($redirect, true); $arrNews[$objResult->fields['id']] = array('date' => $objResult->fields['date'], 'title' => $objResult->fields['title'], 'text' => empty($redirect) ? (!empty($teaserText) ? nl2br($teaserText) . '<br /><br />' : '') . $text : (!empty($teaserText) ? nl2br($teaserText) : ''), 'redirect' => $redirect, 'source' => $objResult->fields['source'], 'teaser_frames' => explode(';', $objResult->fields['teaser_frames']), 'categoryIds' => $this->getNewsRelCategories($objResult->fields['id'])); $objResult->MoveNext(); } } else { continue; } $objRSSWriter->characterEncoding = CONTREXX_CHARSET; $objRSSWriter->channelTitle = contrexx_raw2xml($this->arrSettings['news_feed_title'][$LangId]); $objRSSWriter->channelDescription = contrexx_raw2xml($this->arrSettings['news_feed_description'][$LangId]); $objRSSWriter->channelLink = 'http://' . $_CONFIG['domainUrl'] . ($_SERVER['SERVER_PORT'] == 80 ? '' : ':' . intval($_SERVER['SERVER_PORT'])) . ASCMS_PATH_OFFSET . '/' . \FWLanguage::getLanguageParameter($LangId, 'lang') . '/' . CONTREXX_DIRECTORY_INDEX . '?section=News'; $objRSSWriter->channelLanguage = \FWLanguage::getLanguageParameter($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($LangId, 'lang') . '/' . CONTREXX_DIRECTORY_INDEX . '?section=News&cmd='; // create rss feed $objRSSWriter->xmlDocumentPath = \Env::get('cx')->getWebsiteFeedPath() . '/news_' . \FWLanguage::getLanguageParameter($LangId, 'lang') . '.xml'; foreach ($arrNews as $newsId => $arrNewsItem) { list($cmdDetail, $categories) = $this->getRssNewsLinks($LangId, $arrNewsItem['categoryIds'], $categoryDetails[$LangId]); $objRSSWriter->addItem(contrexx_raw2xml($arrNewsItem['title']), empty($arrNewsItem['redirect']) ? $itemLink . $cmdDetail . '&newsid=' . $newsId . (isset($arrNewsItem['teaser_frames'][0]) ? '&teaserId=' . $arrNewsItem['teaser_frames'][0] : '') : htmlspecialchars($arrNewsItem['redirect'], ENT_QUOTES, CONTREXX_CHARSET), contrexx_raw2xml($arrNewsItem['text']), '', $categories, '', '', '', $arrNewsItem['date'], array('url' => htmlspecialchars($arrNewsItem['source'], ENT_QUOTES, CONTREXX_CHARSET), 'title' => contrexx_raw2xml($arrNewsItem['title']))); } $objRSSWriter->write(); // create headlines rss feed $objRSSWriter->removeItems(); $objRSSWriter->xmlDocumentPath = \Env::get('cx')->getWebsiteFeedPath() . '/news_headlines_' . \FWLanguage::getLanguageParameter($LangId, 'lang') . '.xml'; foreach ($arrNews as $newsId => $arrNewsItem) { list($cmdDetail, $categories) = $this->getRssNewsLinks($LangId, $arrNewsItem['categoryIds'], $categoryDetails[$LangId]); $objRSSWriter->addItem(contrexx_raw2xml($arrNewsItem['title']), $itemLink . $cmdDetail . '&newsid=' . $newsId . (isset($arrNewsItem['teaser_frames'][0]) ? '&teaserId=' . $arrNewsItem['teaser_frames'][0] : ''), '', '', $categories, '', '', '', $arrNewsItem['date']); } $objRSSWriter->write(); $objRSSWriter->feedType = 'js'; $objRSSWriter->xmlDocumentPath = \Env::get('cx')->getWebsiteFeedPath() . '/news_' . \FWLanguage::getLanguageParameter($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 { if (count($arrLanguages > 0)) { foreach ($arrLanguages as $LangId => $arrLanguage) { if ($arrLanguage['frontend'] == 1) { @unlink(\Env::get('cx')->getWebsiteFeedPath() . '/news_' . \FWLanguage::getLanguageParameter($LangId, 'lang') . '.xml'); @unlink(\Env::get('cx')->getWebsiteFeedPath() . '/news_headlines_' . \FWLanguage::getLanguageParameter($LangId, 'lang') . '.xml'); @unlink(\Env::get('cx')->getWebsiteFeedPath() . '/news_' . \FWLanguage::getLanguageParameter($LangId, 'lang') . '.js'); } } } } }