Example #1
0
/**
 * 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);
}
Example #2
0
 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]) ? '&amp;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&amp;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]) ? "&amp;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&amp;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) ? '&amp;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 . '&amp;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);
 }