Example #1
0
        /// <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);
            }
        }
Example #2
0
        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());
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        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());
                }
            }
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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 });
        }
Example #8
0
        /// <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());
        }
Example #9
0
        /// <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());
        }
Example #10
0
//实现文件上传

        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());
        }
Example #11
0
        /// <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());
        }
Example #12
0
        /// <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);
        }
Example #13
0
        /// <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());
        }
Example #14
0
        /// <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));
        }
Example #15
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 #16
0
        /// <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());
        }
Example #17
0
        /// <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());
        }
Example #18
0
        /// <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());
        }