protected void Page_Load(object sender, System.EventArgs e) { // nothing should post here if (Page.IsPostBack) { return; } siteSettings = CacheHelper.GetCurrentSiteSettings(); RssGroup rssGroup = new RssGroup(); rssGroup.ModuleId = -1; rssGroup.PageId = -1; rssGroup.ItemId = -1; rssGroup.TopicId = -1; rssGroup.MaximumDays = maxDaysOld; pageId = WebUtils.ParseInt32FromQueryString("pageid", -1); moduleId = WebUtils.ParseInt32FromQueryString("mid", -1); itemId = WebUtils.ParseInt32FromQueryString("ItemID", -1); topicId = WebUtils.ParseInt32FromQueryString("topic", -1); if (WebConfigSettings.UseFoldersInsteadOfHostnamesForMultipleSites) { navigationSiteRoot = SiteUtils.GetNavigationSiteRoot(); imageSiteRoot = WebUtils.GetSiteRoot(); cssBaseUrl = imageSiteRoot; } else { navigationSiteRoot = WebUtils.GetHostRoot(); imageSiteRoot = navigationSiteRoot; cssBaseUrl = WebUtils.GetSiteRoot(); } groupUrl = SiteUtils.GetCurrentPageUrl(); if (siteSettings != null) { rssGroup.SiteId = siteSettings.SiteId; } rssGroup.ModuleId = moduleId; rssGroup.PageId = pageId; rssGroup.ItemId = itemId; rssGroup.TopicId = topicId; RenderRss(rssGroup); }
private void RenderRss(RssGroup rssGroup) { Response.ContentType = "application/xml"; Response.ContentEncoding = System.Text.Encoding.UTF8; Hashtable moduleSettings = ModuleSettings.GetModuleSettings(rssGroup.ModuleId); rssGroup.MaximumDays = WebUtils.ParseInt32FromHashtable( moduleSettings, "RSSFeedMaxDaysOldSetting", 90); int entriesLimit = WebUtils.ParseInt32FromHashtable( moduleSettings, "RSSFeedMaxPostsSetting", 90); int entryCount = 0; Rss.RssChannel channel = new Rss.RssChannel(); string baseUrl = Request.Url.ToString().Replace("RSS.aspx", "Topic.aspx"); using (IDataReader posts = rssGroup.GetPostsForRss()) { while ((posts.Read()) && (entryCount <= entriesLimit)) { Rss.RssItem item = new Rss.RssItem(); item.Title = posts["Subject"].ToString(); item.Description = SiteUtils.ChangeRelativeUrlsToFullyQuailifiedUrls(navigationSiteRoot, imageSiteRoot, posts["Post"].ToString()); item.PubDate = Convert.ToDateTime(posts["PostDate"]); string target = baseUrl; if (target.IndexOf("&topic=") < 0 && target.IndexOf("?topic=") < 0) { if (target.IndexOf("?") < 0) { target += "?topic=" + posts["TopicID"].ToString() + "#post" + posts["PostID"].ToString(); } else { target += "&topic=" + posts["TopicID"].ToString() + "#post" + posts["PostID"].ToString(); } } item.Link = new System.Uri(target); item.Author = posts["StartedBy"].ToString(); channel.Items.Add(item); entryCount += 1; } } object value = GetModule(); Module m; channel.LastBuildDate = channel.Items.LatestPubDate(); channel.Link = new System.Uri(groupUrl); if (value != null) { m = (Module)value; channel.Title = m.ModuleTitle; channel.Description = m.ModuleTitle; } else { channel.Title = siteSettings.SiteName; channel.Description = siteSettings.SiteName; } if (channel.Items.Count == 0) { Rss.RssItem item = new Rss.RssItem(); item.Title = "No Items Found"; item.Description = "No items found"; item.PubDate = DateTime.UtcNow; item.Link = new System.Uri(navigationSiteRoot); item.Author = "system"; channel.Items.Add(item); } Rss.RssFeed rss = new Rss.RssFeed(); rss.BaseUrl = cssBaseUrl; rss.Encoding = System.Text.Encoding.UTF8; rss.Channels.Add(channel); rss.Write(Response.OutputStream); //Response.End(); }