/// <summary> /// 定义邮件内容函数 /// </summary> /// <param name="UserName">用户名</param> /// <param name="Email">EMAIL地址</param> /// <param name="pass">相应注册用户的密码(暂时无设置)</param> /// <returns></returns> public static bool DiscuzSmtpMail(string UserName, string Email, string pass) { string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + BaseConfigs.GetForumPath.ToLower(); try { ESM.RecipientName = UserName; //设定收件人姓名 ESM.AddRecipient(Email); //设定收件人地址(必须填写)。 ESM.MailDomainPort = emailinfo.Port; ESM.From = emailinfo.Sysemail; ESM.FromName = configinfo.Webtitle; ESM.Html = true; ESM.Subject = "已成功创建你的 " + configinfo.Forumtitle + "帐户,请查收."; StringBuilder body = new StringBuilder(); body.Append(emailinfo.Emailcontent.Replace("{webtitle}", configinfo.Webtitle)); body.Replace("{weburl}", string.Format("<a href=\"{0}\">{0}</a>", configinfo.Weburl)); body.Replace("{forumurl}", string.Format("<a href=\"{0}\">{0}</a>", forumurl)); body.Replace("{forumtitle}", configinfo.Forumtitle); ESM.Body = "<pre style=\"width:100%;word-wrap:break-word\">" + body.ToString() + "</pre>"; ESM.MailDomain = emailinfo.Smtp; ESM.MailServerUserName = emailinfo.Username; ESM.MailServerPassWord = emailinfo.Password; //开始发送 return(ESM.Send()); } catch { return(false); } }
public static bool SendRegMail(string userName, string email, string pass, string authstr = "") { userName = (userName + "").Trim(); email = (email + "").Trim(); pass = (pass + "").Trim(); if (String.IsNullOrEmpty(email)) { return(false); } string text = "http://" + DNTRequest.GetCurrentFullHost() + BaseConfigs.GetForumPath.ToLower(); var sm = Create(); sm.RecipientName = userName; sm.AddRecipient(email); sm.Subject = "已成功创建你的 " + config.Forumtitle + "帐户,请查收."; var sb = new StringBuilder(); sb.Append(EmailConfigInfo.Current.Emailcontent.Replace("{webtitle}", config.Webtitle)); sb.Replace("{weburl}", string.Format("<a href=\"{0}\">{0}</a>", config.Weburl)); sb.Replace("{forumurl}", string.Format("<a href=\"{0}\">{0}</a>", text)); sb.Replace("{forumtitle}", config.Forumtitle); if (String.IsNullOrEmpty(authstr)) { sm.Body = "<pre style=\"width:100%;word-wrap:break-word\">" + sb.ToString() + "</pre>"; } else { sm.Body = "<pre style=\"width:100%;word-wrap:break-word\">" + sb.ToString() + "\r\n\r\n激活您帐户的链接为:<a href=" + text + "activationuser.aspx?authstr=" + authstr.Trim() + " target=_blank>" + text + "activationuser.aspx?authstr=" + authstr.Trim() + "</a></pre>"; } return(sm.Send()); }
/// <summary> /// 定义邮件内容函数 /// </summary> /// <param name="UserName">用户名</param> /// <param name="Email">EMAIL地址</param> /// <param name="pass">相应注册用户的密码(暂时无设置)</param> /// <param name="authstr">相应注册用户的激活链接串参数</param> /// <returns></returns> public static bool DiscuzSmtpMail(string UserName, string Email, string pass, string authstr) { string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + ("/").ToLower(); try { ESM.RecipientName = UserName;//设定收件人姓名 ESM.AddRecipient(Email); ESM.MailDomainPort = emailinfo.Port; ESM.From = emailinfo.Sysemail; ESM.FromName = configinfo.Webtitle; ESM.Html = true; ESM.Subject = "已成功创建你的 " + configinfo.Forumtitle + "帐户,请查收."; StringBuilder body = new StringBuilder(); body.Append(emailinfo.Emailcontent.Replace("{webtitle}", configinfo.Webtitle)); body.Replace("{weburl}", "<a href=" + configinfo.Weburl + ">" + configinfo.Weburl + "</a>"); body.Replace("{forumurl}", "<a href=" + forumurl + ">" + forumurl + "</a>"); body.Replace("{forumtitle}", configinfo.Forumtitle); ESM.Body = "<pre style=\"width:100%;word-wrap:break-word\">" + body.ToString() + "\r\n\r\n" + "激活您帐户的链接为:<a href=" + forumurl + "activationuser.aspx?authstr=" + authstr.Trim() + " target=_blank>" + forumurl + "activationuser.aspx?authstr=" + authstr.Trim() + "</a></pre>"; ESM.MailDomain = emailinfo.Smtp; ESM.MailServerUserName = emailinfo.Username; ESM.MailServerPassWord = emailinfo.Password; return(ESM.Send()); } catch { return(false); } }
public void SendNotifyEmail(string email, ShortMessage pm) { string text = string.Format("http://{0}/usercpshowpm.aspx?pmid={1}", DNTRequest.GetCurrentFullHost(), pm.ID); var sb = new StringBuilder("# 论坛短消息: <a href=\"" + text + "\" target=\"_blank\">" + pm.Subject + "</a>"); sb.AppendFormat("\r\n\r\n{0}\r\n<hr/>", pm.Message); sb.AppendFormat("作 者:{0}\r\n", pm.Msgfrom); sb.AppendFormat("Email:<a href=\"mailto:{0}\" target=\"_blank\">{0}</a>\r\n", BBX.Entity.User.FindByID(this.userid).Email.Trim()); sb.AppendFormat("URL:<a href=\"{0}\" target=\"_blank\">{0}</a>\r\n", text); sb.AppendFormat("时 间:{0}", pm.PostDateTime); Emails.SendEmailNotify(email, "[" + this.config.Forumtitle + "短消息通知]" + pm.Subject, sb.ToString()); }
protected override void ShowPage() { pagetitle = "选择模板"; if (userid == -1 && config.Guestcachepagetimeout > 0) { AddErrLine("当前的系统设置不允许游客选择模板"); return; } int templateid = DNTRequest.GetInt("templateid", 0); if (templateid > 0) { if (!System.IO.Directory.Exists(Utils.GetMapPath("../" + templateid))) { AddErrLine("您所选择的模板不存在!"); return; } if (!Utils.InArray(templateid.ToString(), Templates.GetValidTemplateIDList())) { templateid = config.Templateid; } Utils.WriteCookie(Utils.GetTemplateCookieName(), templateid.ToString(), 999999); string referrer = string.Format("http://{0}{1}", DNTRequest.GetCurrentFullHost(), forumpath); if (referrer != "") { SetUrl(Utils.InArray(referrer, "logout.aspx,showtemplate.aspx") ? "index.aspx" : referrer); } else { SetUrl("index.aspx"); } MsgForward("showtemplate_succeed", true); AddMsgLine("切换模板成功, 返回切换模板前页面"); SetMetaRefresh(); SetShowBackLink(false); } else { if ((DNTRequest.GetUrlReferrer() == "") || (DNTRequest.GetUrlReferrer().IndexOf("showtemplate") > -1)) { ForumUtils.WriteCookie("reurl", "index.aspx"); } else { ForumUtils.WriteCookie("reurl", DNTRequest.GetUrlReferrer()); } } }
protected override void ShowPage() { this.pagetitle = "选择模板"; if (this.userid == -1 && this.config.Guestcachepagetimeout > 0) { base.AddErrLine("当前的系统设置不允许游客选择模板"); return; } int tid = DNTRequest.GetInt("templateid", 0); var tmp = Template.FindByID(tid); if (tmp != null) { if (!Directory.Exists(Utils.GetMapPath("../" + tmp.Name))) { base.AddErrLine("您所选择的模板不存在!"); return; } //if (!Utils.InArray(num.ToString(), Templates.GetValidTemplateIDList())) if (!Template.Has(tid)) { tid = this.config.Templateid; } Utils.WriteCookie(Utils.GetTemplateCookieName(), tid.ToString(), 999999); string text = string.Format("http://{0}{1}", DNTRequest.GetCurrentFullHost(), this.forumpath); if (text != "") { base.SetUrl(Utils.InArray(text, "logout.aspx,showtemplate.aspx") ? "index.aspx" : text); } else { base.SetUrl("index.aspx"); } base.MsgForward("showtemplate_succeed", true); base.AddMsgLine("切换模板成功, 返回切换模板前页面"); base.SetMetaRefresh(); base.SetShowBackLink(false); return; } else { var url = Request.UrlReferrer + ""; if (string.IsNullOrEmpty(url) || url.IndexOf("showtemplate") > -1) { url = "index.aspx"; } ForumUtils.WriteCookie("reurl", url); } }
public BlogInfo[] getUsersBlogs(string appKey, string username, string password) { int uid = ValidateUser(username, password); if (uid < 1) { throw new XmlRpcFaultException(0, "用户不存在"); } Entity.SpaceConfigInfo s = Space.Spaces.GetSpaceConfigByUserId(uid); BlogInfo bloginfo = new BlogInfo(); bloginfo.blogid = s.SpaceID.ToString(); bloginfo.blogName = s.Spacetitle; string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + BaseConfigs.GetForumPath.ToLower(); bloginfo.url = forumurl + "space/?uid=" + uid; return(new BlogInfo[] { bloginfo }); }
/// <summary> /// 发送邮件通知 /// </summary> /// <param name="email">接收人邮箱</param> /// <param name="privatemessageinfo">短消息对象</param> public void SendNotifyEmail(string email, PrivateMessageInfo pm) { string jumpurl = "http://" + DNTRequest.GetCurrentFullHost() + "/usercpshowpm.aspx?pmid=" + pm.Pmid; System.Text.StringBuilder sb_body = new System.Text.StringBuilder("# 论坛短消息: <a href=\"" + jumpurl + "\" target=\"_blank\">" + pm.Subject + "</a>"); //发送人邮箱 string cur_email = Discuz.Forum.Users.GetShortUserInfo(userid).Email.Trim(); sb_body.Append("\r\n"); sb_body.Append("\r\n"); sb_body.Append(pm.Message); sb_body.Append("\r\n<hr/>"); sb_body.Append("作 者:" + pm.Msgfrom); sb_body.Append("\r\n"); sb_body.Append("Email:<a href=\"mailto:" + cur_email + "\" target=\"_blank\">" + cur_email + "</a>"); sb_body.Append("\r\n"); sb_body.Append("URL:<a href=\"" + jumpurl + "\" target=\"_blank\">" + jumpurl + "</a>"); sb_body.Append("\r\n"); sb_body.Append("时 间:" + pm.Postdatetime); Emails.SendEmailNotify(email, "[" + config.Forumtitle + "短消息通知]" + pm.Subject, sb_body.ToString()); }
/// <summary> /// 获得指定用户日志的RSS /// </summary> /// <param name="ttl">Time To Live</param> /// <param name="uid">用户id</param> /// <returns></returns> public static string GetBlogRss(int ttl, int uid) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); //Discuz.Cache.ICacheStrategy ics = new RssCacheStrategy(); //ics.TimeOut = ttl * 60; //cache.LoadCacheStrategy(ics); string str = cache.RetrieveObject("/SPACE/RSS/Blog" + uid) as string; if (str != null) { return(str); } string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + BaseConfigs.GetForumPath.ToLower(); ShortUserInfo user = Users.GetShortUserInfo(uid); if (user == null || user.Uid < 1 || user.Uid != uid) { return("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<Rss>Specified user not found</Rss>\r\n"); } SpacePostInfo[] posts = BlogProvider.GetSpacepostsInfo(Space.Data.DbProvider.GetInstance().SpacePostsList(20, 1, uid, 1)); if (posts == null || posts.Length < 1) { return("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<Rss>Specified user's blog is not found</Rss>\r\n"); } StringBuilder rssBuilder = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"); rssBuilder.Append("<?xml-stylesheet type=\"text/xsl\" href=\"rss.xsl\" media=\"screen\"?>\r\n"); rssBuilder.Append("<rss version=\"2.0\">\r\n"); rssBuilder.Append(" <channel>\r\n"); rssBuilder.Append(" <title>"); rssBuilder.Append(Utils.HtmlEncode(GeneralConfigs.GetConfig().Forumtitle)); rssBuilder.Append(" - "); rssBuilder.Append(user.Username); rssBuilder.Append("的个人空间"); rssBuilder.Append("</title>\r\n"); rssBuilder.Append(" <link>"); rssBuilder.Append(forumurl); rssBuilder.Append("space/?uid="); rssBuilder.Append(uid.ToString()); rssBuilder.Append("</link>\r\n"); rssBuilder.AppendFormat(" <description>Latest {0} blogs</description>\r\n", posts.Length); rssBuilder.Append(" <copyright>Copyright (c) "); rssBuilder.Append(Utils.HtmlEncode(GeneralConfigs.GetConfig().Forumtitle)); rssBuilder.Append("</copyright>\r\n"); rssBuilder.Append(" <generator>"); rssBuilder.Append("Discuz!NT"); rssBuilder.Append("</generator>\r\n"); rssBuilder.Append(" <pubDate>"); rssBuilder.Append(DateTime.Now.ToString("r")); rssBuilder.Append("</pubDate>\r\n"); rssBuilder.AppendFormat(" <ttl>{0}</ttl>\r\n", ttl.ToString()); foreach (SpacePostInfo post in posts) { rssBuilder.Append(" <item>\r\n"); rssBuilder.Append(" <title>"); rssBuilder.Append(Utils.HtmlEncode(post.Title.ToString().Trim())); rssBuilder.Append("</title>\r\n"); rssBuilder.Append(" <description><![CDATA["); rssBuilder.Append(Utils.HtmlEncode(Utils.GetSubString(Utils.RemoveHtml(post.Content), 200, "......"))); rssBuilder.Append("]]></description>\r\n"); rssBuilder.Append(" <link>"); rssBuilder.Append(Utils.HtmlEncode(forumurl)); rssBuilder.Append("space/viewspacepost.aspx?postid="); rssBuilder.Append(post.Postid.ToString()); rssBuilder.Append("</link>\r\n"); rssBuilder.Append(" <category>"); rssBuilder.Append(Utils.HtmlEncode(post.Category)); rssBuilder.Append("</category>\r\n"); rssBuilder.Append(" <author>"); rssBuilder.Append(Utils.HtmlEncode(post.Author.ToString().Trim())); rssBuilder.Append("</author>\r\n"); rssBuilder.Append(" <pubDate>"); rssBuilder.Append(Utils.HtmlEncode(post.Postdatetime.ToString("r").Trim())); rssBuilder.Append("</pubDate>\r\n"); rssBuilder.Append(" </item>\r\n"); } rssBuilder.Append(" </channel>\r\n"); rssBuilder.Append("</rss>"); cache.AddObject("/SPACE/RSS/Blog" + uid, rssBuilder.ToString(), ttl * 60); //cache.LoadDefaultCacheStrategy(); return(rssBuilder.ToString()); }
//实现文件上传 public MediaObjectUrl newMediaObject(string blogid, string username, string password, MediaObject mediaObject) { int uid = ValidateUser(username, password); if (uid < 1) { throw new XmlRpcFaultException(0, "用户不存在"); } string[] currentdate = DateTime.Now.ToString("yyyy-MM-dd").Split('-'); string fileDatePath = currentdate[0] + "/" + currentdate[1] + "/" + currentdate[2] + "/"; string sSavePath = Utils.GetMapPath(BaseConfigs.GetForumPath + "space/upload/" + ((FTPs.GetSpaceAttachInfo.Allowupload == 1 && FTPs.GetSpaceAttachInfo.Reservelocalattach == 0) ? "temp/" : fileDatePath)); if (!Directory.Exists(sSavePath)) { Utils.CreateDir(sSavePath); } Random random = new Random(unchecked ((int)DateTime.Now.Ticks)); string sFilename = (Environment.TickCount & int.MaxValue).ToString() + random.Next(1000, 9999).ToString() + System.IO.Path.GetExtension(mediaObject.name).ToLower(); //判断sFilename的文件名称是否已存在于服务器上. 如存在, 则添加文件递增标识 int file_append = 0; while (File.Exists(sSavePath + sFilename)) { file_append++; sFilename = Path.GetFileNameWithoutExtension(mediaObject.name) + file_append.ToString() + Path.GetExtension(mediaObject.name).ToLower(); } string fileExtName = Path.GetExtension(mediaObject.name).ToLower(); fileExtName = fileExtName != "" ? fileExtName: ".invalidExtName"; int groupid = Users.GetShortUserInfo(uid).Groupid; string attachextensions = GetAllowedExtensions(groupid); if ((attachextensions == null) || (attachextensions.ToLower().IndexOf(fileExtName.Remove(0, 1)) >= 0)) { //上传图片文件 if ((fileExtName == ".jpg") || (fileExtName == ".gif") || (fileExtName == ".png") || (fileExtName == ".jpeg")) { try { int maxspacesize = UserGroups.GetUserGroupInfo(groupid).Maxspaceattachsize; int currentspaceattachmentsize = DbProvider.GetInstance().GetSpaceAttachmentSizeByUserid(uid); if ((maxspacesize - currentspaceattachmentsize - mediaObject.bits.Length) <= 0) //个人空间的存储空间不足 { throw new XmlRpcFaultException(101, "存储空间不足, 上传失败!"); } else { FileStream newFile = new FileStream(sSavePath + sFilename, FileMode.Create); newFile.Write(mediaObject.bits, 0, mediaObject.bits.Length); newFile.Close(); } string filename = ""; filename = GetAttachRootPath(fileDatePath); //当支持FTP上传附件时,使用FTP上传远程附件,并在上传完成之后删除本地tempfilename文件 if (FTPs.GetSpaceAttachInfo.Allowupload == 1) { FTPs ftps = new FTPs(); ftps.UpLoadFile(filename.Replace(FTPs.GetSpaceAttachInfo.Remoteurl, ""), sSavePath + sFilename, FTPs.FTPUploadEnum.SpaceAttach); } filename = filename + sFilename; //保存文件信息 SaveSpaceAttachment(mediaObject, uid, filename); string permalink = filename; if (!(FTPs.GetSpaceAttachInfo.Allowupload == 1)) { permalink = "http://" + DNTRequest.GetCurrentFullHost() + filename; } MediaObjectUrl mediaObjectUrl = new MediaObjectUrl(); mediaObjectUrl.url = permalink; return(mediaObjectUrl); } catch { File.Delete(sSavePath + sFilename); throw new XmlRpcFaultException(102, "上传文件发生异常"); } } else //其它类型文件 { int maxspacesize = UserGroups.GetUserGroupInfo(groupid).Maxspaceattachsize; int currentspaceattachmentsize = DbProvider.GetInstance().GetSpaceAttachmentSizeByUserid(uid); if ((maxspacesize - currentspaceattachmentsize - mediaObject.bits.Length) <= 0) //个人空间的存储空间不足 { throw new XmlRpcFaultException(101, "存储空间不足, 上传失败!"); } else { try { FileStream newFile = new FileStream(sSavePath + sFilename, FileMode.Create); newFile.Write(mediaObject.bits, 0, mediaObject.bits.Length); newFile.Close(); string filename = ""; filename = GetAttachRootPath(fileDatePath); filename = filename + sFilename; //保存文件信息 SaveSpaceAttachment(mediaObject, uid, filename); //当支持FTP上传附件时,使用FTP上传远程附件,并在上传完成之后删除本地tempfilename文件 if (FTPs.GetSpaceAttachInfo.Allowupload == 1) { FTPs ftps = new FTPs(); ftps.UpLoadFile(GetAttachRootPath(fileDatePath).Replace(FTPs.GetSpaceAttachInfo.Remoteurl, ""), sSavePath + sFilename, FTPs.FTPUploadEnum.SpaceAttach); } string permalink = filename; if (!(FTPs.GetSpaceAttachInfo.Allowupload == 1)) { permalink = "http://" + DNTRequest.GetCurrentFullHost() + filename; } MediaObjectUrl mediaObjectUrl = new MediaObjectUrl(); mediaObjectUrl.url = permalink; return(mediaObjectUrl); } catch { File.Delete(sSavePath + sFilename); throw new XmlRpcFaultException(102, "上传文件发生异常"); } } } } return(new MediaObjectUrl()); }
/// <summary> /// 获得论坛最新的20个主题的Rss描述 /// </summary> /// <param name="ttl">TTL数值</param> /// <returns>Rss描述</returns> public static string GetRssXml(int ttl) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); string str = cache.RetrieveObject("/RSS/Index") as string; if (str != null) { return(str); } ForumInfo[] forumlist = Forums.GetForumList(); UserGroupInfo guestinfo = UserGroups.GetUserGroupInfo(7); StringBuilder sbforumlist = new StringBuilder(); //不允许游客访问的板块Id列表 StringBuilder sbRss = 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(); sbRss.Append("<?xml-stylesheet type=\"text/xsl\" href=\"rss.xsl\" media=\"screen\"?>\r\n"); sbRss.Append("<rss version=\"2.0\">\r\n"); sbRss.Append(" <channel>\r\n"); sbRss.Append(" <title>"); sbRss.Append(Utils.HtmlEncode(config.Forumtitle)); sbRss.Append("</title>\r\n"); sbRss.Append(" <link>"); sbRss.Append(forumurl); sbRss.Append("</link>\r\n"); sbRss.Append(" <description>Latest 20 threads</description>\r\n"); sbRss.Append(" <copyright>Copyright (c) "); sbRss.Append(Utils.HtmlEncode(config.Forumtitle)); sbRss.Append("</copyright>\r\n"); sbRss.Append(" <generator>"); sbRss.Append("Discuz!NT"); sbRss.Append("</generator>\r\n"); sbRss.Append(" <pubDate>"); //sbRss.Append(DateTime.Now.ToUniversalTime().ToString("ddd, dd MMM yyyy HH':'mm':'ss 'GMT'")); sbRss.Append(DateTime.Now.ToString("r")); sbRss.Append("</pubDate>\r\n"); sbRss.AppendFormat(" <ttl>{0}</ttl>\r\n", ttl.ToString()); //声明新的缓存策略接口 Discuz.Cache.ICacheStrategy ics = new RssCacheStrategy(); ics.TimeOut = ttl; cache.LoadCacheStrategy(ics); IDataReader reader = DatabaseProvider.GetInstance().GetNewTopics(sbforumlist.ToString()); if (reader != null) { while (reader.Read()) { sbRss.Append(" <item>\r\n"); sbRss.Append(" <title>"); sbRss.Append(Utils.HtmlEncode(reader["title"].ToString().Trim())); sbRss.Append("</title>\r\n"); sbRss.Append(" <description><![CDATA["); if (reader["message"].ToString().IndexOf("[hide]") > -1) { sbRss.Append("***内容隐藏***"); } else { sbRss.Append(Utils.HtmlEncode(Utils.GetSubString(UBB.ClearUBB(reader["message"].ToString()), 200, "......"))); } sbRss.Append("]]></description>\r\n"); sbRss.Append(" <link>"); sbRss.Append(Utils.HtmlEncode(forumurl)); if (config.Aspxrewrite == 1) { sbRss.Append("showtopic-"); sbRss.Append(reader["tid"].ToString()); sbRss.Append(config.Extname); } else { sbRss.Append("showtopic.aspx?topicid="); sbRss.Append(reader["tid"].ToString()); } sbRss.Append("</link>\r\n"); sbRss.Append(" <category>"); sbRss.Append(Utils.HtmlEncode(reader["name"].ToString().Trim())); sbRss.Append("</category>\r\n"); sbRss.Append(" <author>"); sbRss.Append(Utils.HtmlEncode(reader["poster"].ToString().Trim())); sbRss.Append("</author>\r\n"); sbRss.Append(" <pubDate>"); sbRss.Append(Utils.HtmlEncode(Convert.ToDateTime(reader["postdatetime"]).ToString("r").Trim())); sbRss.Append("</pubDate>\r\n"); sbRss.Append(" </item>\r\n"); } reader.Close(); } else { sbRss.Length = 0; sbRss.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); sbRss.Append("<Rss>Error</Rss>\r\n"); cache.AddObject("/RSS/Index", sbRss.ToString()); cache.LoadDefaultCacheStrategy(); return(sbRss.ToString()); } sbRss.Append(" </channel>\r\n"); sbRss.Append("</rss>"); cache.AddObject("/RSS/Index", sbRss.ToString()); cache.LoadDefaultCacheStrategy(); return(sbRss.ToString()); }
/// <summary> /// 保存上传的文件 /// </summary> /// <param name="categoryid">商品分类id</param> /// <param name="MaxAllowFileCount">最大允许的上传文件个数</param> /// <param name="MaxSizePerDay">每天允许的附件大小总数</param> /// <param name="MaxFileSize">单个最大允许的文件字节数</param>/// /// <param name="TodayUploadedSize">今天已经上传的附件字节总数</param> /// <param name="AllowFileType">允许的文件类型, 以string[]形式提供</param> /// <param name="config">附件保存方式 0=按年/月/日存入不同目录 1=按年/月/日/论坛存入不同目录 2=按论坛存入不同目录 3=按文件类型存入不同目录</param> /// <param name="watermarkstatus">图片水印位置</param> /// <param name="filekey">File控件的Key(即Name属性)</param> /// <returns>文件信息结构</returns> public static Goodsattachmentinfo[] SaveRequestFiles(int categoryId, int MaxAllowFileCount, int MaxSizePerDay, int MaxFileSize, int TodayUploadedSize, string AllowFileType, int waterMarkStatus, GeneralConfigInfo config, string fileKey) { string[] tmp = Utils.SplitString(AllowFileType, "\r\n"); string[] AllowFileExtName = new string[tmp.Length]; int[] MaxSize = new int[tmp.Length]; for (int i = 0; i < tmp.Length; i++) { AllowFileExtName[i] = Utils.CutString(tmp[i], 0, tmp[i].LastIndexOf(",")); MaxSize[i] = Utils.StrToInt(Utils.CutString(tmp[i], tmp[i].LastIndexOf(",") + 1), 0); } int saveFileCount = 0; int fCount = HttpContext.Current.Request.Files.Count; for (int i = 0; i < fCount; i++) { if (!HttpContext.Current.Request.Files[i].FileName.Equals("") && HttpContext.Current.Request.Files.AllKeys[i].Equals(fileKey)) { saveFileCount++; } } Goodsattachmentinfo[] attachmentInfo = new Goodsattachmentinfo[saveFileCount]; if (saveFileCount > MaxAllowFileCount) { return(attachmentInfo); } saveFileCount = 0; Random random = new Random(unchecked ((int)DateTime.Now.Ticks)); for (int i = 0; i < fCount; i++) { if (!HttpContext.Current.Request.Files[i].FileName.Equals("") && HttpContext.Current.Request.Files.AllKeys[i].Equals(fileKey)) { string fileName = Path.GetFileName(HttpContext.Current.Request.Files[i].FileName); string fileExtName = Utils.CutString(fileName, fileName.LastIndexOf(".") + 1).ToLower(); string fileType = HttpContext.Current.Request.Files[i].ContentType.ToLower(); int fileSize = HttpContext.Current.Request.Files[i].ContentLength; string newFileName = ""; attachmentInfo[saveFileCount] = new Goodsattachmentinfo(); attachmentInfo[saveFileCount].Sys_noupload = ""; // 判断 文件扩展名/文件大小/文件类型 是否符合要求 if (!(Utils.IsImgFilename(fileName) && !fileType.StartsWith("image"))) { int extNameId = Utils.GetInArrayID(fileExtName, AllowFileExtName); if (extNameId >= 0 && (fileSize <= MaxSize[extNameId]) && (MaxFileSize >= fileSize /*|| MaxAllSize == 0*/) && (MaxSizePerDay - TodayUploadedSize >= fileSize)) { TodayUploadedSize = TodayUploadedSize + fileSize; string UploadDir = Utils.GetMapPath(BaseConfigs.GetForumPath + "upload/mall/"); StringBuilder saveDir = new StringBuilder(""); //附件保存方式 0=按年/月/日存入不同目录 1=按年/月/日/论坛存入不同目录 2=按论坛存入不同目录 3=按文件类型存入不同目录 if (config.Attachsave == 1) { saveDir.Append(DateTime.Now.ToString("yyyy")); saveDir.Append(Path.DirectorySeparatorChar); saveDir.Append(DateTime.Now.ToString("MM")); saveDir.Append(Path.DirectorySeparatorChar); saveDir.Append(DateTime.Now.ToString("dd")); saveDir.Append(Path.DirectorySeparatorChar); saveDir.Append(categoryId.ToString()); saveDir.Append(Path.DirectorySeparatorChar); } else if (config.Attachsave == 2) { saveDir.Append(categoryId); saveDir.Append(Path.DirectorySeparatorChar); } else if (config.Attachsave == 3) { saveDir.Append(fileExtName); saveDir.Append(Path.DirectorySeparatorChar); } else { saveDir.Append(DateTime.Now.ToString("yyyy")); saveDir.Append(Path.DirectorySeparatorChar); saveDir.Append(DateTime.Now.ToString("MM")); saveDir.Append(Path.DirectorySeparatorChar); saveDir.Append(DateTime.Now.ToString("dd")); saveDir.Append(Path.DirectorySeparatorChar); } newFileName = (Environment.TickCount & int.MaxValue).ToString() + i + random.Next(1000, 9999) + "." + fileExtName; //临时文件名称变量. 用于当启动远程附件之后,先上传到本地临时文件夹的路径信息 string tempFileName = ""; //当支持FTP上传附件且不保留本地附件时 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { // 如果指定目录不存在则建立临时路径 if (!Directory.Exists(UploadDir + "temp\\")) { Utils.CreateDir(UploadDir + "temp\\"); } tempFileName = "temp\\" + newFileName; } else { // 如果指定目录不存在则建立 if (!Directory.Exists(UploadDir + saveDir.ToString())) { Utils.CreateDir(UploadDir + saveDir.ToString()); } } newFileName = saveDir.ToString() + newFileName; try { // 如果是bmp jpg png图片类型 if ((fileExtName == "bmp" || fileExtName == "jpg" || fileExtName == "jpeg" || fileExtName == "png") && fileType.StartsWith("image")) { Image img = Image.FromStream(HttpContext.Current.Request.Files[i].InputStream); if (config.Attachimgmaxwidth > 0 && img.Width > config.Attachimgmaxwidth) { attachmentInfo[saveFileCount].Sys_noupload = "图片宽度为" + img.Width + ", 系统允许的最大宽度为" + config.Attachimgmaxwidth; } if (config.Attachimgmaxheight > 0 && img.Height > config.Attachimgmaxheight) { attachmentInfo[saveFileCount].Sys_noupload = "图片高度为" + img.Width + ", 系统允许的最大高度为" + config.Attachimgmaxheight; } if (attachmentInfo[saveFileCount].Sys_noupload == "") { if (waterMarkStatus == 0) { //当支持FTP上传附件且不保留本地附件模式时,则先上传到临时目录下 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { HttpContext.Current.Request.Files[i].SaveAs(UploadDir + tempFileName); } else { HttpContext.Current.Request.Files[i].SaveAs(UploadDir + newFileName); } attachmentInfo[saveFileCount].Filesize = fileSize; } else { if (config.Watermarktype == 1 && File.Exists(Utils.GetMapPath(BaseConfigs.GetForumPath + "watermark/" + config.Watermarkpic))) { //当支持FTP上传附件且不保留本地附件模式时,则先上传到临时目录下 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { ForumUtils.AddImageSignPic(img, UploadDir + tempFileName, Utils.GetMapPath(BaseConfigs.GetForumPath + "watermark/" + config.Watermarkpic), config.Watermarkstatus, config.Attachimgquality, config.Watermarktransparency); } else { ForumUtils.AddImageSignPic(img, UploadDir + newFileName, Utils.GetMapPath(BaseConfigs.GetForumPath + "watermark/" + config.Watermarkpic), config.Watermarkstatus, config.Attachimgquality, config.Watermarktransparency); } } else { string watermarkText; watermarkText = config.Watermarktext.Replace("{1}", config.Forumtitle); watermarkText = watermarkText.Replace("{2}", "http://" + DNTRequest.GetCurrentFullHost() + "/"); watermarkText = watermarkText.Replace("{3}", Utils.GetDate()); watermarkText = watermarkText.Replace("{4}", Utils.GetTime()); //当支持FTP上传附件且不保留本地附件模式时,则先上传到临时目录下 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { ForumUtils.AddImageSignText(img, UploadDir + tempFileName, watermarkText, config.Watermarkstatus, config.Attachimgquality, config.Watermarkfontname, config.Watermarkfontsize); } else { ForumUtils.AddImageSignText(img, UploadDir + newFileName, watermarkText, config.Watermarkstatus, config.Attachimgquality, config.Watermarkfontname, config.Watermarkfontsize); } } //当支持FTP上传附件且不保留本地附件模式时,则读取临时目录下的文件信息 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { attachmentInfo[saveFileCount].Filesize = new FileInfo(UploadDir + tempFileName).Length; } else { attachmentInfo[saveFileCount].Filesize = new FileInfo(UploadDir + newFileName).Length; } } } } else { attachmentInfo[saveFileCount].Filesize = fileSize; //当支持FTP上传附件且不保留本地附件模式时,则先上传到临时目录下 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { HttpContext.Current.Request.Files[i].SaveAs(UploadDir + tempFileName); } else { HttpContext.Current.Request.Files[i].SaveAs(UploadDir + newFileName); } } } catch { //当上传目录和临时文件夹都没有上传的文件时 if (!(Utils.FileExists(UploadDir + tempFileName)) && (!(Utils.FileExists(UploadDir + newFileName)))) { attachmentInfo[saveFileCount].Filesize = fileSize; //当支持FTP上传附件且不保留本地附件模式时,则先上传到临时目录下 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { HttpContext.Current.Request.Files[i].SaveAs(UploadDir + tempFileName); } else { HttpContext.Current.Request.Files[i].SaveAs(UploadDir + newFileName); } } } try { //加载文件预览类指定方法 IPreview preview = PreviewProvider.GetInstance(fileExtName.Trim()); if (preview != null) { preview.UseFTP = (FTPs.GetMallAttachInfo.Allowupload == 1) ? true : false; //当支持FTP上传附件且不保留本地附件模式时 if (FTPs.GetMallAttachInfo.Allowupload == 1 && FTPs.GetMallAttachInfo.Reservelocalattach == 0) { preview.OnSaved(UploadDir + tempFileName); } else { preview.OnSaved(UploadDir + newFileName); } } } catch { } //当支持FTP上传附件时,使用FTP上传远程附件 if (FTPs.GetMallAttachInfo.Allowupload == 1) { FTPs ftps = new FTPs(); //当不保留本地附件模式时,在上传完成之后删除本地tempfilename文件 if (FTPs.GetMallAttachInfo.Reservelocalattach == 0) { ftps.UpLoadFile(newFileName.Substring(0, newFileName.LastIndexOf("\\")), UploadDir + tempFileName, FTPs.FTPUploadEnum.ForumAttach); } else { ftps.UpLoadFile(newFileName.Substring(0, newFileName.LastIndexOf("\\")), UploadDir + newFileName, FTPs.FTPUploadEnum.ForumAttach); } } } else { if (extNameId < 0) { attachmentInfo[saveFileCount].Sys_noupload = "文件格式无效"; } else if (MaxSizePerDay - TodayUploadedSize < fileSize) { attachmentInfo[saveFileCount].Sys_noupload = "文件大于今天允许上传的字节数"; } else if (fileSize > MaxSize[extNameId]) { attachmentInfo[saveFileCount].Sys_noupload = "文件大于该类型附件允许的字节数"; } else { attachmentInfo[saveFileCount].Sys_noupload = "文件大于单个文件允许上传的字节数"; } } } else { attachmentInfo[saveFileCount].Sys_noupload = "文件格式无效"; } //当支持FTP上传附件时 if (FTPs.GetMallAttachInfo.Allowupload == 1) { attachmentInfo[saveFileCount].Filename = FTPs.GetMallAttachInfo.Remoteurl + "/" + newFileName.Replace("\\", "/"); } else { attachmentInfo[saveFileCount].Filename = "mall/" + newFileName; } attachmentInfo[saveFileCount].Description = fileExtName; attachmentInfo[saveFileCount].Filetype = fileType; attachmentInfo[saveFileCount].Attachment = fileName; attachmentInfo[saveFileCount].Postdatetime = DateTime.Now.ToString(); attachmentInfo[saveFileCount].Sys_index = i; saveFileCount++; } } return(attachmentInfo); }
/// <summary> /// 发送邮件通知 /// </summary> /// <param name="email">接收人邮箱</param> /// <param name="privatemessageinfo">短消息对象</param> public void SendNotifyEmail(string email, PrivateMessageInfo pm) { string jumpurl = string.Format("http://{0}/usercpshowpm.aspx?pmid={1}", DNTRequest.GetCurrentFullHost(), pm.Pmid); StringBuilder sb_body = new StringBuilder("# 论坛短消息: <a href=\"" + jumpurl + "\" target=\"_blank\">" + pm.Subject + "</a>"); //发送人邮箱 sb_body.AppendFormat("\r\n\r\n{0}\r\n<hr/>", pm.Message); sb_body.AppendFormat("作 者:{0}\r\n", pm.Msgfrom); sb_body.AppendFormat("Email:<a href=\"mailto:{0}\" target=\"_blank\">{0}</a>\r\n", Users.GetShortUserInfo(userid).Email.Trim()); sb_body.AppendFormat("URL:<a href=\"{0}\" target=\"_blank\">{0}</a>\r\n", jumpurl); sb_body.AppendFormat("时 间:{0}", pm.Postdatetime); Emails.SendEmailNotify(email, "[" + config.Forumtitle + "短消息通知]" + pm.Subject, sb_body.ToString()); }
/// <summary> /// 添加附件 /// </summary> /// <param name="savedfileName">上传之后保存的文件名称</param> /// <param name="fileName">文件名称</param> /// <param name="creinfo">认证信息</param> /// <returns>返回当前插入的附件id</returns> private int AddAttachment(string savedFileName, string fileName, CredentialInfo creinfo) { string UploadDir = GetUploadFolder(savedFileName, creinfo.ForumID.ToString()); AttachmentInfo attachmentinfo = new AttachmentInfo(); string fileextname = Utils.CutString(savedFileName, savedFileName.LastIndexOf(".") + 1).ToLower(); Random random = new Random(unchecked ((int)DateTime.Now.Ticks)); string newfilename = string.Format("{0}{1}{2}.{3}", (Environment.TickCount & int.MaxValue).ToString(), random.Next(1000, 99999), random.Next(1000, 99999), fileextname); try { // 如果是bmp jpg png图片类型 if ((fileextname == "bmp" || fileextname == "jpg" || fileextname == "jpeg" || fileextname == "png")) { if (Discuz.Common.Utils.FileExists(UploadDir + savedFileName)) { System.Drawing.Image img = System.Drawing.Image.FromFile(UploadDir + savedFileName); //System.IO.File.Copy(UploadDir + savedFileName, UploadDir + newfilename, true); if (config.Attachimgmaxwidth > 0 && img.Width > config.Attachimgmaxwidth) { attachmentinfo.Sys_noupload = "图片宽度为" + img.Width.ToString() + ", 系统允许的最大宽度为" + config.Attachimgmaxwidth.ToString(); } if (config.Attachimgmaxheight > 0 && img.Height > config.Attachimgmaxheight) { attachmentinfo.Sys_noupload = "图片高度为" + img.Width.ToString() + ", 系统允许的最大高度为" + config.Attachimgmaxheight.ToString(); } attachmentinfo.Width = img.Width; attachmentinfo.Height = img.Height; if (config.Watermarkstatus == 0) { img.Dispose(); File.Move(UploadDir + savedFileName, UploadDir + newfilename); } else { if (config.Watermarktype == 1 && File.Exists(Utils.GetMapPath(BaseConfigs.GetForumPath + "watermark/" + config.Watermarkpic))) { Discuz.Forum.ForumUtils.AddImageSignPic(img, UploadDir + newfilename, Utils.GetMapPath(BaseConfigs.GetForumPath + "watermark/" + config.Watermarkpic), config.Watermarkstatus, config.Attachimgquality, config.Watermarktransparency); } else { string watermarkText; watermarkText = config.Watermarktext.Replace("{1}", config.Forumtitle); watermarkText = watermarkText.Replace("{2}", "http://" + DNTRequest.GetCurrentFullHost() + "/"); watermarkText = watermarkText.Replace("{3}", Utils.GetDate()); watermarkText = watermarkText.Replace("{4}", Utils.GetTime()); Discuz.Forum.ForumUtils.AddImageSignText(img, UploadDir + newfilename, watermarkText, config.Watermarkstatus, config.Attachimgquality, config.Watermarkfontname, config.Watermarkfontsize); } System.IO.File.Delete(UploadDir + savedFileName); } // 获得文件长度 attachmentinfo.Filesize = new FileInfo(UploadDir + newfilename).Length; } } else { System.IO.File.Move(UploadDir + savedFileName, UploadDir + newfilename); attachmentinfo.Filesize = new FileInfo(UploadDir + newfilename).Length; } } catch {} if (Discuz.Common.Utils.FileExists(UploadDir + savedFileName)) { attachmentinfo.Filesize = new FileInfo(UploadDir + savedFileName).Length; attachmentinfo.Filename = GetDirInfo(savedFileName, creinfo.ForumID.ToString()) + savedFileName; } if (Discuz.Common.Utils.FileExists(UploadDir + newfilename)) { attachmentinfo.Filesize = new FileInfo(UploadDir + newfilename).Length; attachmentinfo.Filename = GetDirInfo(newfilename, creinfo.ForumID.ToString()) + newfilename; } //当支持FTP上传附件时 if (FTPs.GetForumAttachInfo != null && FTPs.GetForumAttachInfo.Allowupload == 1) { attachmentinfo.Filename = FTPs.GetForumAttachInfo.Remoteurl + "/" + newfilename.Replace("\\", "/"); } attachmentinfo.Uid = creinfo.UserID; attachmentinfo.Description = fileextname; attachmentinfo.Filetype = GetContentType(fileextname); attachmentinfo.Attachment = fileName; attachmentinfo.Downloads = 0; attachmentinfo.Postdatetime = DateTime.Now.ToString(); attachmentinfo.Sys_index = 0; //return Discuz.Data.DatabaseProvider.GetInstance().CreateAttachment(attachmentinfo); return(Discuz.Data.Attachments.CreateAttachments(attachmentinfo)); }
/// <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> /// 获得日志的RSS /// </summary> /// <param name="ttl">Time To Live</param> /// <param name="uid">用户id</param> /// <returns></returns> public static string GetBlogAggRss(int ttl) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); //Discuz.Cache.ICacheStrategy ics = new RssCacheStrategy(); //ics.TimeOut = ttl * 60; //cache.LoadCacheStrategy(ics); string str = cache.RetrieveObject("/SPACE/RSS/Index") as string; if (str != null) { return(str); } string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + BaseConfigs.GetForumPath.ToLower(); DataTable dt = Data.DbProvider.GetInstance().GetWebSiteAggSpacePostsList(20, 1); if (dt == null || dt.Rows.Count < 1) { return("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<Rss>Specified blog not found</Rss>\r\n"); } StringBuilder rssBuilder = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"); rssBuilder.Append("<?xml-stylesheet type=\"text/xsl\" href=\"rss.xsl\" media=\"screen\"?>\r\n"); rssBuilder.Append("<rss version=\"2.0\">\r\n"); rssBuilder.Append(" <channel>\r\n"); rssBuilder.Append(" <title>"); rssBuilder.Append(Utils.HtmlEncode(GeneralConfigs.GetConfig().Forumtitle)); rssBuilder.Append(" - "); rssBuilder.Append("最新空间日志"); rssBuilder.Append("</title>\r\n"); rssBuilder.Append(" <link>"); rssBuilder.Append(forumurl); rssBuilder.Append("spaceindex.aspx"); rssBuilder.Append("</link>\r\n"); rssBuilder.AppendFormat(" <description>Latest {0} blogs</description>\r\n", dt.Rows.Count); rssBuilder.Append(" <copyright>Copyright (c) "); rssBuilder.Append(Utils.HtmlEncode(GeneralConfigs.GetConfig().Forumtitle)); rssBuilder.Append("</copyright>\r\n"); rssBuilder.Append(" <generator>"); rssBuilder.Append("Discuz!NT"); rssBuilder.Append("</generator>\r\n"); rssBuilder.Append(" <pubDate>"); rssBuilder.Append(DateTime.Now.ToString("r")); rssBuilder.Append("</pubDate>\r\n"); rssBuilder.AppendFormat(" <ttl>{0}</ttl>\r\n", ttl.ToString()); foreach (DataRow dr in dt.Rows) { rssBuilder.Append(" <item>\r\n"); rssBuilder.Append(" <title>"); rssBuilder.Append(Utils.HtmlEncode(dr["title"].ToString().Trim())); rssBuilder.Append("</title>\r\n"); rssBuilder.Append(" <description><![CDATA["); rssBuilder.Append(Utils.HtmlEncode(Utils.GetSubString(Utils.RemoveHtml(dr["content"].ToString()), 200, "......"))); rssBuilder.Append("]]></description>\r\n"); rssBuilder.Append(" <link>"); rssBuilder.Append(Utils.HtmlEncode(forumurl)); rssBuilder.Append("space/viewspacepost.aspx?postid="); rssBuilder.Append(dr["postid"].ToString()); rssBuilder.Append("</link>\r\n"); rssBuilder.Append(" <category>"); rssBuilder.Append(Utils.HtmlEncode(dr["category"].ToString())); rssBuilder.Append("</category>\r\n"); rssBuilder.Append(" <author>"); rssBuilder.Append(Utils.HtmlEncode(dr["author"].ToString().Trim())); rssBuilder.Append("</author>\r\n"); rssBuilder.Append(" <pubDate>"); rssBuilder.Append(Utils.HtmlEncode(Convert.ToDateTime(dr["postdatetime"]).ToString("r").Trim())); rssBuilder.Append("</pubDate>\r\n"); rssBuilder.Append(" </item>\r\n"); } rssBuilder.Append(" </channel>\r\n"); rssBuilder.Append("</rss>"); cache.AddObject("/SPACE/RSS/Index", rssBuilder.ToString(), ttl * 60); //cache.LoadDefaultCacheStrategy(); return(rssBuilder.ToString()); }
/// <summary> /// 获得图片的RSS /// </summary> /// <param name="ttl">Time To Live</param> /// <returns></returns> public static string GetPhotoRss(int ttl) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); //Discuz.Cache.ICacheStrategy ics = new RssCacheStrategy(); //ics.TimeOut = ttl * 60; //cache.LoadCacheStrategy(ics); string str = cache.RetrieveObject("/PHOTO/RSS/Index") as string; if (str != null) { return(str); } string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + BaseConfigs.GetForumPath.ToLower(); IDataReader reader = DbProvider.GetInstance().GetFocusPhotoList(2, 20, 100); if (reader == null) { return("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<Rss>Specified photos not found</Rss>\r\n"); } StringBuilder rssBuilder = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"); rssBuilder.Append("<?xml-stylesheet type=\"text/xsl\" href=\"rss.xsl\" media=\"screen\"?>\r\n"); rssBuilder.Append("<rss version=\"2.0\">\r\n"); rssBuilder.Append(" <channel>\r\n"); rssBuilder.Append(" <title>"); rssBuilder.Append(Utils.HtmlEncode(GeneralConfigs.GetConfig().Forumtitle)); rssBuilder.Append(" - "); rssBuilder.Append("最新照片"); rssBuilder.Append("</title>\r\n"); rssBuilder.Append(" <link>"); rssBuilder.Append(forumurl); rssBuilder.Append("spaceindex.aspx"); rssBuilder.Append("</link>\r\n"); rssBuilder.AppendFormat(" <description>Latest 20 photos</description>\r\n"); rssBuilder.Append(" <copyright>Copyright (c) "); rssBuilder.Append(Utils.HtmlEncode(GeneralConfigs.GetConfig().Forumtitle)); rssBuilder.Append("</copyright>\r\n"); rssBuilder.Append(" <generator>"); rssBuilder.Append("Discuz!NT"); rssBuilder.Append("</generator>\r\n"); rssBuilder.Append(" <pubDate>"); rssBuilder.Append(DateTime.Now.ToString("r")); rssBuilder.Append("</pubDate>\r\n"); rssBuilder.AppendFormat(" <ttl>{0}</ttl>\r\n", ttl.ToString()); while (reader.Read()) { rssBuilder.Append(" <item>\r\n"); rssBuilder.Append(" <title>"); rssBuilder.Append(Utils.HtmlEncode(reader["title"].ToString().Trim())); rssBuilder.Append("</title>\r\n"); rssBuilder.Append(" <description><![CDATA[<img src=\""); rssBuilder.Append(Utils.HtmlEncode(forumurl)); rssBuilder.Append(reader["filename"].ToString().Trim()); rssBuilder.Append("\"/>]]></description>\r\n"); rssBuilder.Append(" <link>"); rssBuilder.Append(Utils.HtmlEncode(forumurl)); rssBuilder.Append("showphoto.aspx?photoid="); rssBuilder.Append(reader["photoid"].ToString()); rssBuilder.Append("</link>\r\n"); rssBuilder.Append(" <category>"); rssBuilder.Append("</category>\r\n"); rssBuilder.Append(" <author>"); rssBuilder.Append(Utils.HtmlEncode(reader["username"].ToString().Trim())); rssBuilder.Append("</author>\r\n"); rssBuilder.Append(" <pubDate>"); rssBuilder.Append(Utils.HtmlEncode(Convert.ToDateTime(reader["postdate"]).ToString("r").Trim())); rssBuilder.Append("</pubDate>\r\n"); rssBuilder.Append(" </item>\r\n"); } reader.Close(); rssBuilder.Append(" </channel>\r\n"); rssBuilder.Append("</rss>"); cache.AddObject("/PHOTO/RSS/Index", rssBuilder.ToString(), ttl * 60); //cache.LoadDefaultCacheStrategy(); return(rssBuilder.ToString()); }
/// <summary> /// 获得指定版块最新的20个主题的Rss描述 /// </summary> /// <param name="ttl">TTL数值</param> /// <param name="fid">版块id</param> /// <returns>Rss描述</returns> public static string GetForumRssXml(int ttl, int fid) { Discuz.Cache.DNTCache cache = Discuz.Cache.DNTCache.GetCacheService(); string str = cache.RetrieveObject("/RSS/Forum" + fid) as string; if (str != null) { return(str); } string forumurl = "http://" + DNTRequest.GetCurrentFullHost() + ("/").ToLower();//GeneralConfigs.GetConfig().Forumurl; //if (!forumurl.EndsWith("/")) //{ // forumurl = forumurl + "/"; //} ForumInfo forum = Forums.GetForumInfo(fid); if (forum == null) { return("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<Rss>Specified forum not found</Rss>\r\n"); } if (forum.Viewperm == null || forum.Viewperm == string.Empty) { //板块权限设置为空,按照用户组权限走,RSS仅检查游客权限 UserGroupInfo guestinfo = UserGroups.GetUserGroupInfo(7); if (guestinfo.Allowvisit == 0) { return("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<Rss>Guest Denied</Rss>\r\n"); } } else { if (!Utils.InArray("7", forum.Viewperm, ",")) { return("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<Rss>Guest Denied</Rss>\r\n"); } } StringBuilder sbRss = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"); sbRss.Append("<?xml-stylesheet type=\"text/xsl\" href=\"rss.xsl\" media=\"screen\"?>\r\n"); sbRss.Append("<rss version=\"2.0\">\r\n"); sbRss.Append(" <channel>\r\n"); sbRss.Append(" <title>"); sbRss.Append(Utils.HtmlEncode(config.Forumtitle)); sbRss.Append(" - "); sbRss.Append(Utils.HtmlEncode(forum.Name)); sbRss.Append("</title>\r\n"); sbRss.Append(" <link>"); sbRss.Append(forumurl); if (config.Aspxrewrite == 1) { sbRss.Append("showforum-"); sbRss.Append(fid.ToString()); sbRss.Append(config.Extname); } else { sbRss.Append("showforum.aspx?forumid="); sbRss.Append(fid.ToString()); } sbRss.Append("</link>\r\n"); sbRss.Append(" <description>Latest 20 threads</description>\r\n"); sbRss.Append(" <copyright>Copyright (c) "); sbRss.Append(Utils.HtmlEncode(config.Forumtitle)); sbRss.Append("</copyright>\r\n"); sbRss.Append(" <generator>"); sbRss.Append("Discuz!NT"); sbRss.Append("</generator>\r\n"); sbRss.Append(" <pubDate>"); //sbRss.Append(DateTime.Now.ToUniversalTime().ToString("ddd, dd MMM yyyy HH':'mm':'ss 'GMT'")); sbRss.Append(DateTime.Now.ToString("r")); sbRss.Append("</pubDate>\r\n"); sbRss.AppendFormat(" <ttl>{0}</ttl>\r\n", ttl.ToString()); IDataReader reader = DatabaseProvider.GetInstance().GetForumNewTopics(fid); if (reader != null) { while (reader.Read()) { sbRss.Append(" <item>\r\n"); sbRss.Append(" <title>"); sbRss.Append(Utils.HtmlEncode(reader["title"].ToString().Trim())); sbRss.Append("</title>\r\n"); sbRss.Append(" <description><![CDATA["); if (reader["message"].ToString().IndexOf("[hide]") > -1) { sbRss.Append("***内容隐藏***"); } else { sbRss.Append(Utils.HtmlEncode(Utils.GetSubString(UBB.ClearUBB(reader["message"].ToString()), 200, "......"))); } sbRss.Append("]]></description>\r\n"); sbRss.Append(" <link>"); sbRss.Append(Utils.HtmlEncode(forumurl)); if (config.Aspxrewrite == 1) { sbRss.Append("showtopic-"); sbRss.Append(reader["tid"].ToString()); sbRss.Append(config.Extname); } else { sbRss.Append("showtopic.aspx?topicid="); sbRss.Append(reader["tid"].ToString()); } sbRss.Append("</link>\r\n"); sbRss.Append(" <category>"); sbRss.Append(Utils.HtmlEncode(forum.Name)); sbRss.Append("</category>\r\n"); sbRss.Append(" <author>"); sbRss.Append(Utils.HtmlEncode(reader["poster"].ToString().Trim())); sbRss.Append("</author>\r\n"); sbRss.Append(" <pubDate>"); sbRss.Append(Utils.HtmlEncode(Convert.ToDateTime(reader["postdatetime"]).ToString("r").Trim())); sbRss.Append("</pubDate>\r\n"); sbRss.Append(" </item>\r\n"); } reader.Close(); } sbRss.Append(" </channel>\r\n"); sbRss.Append("</rss>"); Discuz.Cache.ICacheStrategy ics = new RssCacheStrategy(); ics.TimeOut = ttl; cache.LoadCacheStrategy(ics); cache.AddObject("/RSS/Forum" + fid, sbRss.ToString()); cache.LoadDefaultCacheStrategy(); return(sbRss.ToString()); }