/// <summary> /// 获得百度论坛收录协议xml /// </summary> /// <param name="ttl">TTL数值</param> /// <returns></returns> public static string GetBaiduSitemap(int ttl) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); string sitemap = cache.RetrieveObject("/Forum/Sitemap/Baidu") as string; if (sitemap == null) { UserGroupInfo guestinfo = UserGroups.GetUserGroupInfo(7); StringBuilder sbforumlist = new StringBuilder();//不允许游客访问的板块Id列表 foreach (ForumInfo f in Forums.GetForumList()) { if (f.Allowrss == 0) sbforumlist.AppendFormat(",{0}", f.Fid); else { //板块权限设置为空,按照用户组权限走,RSS仅检查游客权限 //if (Utils.StrIsNullOrEmpty(f.Viewperm) && guestinfo.Allowvisit == 0) // sbforumlist.AppendFormat(",{0}", f.Fid); //else //{ // if (!Utils.InArray("7", f.Viewperm, ",")) // sbforumlist.AppendFormat(",{0}", f.Fid); //} if (string.IsNullOrEmpty(f.Viewperm)) { if (guestinfo.Allowvisit == 0) sbforumlist.AppendFormat(",{0}", f.Fid); } else if (!Utils.InArray("7", f.Viewperm, ",")) { sbforumlist.AppendFormat(",{0}", f.Fid); } } } sbforumlist = sbforumlist.Length > 0 ? sbforumlist.Remove(0, 1) : sbforumlist; sitemap = Discuz.Data.Feeds.GetBaiduSitemap(sbforumlist.ToString(), Users.GetShortUserInfo(BaseConfigs.GetFounderUid)); //声明新的缓存策略接口 Discuz.Cache.ICacheStrategy ics = new SitemapCacheStrategy(); ics.TimeOut = ttl * 60; cache.LoadCacheStrategy(ics); cache.AddObject("/Forum/Sitemap/Baidu", sitemap); cache.LoadDefaultCacheStrategy(); } return sitemap; }
/// <summary> /// 获得百度论坛收录协议xml /// </summary> /// <param name="ttl"></param> /// <returns></returns> public static string GetBaiduSitemap(int ttl) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); string str = cache.RetrieveObject("/Sitemap/Baidu") as string; if (str != null) { return str; } ForumInfo[] forumlist = Forums.GetForumList(); UserGroupInfo guestinfo = UserGroups.GetUserGroupInfo(7); StringBuilder sbforumlist = new StringBuilder();//不允许游客访问的板块Id列表 StringBuilder sitemapBuilder = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"); foreach (ForumInfo f in forumlist) { if (f.Allowrss == 0) { sbforumlist.AppendFormat(",{0}", f.Fid); } else { if (f.Viewperm == null || f.Viewperm == string.Empty) { //板块权限设置为空,按照用户组权限走,RSS仅检查游客权限 if (guestinfo.Allowvisit == 0) { sbforumlist.AppendFormat(",{0}", f.Fid); } } else { if (!Utils.InArray("7", f.Viewperm, ",")) { sbforumlist.AppendFormat(",{0}", f.Fid); } } } } if (sbforumlist.Length > 0) sbforumlist.Remove(0, 1); string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + ("/").ToLower(); ShortUserInfo master = Users.GetShortUserInfo(BaseConfigs.GetFounderUid); string masteremail = ""; if (master != null) { masteremail = master.Email; } sitemapBuilder.Append("<document xmlns:bbs=\"http://www.baidu.com/search/bbs_sitemap.xsd\">\r\n"); sitemapBuilder.Append(" <webSite>"); sitemapBuilder.Append(forumurl); sitemapBuilder.Append("</webSite>\r\n"); sitemapBuilder.Append(" <webMaster>"); sitemapBuilder.Append(masteremail); sitemapBuilder.Append("</webMaster>\r\n"); sitemapBuilder.Append(" <updatePeri>"); sitemapBuilder.Append(config.Sitemapttl); sitemapBuilder.Append("</updatePeri>\r\n"); sitemapBuilder.Append(" <updatetime>"); sitemapBuilder.Append(DateTime.Now.ToString("r")); sitemapBuilder.Append("</updatetime>\r\n"); sitemapBuilder.Append(" <version>"); sitemapBuilder.Append("Discuz!NT " + Utils.GetAssemblyVersion()); sitemapBuilder.Append("</version>\r\n"); IDataReader reader = DatabaseProvider.GetInstance().GetSitemapNewTopics(sbforumlist.ToString()); if (reader != null) { while (reader.Read()) { sitemapBuilder.Append(" <item>\r\n"); sitemapBuilder.Append(" <link>"); sitemapBuilder.Append(Utils.HtmlEncode(forumurl)); if (config.Aspxrewrite == 1) { sitemapBuilder.Append("showtopic-"); sitemapBuilder.Append(reader["tid"].ToString()); sitemapBuilder.Append(config.Extname); } else { sitemapBuilder.Append("showtopic-"); sitemapBuilder.Append(reader["tid"].ToString()); } sitemapBuilder.Append("</link>\r\n"); sitemapBuilder.Append(" <title>"); sitemapBuilder.Append(Utils.HtmlEncode(reader["title"].ToString().Trim())); sitemapBuilder.Append("</title>\r\n"); sitemapBuilder.Append(" <pubDate>"); sitemapBuilder.Append(Utils.HtmlEncode(reader["postdatetime"].ToString().Trim())); sitemapBuilder.Append("</pubDate>\r\n"); sitemapBuilder.Append(" <bbs:lastDate>"); sitemapBuilder.Append(reader["lastpost"].ToString()); sitemapBuilder.Append("</bbs:lastDate>\r\n"); sitemapBuilder.Append(" <bbs:reply>"); sitemapBuilder.Append(reader["replies"].ToString().Trim()); sitemapBuilder.Append("</bbs:reply>\r\n"); sitemapBuilder.Append(" <bbs:hit>"); sitemapBuilder.Append(reader["views"].ToString().Trim()); sitemapBuilder.Append("</bbs:hit>\r\n"); sitemapBuilder.Append(" <bbs:boardid>"); sitemapBuilder.Append(reader["fid"].ToString().Trim()); sitemapBuilder.Append("</bbs:boardid>\r\n"); sitemapBuilder.Append(" <bbs:pick>"); sitemapBuilder.Append(reader["digest"].ToString().Trim()); sitemapBuilder.Append("</bbs:pick>\r\n"); sitemapBuilder.Append(" </item>\r\n"); } reader.Close(); } else { sitemapBuilder.Length = 0; sitemapBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); sitemapBuilder.Append("<document>Error</document>\r\n"); //声明新的缓存策略接口 Discuz.Cache.ICacheStrategy ics = new SitemapCacheStrategy(); ics.TimeOut = ttl * 60; cache.LoadCacheStrategy(ics); cache.AddObject("/Sitemap/Baidu", sitemapBuilder.ToString()); cache.LoadDefaultCacheStrategy(); return sitemapBuilder.ToString(); } sitemapBuilder.Append("</document>"); cache.AddObject("/Sitemap/Baidu", sitemapBuilder.ToString()); cache.LoadDefaultCacheStrategy(); return sitemapBuilder.ToString(); }
/// <summary> /// 获得百度论坛收录协议xml /// </summary> /// <param name="ttl"></param> /// <returns></returns> public static string GetBaiduSitemap(int ttl) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); string str = cache.RetrieveObject("/Sitemap/Baidu") as string; if (str != null) { return(str); } ForumInfo[] forumlist = Forums.GetForumList(); UserGroupInfo guestinfo = UserGroups.GetUserGroupInfo(7); StringBuilder sbforumlist = new StringBuilder();//不允许游客访问的板块Id列表 StringBuilder sitemapBuilder = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"); foreach (ForumInfo f in forumlist) { if (f.Allowrss == 0) { sbforumlist.AppendFormat(",{0}", f.Fid); } else { if (f.Viewperm == null || f.Viewperm == string.Empty) { //板块权限设置为空,按照用户组权限走,RSS仅检查游客权限 if (guestinfo.Allowvisit == 0) { sbforumlist.AppendFormat(",{0}", f.Fid); } } else { if (!Utils.InArray("7", f.Viewperm, ",")) { sbforumlist.AppendFormat(",{0}", f.Fid); } } } } if (sbforumlist.Length > 0) { sbforumlist.Remove(0, 1); } string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + ("/").ToLower(); ShortUserInfo master = Users.GetShortUserInfo(BaseConfigs.GetFounderUid); string masteremail = ""; if (master != null) { masteremail = master.Email; } sitemapBuilder.Append("<document xmlns:bbs=\"http://www.baidu.com/search/bbs_sitemap.xsd\">\r\n"); sitemapBuilder.Append(" <webSite>"); sitemapBuilder.Append(forumurl); sitemapBuilder.Append("</webSite>\r\n"); sitemapBuilder.Append(" <webMaster>"); sitemapBuilder.Append(masteremail); sitemapBuilder.Append("</webMaster>\r\n"); sitemapBuilder.Append(" <updatePeri>"); sitemapBuilder.Append(config.Sitemapttl); sitemapBuilder.Append("</updatePeri>\r\n"); sitemapBuilder.Append(" <updatetime>"); sitemapBuilder.Append(DateTime.Now.ToString("r")); sitemapBuilder.Append("</updatetime>\r\n"); sitemapBuilder.Append(" <version>"); sitemapBuilder.Append("Discuz!NT " + Utils.GetAssemblyVersion()); sitemapBuilder.Append("</version>\r\n"); IDataReader reader = DatabaseProvider.GetInstance().GetSitemapNewTopics(sbforumlist.ToString()); if (reader != null) { while (reader.Read()) { sitemapBuilder.Append(" <item>\r\n"); sitemapBuilder.Append(" <link>"); sitemapBuilder.Append(Utils.HtmlEncode(forumurl)); if (config.Aspxrewrite == 1) { sitemapBuilder.Append("showtopic-"); sitemapBuilder.Append(reader["tid"].ToString()); sitemapBuilder.Append(config.Extname); } else { sitemapBuilder.Append("showtopic-"); sitemapBuilder.Append(reader["tid"].ToString()); } sitemapBuilder.Append("</link>\r\n"); sitemapBuilder.Append(" <title>"); sitemapBuilder.Append(Utils.HtmlEncode(reader["title"].ToString().Trim())); sitemapBuilder.Append("</title>\r\n"); sitemapBuilder.Append(" <pubDate>"); sitemapBuilder.Append(Utils.HtmlEncode(reader["postdatetime"].ToString().Trim())); sitemapBuilder.Append("</pubDate>\r\n"); sitemapBuilder.Append(" <bbs:lastDate>"); sitemapBuilder.Append(reader["lastpost"].ToString()); sitemapBuilder.Append("</bbs:lastDate>\r\n"); sitemapBuilder.Append(" <bbs:reply>"); sitemapBuilder.Append(reader["replies"].ToString().Trim()); sitemapBuilder.Append("</bbs:reply>\r\n"); sitemapBuilder.Append(" <bbs:hit>"); sitemapBuilder.Append(reader["views"].ToString().Trim()); sitemapBuilder.Append("</bbs:hit>\r\n"); sitemapBuilder.Append(" <bbs:boardid>"); sitemapBuilder.Append(reader["fid"].ToString().Trim()); sitemapBuilder.Append("</bbs:boardid>\r\n"); sitemapBuilder.Append(" <bbs:pick>"); sitemapBuilder.Append(reader["digest"].ToString().Trim()); sitemapBuilder.Append("</bbs:pick>\r\n"); sitemapBuilder.Append(" </item>\r\n"); } reader.Close(); } else { sitemapBuilder.Length = 0; sitemapBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); sitemapBuilder.Append("<document>Error</document>\r\n"); //声明新的缓存策略接口 Discuz.Cache.ICacheStrategy ics = new SitemapCacheStrategy(); ics.TimeOut = ttl * 60; cache.LoadCacheStrategy(ics); cache.AddObject("/Sitemap/Baidu", sitemapBuilder.ToString()); cache.LoadDefaultCacheStrategy(); return(sitemapBuilder.ToString()); } sitemapBuilder.Append("</document>"); cache.AddObject("/Sitemap/Baidu", sitemapBuilder.ToString()); cache.LoadDefaultCacheStrategy(); return(sitemapBuilder.ToString()); }