Example #1
0
        /// <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;
        }
Example #2
0
        /// <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();
        }
Example #3
0
        /// <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());
        }