コード例 #1
0
        protected override void ShowPage()
        {
            pagetitle = "短消息草稿箱";

            if (!IsLogin())
            {
                return;
            }

            if (DNTRequest.IsPost())
            {
                if (PrivateMessages.DeletePrivateMessage(userid, Utils.SplitString(DNTRequest.GetFormString("pmitemid"), ",")) == -1)
                {
                    AddErrLine("参数无效<br />");
                    return;
                }
                SetMetaRefresh();
                SetShowBackLink(true);
                AddMsgLine("删除完毕");
            }
            else
            {
                BindPrivateMessage(2);
            }

            newnoticecount = Notices.GetNewNoticeCountByUid(userid);
        }
コード例 #2
0
        public string Get()
        {
            GetNoticeParams actionParams = JavaScriptConvert.DeserializeObject <GetNoticeParams>(JsonParams);

            if (actionParams.UId <= 0)
            {
                return("");
            }
            GetNoticeResponse getNoticeResponse = new GetNoticeResponse();

            getNoticeResponse.Message.UnRead = PrivateMessages.GetPrivateMessageCount(actionParams.UId, 0, 1);
            DateTime time = new DateTime();

            if (getNoticeResponse.Message.UnRead > 0)
            {
                getNoticeResponse.Message.MostRecent = Utils.ConvertToUnixTimestamp(DateTime.TryParse(PrivateMessages.GetPrivateMessageInfo(PrivateMessages.GetLatestPMID(actionParams.UId)).Postdatetime, out time) ? time : DateTime.Now);
            }

            getNoticeResponse.Notification.UnRead = Notices.GetNoticeCount(actionParams.UId, 1);
            if (getNoticeResponse.Notification.UnRead > 0)
            {
                getNoticeResponse.Notification.MostRecent = Utils.ConvertToUnixTimestamp(DateTime.TryParse(Notices.GetNewNotices(actionParams.UId)[0].Postdatetime, out time) ? time : DateTime.Now);
            }

            List <FriendshipRequestInfo> requestList = Friendship.GetUserFriendRequestList(actionParams.UId, 1, Friendship.GetUserFriendRequestCount(actionParams.UId));

            getNoticeResponse.FriendRequest.UIds = GetFriendRequestUid(requestList);
            if (getNoticeResponse.FriendRequest.UIds.Length > 0)
            {
                getNoticeResponse.FriendRequest.MostRecent = Utils.ConvertToUnixTimestamp(DateTime.TryParse(requestList[requestList.Count - 1].DateTime, out time) ? time : DateTime.Now);
            }

            return(GetResult(getNoticeResponse));
        }
コード例 #3
0
        protected override void ShowPage()
        {
            pagetitle = "短消息发件箱";

            if (!IsLogin())
            {
                return;
            }

            if (DNTRequest.IsPost())
            {
                if (ForumUtils.IsCrossSitePost())
                {
                    AddErrLine("您的请求来路不正确,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。");
                    return;
                }

                if (PrivateMessages.DeletePrivateMessage(userid, Utils.SplitString(DNTRequest.GetFormString("pmitemid"), ",")) == -1)
                {
                    AddErrLine("参数无效<br />");
                    return;
                }

                SetShowBackLink(false);
                AddMsgLine("删除完毕");
            }
            else
            {
                BindPrivateMessage(1);
            }

            newnoticecount = Notices.GetNewNoticeCountByUid(userid);
        }
コード例 #4
0
        protected override void OnDisabled()
        {
            base.OnDisabled();

            RegisteredChatCommands.Clear();
            ChatButtonHighlighted = false;
            LeaveEventHandled     = true;
            SendEventHandled      = true;

            RegisteredChatCommands.Clear();
            ChannelMessages.Clear();
            PrivateMessages.Clear();
            ConsoleMessages.Clear();
            PlayerChannels.Clear();
            JoinedChannels.Clear();
            JoinedPmChannels.Clear();
            HighlightChannel.Clear();
            HighlightPm.Clear();

            SelectedChannel   = null;
            SelectedPmChannel = null;

            SelectTextBox = false;
            SendText      = "";

            Queuer.Clear();

            if (ChatLocked)
            {
                InputLockManager.RemoveControlLock(LmpChatLock);
                ChatLocked = false;
            }
        }
コード例 #5
0
        protected override void ShowPage()
        {
            if (userid == -1)
            {
                AddErrLine("你尚未登录");

                return;
            }
            user = Discuz.Forum.Users.GetUserInfo(userid);

            pagetitle = "短消息草稿箱";

            if (DNTRequest.IsPost())
            {
                string[] pmitemid = Utils.SplitString(DNTRequest.GetFormString("pmitemid"), ",");

                int retval = PrivateMessages.DeletePrivateMessage(userid, pmitemid);
                if (retval == -1)
                {
                    AddErrLine("参数无效<br />");
                    return;
                }

                SetShowBackLink(false);
                AddMsgLine("删除完毕");
            }
            else
            {
                BindItems();
            }
        }
コード例 #6
0
        void backgroundWorkerMessages_DoWork(object sender, DoWorkEventArgs e)
        {
            List <Message> messages = new List <Message>();

            Tuple <List <Message>, ApiCallResponse> items;
            Tuple <List <Channel>, ApiCallResponse> channels = Channels.Subscriptions.getOfCurrentUser(this.accessToken);

            if (channels.Item2.success)
            {
                backgroundWorkerMessages.ReportProgress(20, channels.Item1);
            }
            else
            {
                return;
            }


            DateTime newestKnownDateTime = DateTime.MinValue;

            if (PrivateMessages.Count > 0)
            {
                newestKnownDateTime = PrivateMessages.Max(m => m.CreatedAt);
            }

            foreach (Channel channel in channels.Item1)
            {
                if (channel.type == "net.app.core.pm")
                {
                    Messages.messageParameters parameter = new Messages.messageParameters();
                    parameter.include_annotations = true;
                    items = Messages.getMessagesInChannel(this.accessToken, channel.id, parameters: parameter);
                    if (items.Item2.success)
                    {
                        foreach (Message message in items.Item1)
                        {
                            if (message.created_at > newestKnownDateTime)
                            {
                                messages.Add(message);
                            }
                        }
                    }
                }
            }

            foreach (Message message in messages)
            {
                if (!string.IsNullOrEmpty(message.text) && !message.is_deleted && !message.machine_only)
                {
                    ApnItem item = new ApnItem(message, this);
                    if (item != null)
                    {
                        item.isPrivateMessage = true;
                        item.receivingAccount = this;
                        backgroundWorkerMessages.ReportProgress(50, item);
                    }
                }
            }

            backgroundWorkerMessages.ReportProgress(99, null);
        }
コード例 #7
0
        public string SendPrivateMessage(string touser, string message, string subject, string layout)
        {
            string         username    = HttpContext.Current.User.Identity.Name;
            MembershipUser currentUser = Membership.GetUser(username);
            ProfileCommon  profile     = ProfileCommon.GetUserProfile(username);

            if (currentUser == null || currentUser.ProviderUserKey == null)
            {
                return(null);
            }

            var pm = new PrivateMessageInfo
            {
                Subject      = subject,
                Message      = message,
                ToMemberId   = Convert.ToInt32(touser),
                FromMemberId = (int)currentUser.ProviderUserKey,
                Read         = 0,
                OutBox       = layout != "none" ? 1 : 0,
                SentDate     = DateTime.UtcNow.ToForumDateStr(),
                Mail         = profile.PMEmail == null ? 0 : profile.PMEmail.Value
            };

            PrivateMessages.SendPrivateMessage(pm);

            //do we need to send an email
            MembershipUser toUser = Membership.GetUser(Convert.ToInt32(touser));

            if (toUser != null && Config.UseEmail)
            {
                ProfileCommon toprofile = ProfileCommon.GetUserProfile(toUser.UserName);
                if (toprofile.PMEmail.HasValue)
                {
                    if (toprofile.PMEmail.Value == 1)
                    {
                        SnitzEmail notification = new SnitzEmail
                        {
                            FromUser = "******",
                            toUser   = new MailAddress(toUser.Email),
                            subject  = Regex.Replace(Config.ForumTitle, @"&\w+;", "") + " - New Private message"
                        };
                        string strMessage = "Hello " + toUser.UserName;
                        strMessage = strMessage + username + " has sent you a private message at " + Config.ForumTitle + "." + Environment.NewLine;
                        if (String.IsNullOrEmpty(subject))
                        {
                            strMessage = strMessage + "Regarding - " + subject + "." + Environment.NewLine + Environment.NewLine;
                        }
                        else
                        {
                            strMessage = strMessage + "With the subject entitled - " + message + "." + Environment.NewLine + Environment.NewLine;
                        }

                        notification.msgBody = strMessage;
                        notification.Send();
                    }
                }
            }
            return(PrivateMessage.PmSent);
        }
コード例 #8
0
        /// <summary>创建用户</summary>
        public static UserInfo CreateUser(this HttpContextBase context, GeneralConfigInfo config, IPKSPrincipal principal, bool isAdmin)
        {
            var userInfo = CreateUser(config, principal, isAdmin);

            #region 发送欢迎信息
            if (config.Welcomemsg == 1)
            {
                // 收件箱
                PrivateMessageInfo privatemessageinfo = new PrivateMessageInfo();
                privatemessageinfo.Message      = config.Welcomemsgtxt;
                privatemessageinfo.Subject      = "欢迎您的加入! (请勿回复本信息)";
                privatemessageinfo.Msgto        = userInfo.Username;
                privatemessageinfo.Msgtoid      = userInfo.Uid;
                privatemessageinfo.Msgfrom      = PrivateMessages.SystemUserName;
                privatemessageinfo.Msgfromid    = 0;
                privatemessageinfo.New          = 1;
                privatemessageinfo.Postdatetime = userInfo.Joindate;
                privatemessageinfo.Folder       = 0;
                PrivateMessages.CreatePrivateMessage(privatemessageinfo, 0);
            }
            #endregion
            //发送同步数据给应用程序
            Sync.UserRegister(userInfo.Uid, userInfo.Username, userInfo.Password, "");
            //SetUrl("index.aspx");
            //SetShowBackLink(false);
            //SetMetaRefresh(config.Regverify == 0 ? 2 : 5);
            Statistics.ReSetStatisticsCache();
            //if (inviteCode != null)
            //{
            //    Invitation.UpdateInviteCodeSuccessCount(inviteCode.InviteId);
            //    if (config.Regstatus == 3)
            //    {
            //        if (inviteCode.SuccessCount + 1 >= inviteCode.MaxCount)
            //            Invitation.DeleteInviteCode(inviteCode.InviteId);
            //    }
            //}
            var oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
            if (config.Regverify == 0)
            {
                UserCredits.UpdateUserCredits(userInfo.Uid);
                //ForumUtils.WriteUserCookie(user, -1, config.Passwordkey);
                OnlineUsers.UpdateAction(oluserinfo.Olid, UserAction.Register.ActionID, 0, config.Onlinetimeout);
                //MsgForward("register_succeed");
                //AddMsgLine("注册成功, 返回登录页");
            }
            else
            {
                if (config.Regverify == 1)
                {
                    //AddMsgLine("注册成功, 请您到您的邮箱中点击激活链接来激活您的帐号");
                }
                else if (config.Regverify == 2)
                {
                    //AddMsgLine("注册成功, 但需要系统管理员审核您的帐户后才可登录使用");
                }
            }
            //ManyouApplications.AddUserLog(userInfo.Uid, UserLogActionEnum.Add);
            return(userInfo);
        }
コード例 #9
0
 public void BindData()
 {
     #region 绑定公共列表
     DataGrid1.AllowCustomPaging = false;
     DataGrid1.TableHeaderName   = "公共消息列表";
     DataGrid1.DataKeyField      = "pmid";
     DataGrid1.BindData(PrivateMessages.GetAnnouncePrivateMessageCollection(-1, 0));
     #endregion
 }
コード例 #10
0
        protected override void ShowPage()
        {
            pagetitle = "撰写短消息";

            if (!IsLogin())
            {
                return;
            }

            if (!CheckPermission())
            {
                return;
            }

            if (DNTRequest.IsPost() && !ForumUtils.IsCrossSitePost())
            {
                if (!CheckPermissionAfterPost())
                {
                    return;
                }

                SendPM();
                if (IsErr())
                {
                    return;
                }
            }

            ShortUserInfo shortUserInfo = Users.GetShortUserInfo(msgtoid);
            string        msttoName     = (shortUserInfo != null) ? shortUserInfo.Username : "";

            msgto = msgtoid > 0 ? msttoName : msgto;

            string action = DNTRequest.GetQueryString("action").ToLower();

            if (action.CompareTo("re") == 0 || action.CompareTo("fw") == 0) //回复或者转发
            {
                if (DNTRequest.GetQueryInt("pmid", -1) != -1)
                {
                    PrivateMessageInfo pm = PrivateMessages.GetPrivateMessageInfo(DNTRequest.GetQueryInt("pmid", -1));
                    if (pm != null && (pm.Msgtoid == userid || pm.Msgfromid == userid))
                    {
                        msgto   = action.CompareTo("re") == 0 ? Utils.HtmlEncode(pm.Msgfrom) : "";
                        subject = Utils.HtmlEncode(action) + ":" + pm.Subject;
                        message = Utils.HtmlEncode("> ") + pm.Message.Replace("\n", "\n> ") + "\r\n\r\n";
                    }
                }
            }

            if (DNTRequest.GetString("operation") == "pmfriend")
            {
                CreatePmFriendMessage();
            }

            newnoticecount = Notices.GetNewNoticeCountByUid(userid);
        }
コード例 #11
0
        public override bool Run(CommandParameter commandParam, ref string result)
        {
            //如果是桌面程序则需要验证用户身份
            if (commandParam.AppInfo.ApplicationType == (int)ApplicationType.DESKTOP)
            {
                if (commandParam.LocalUid < 1)
                {
                    result = Util.CreateErrorMessage(ErrorType.API_EC_SESSIONKEY, commandParam.ParamList);
                    return(false);
                }
            }

            if (!commandParam.CheckRequiredParams("uid,page_size,page_index"))
            {
                result = Util.CreateErrorMessage(ErrorType.API_EC_PARAM, commandParam.ParamList);
                return(false);
            }

            int uid       = commandParam.GetIntParam("uid");
            int pageSize  = commandParam.GetIntParam("page_size", 10);
            int pageIndex = commandParam.GetIntParam("page_index", 1);

            pageSize  = pageSize < 1 ? 10 : pageSize;
            pageIndex = pageIndex < 1 ? 1 : pageIndex;

            List <PrivateMessageInfo> list = PrivateMessages.GetPrivateMessageCollection(uid, 0, pageSize, pageIndex, 1);

            List <Message> newList = new List <Message>();

            foreach (PrivateMessageInfo pm in list)
            {
                Message m = new Message();
                m.MessageId      = pm.Pmid;
                m.From           = pm.Msgfrom;
                m.FromId         = pm.Msgfromid;
                m.MessageContent = pm.Message;
                m.PostDateTime   = pm.Postdatetime;
                m.Subject        = pm.Subject;

                newList.Add(m);
            }

            MessageGetResponse mgr = new MessageGetResponse();

            mgr.Count    = PrivateMessages.GetPrivateMessageCount(uid, 0, 1);
            mgr.List     = true;
            mgr.Messages = newList.ToArray();

            result = commandParam.Format == FormatType.JSON ?
                     JavaScriptConvert.SerializeObject(mgr) : Util.AddMessageCDATA(SerializationHelper.Serialize(mgr));

            return(true);
        }
コード例 #12
0
ファイル: usercpinbox.aspx.cs プロジェクト: object8421/ichari
        /// <summary>
        /// 加载用户当前请求页数的短消息列表并装入DataTable中
        /// </summary>
        private void BindItems()
        {
            //得到当前用户请求的页数
            pageid = DNTRequest.GetInt("page", 1);
            //获取主题总数
            pmcount = PrivateMessages.GetPrivateMessageCount(userid, 0);
            //获取总页数
            pagecount = pmcount % 16 == 0 ? pmcount / 16 : pmcount / 16 + 1;
            if (pagecount == 0)
            {
                pagecount = 1;
            }
            //修正请求页数中可能的错误
            if (pageid < 1)
            {
                pageid = 1;
            }
            if (pageid > pagecount)
            {
                pageid = pagecount;
            }

            usedmsgcount = PrivateMessages.GetPrivateMessageCount(userid, -1);
            maxmsg       = usergroupinfo.Maxpmnum;

            if (maxmsg <= 0)
            {
                usedmsgbarwidth   = 0;
                unusedmsgbarwidth = 0;
            }
            else
            {
                usedmsgbarwidth   = usedmsgcount * 100 / maxmsg;
                unusedmsgbarwidth = 100 - usedmsgbarwidth;
            }

//				//用户是不是有新的短信息,如果没有则设置用户的短信息状态为没有状态(状态为 0 )
//				pmlist = PrivateMessages.GetPrivateMessageList(userid, 0, 1, 1, "[new]=1");
//				if (pmlist!=null)
//				{
//					if (pmlist.Rows.Count<=0)
//					{
//						Users.SetUserNewPMCount(userid,0);
//					}
//				}
//				else
//				{
//					Users.SetUserNewPMCount(userid,0);
//				}

            pmlist      = PrivateMessages.GetPrivateMessageCollection(userid, 0, 16, pageid, 2);
            pagenumbers = Utils.GetPageNumbers(pageid, pagecount, "usercpinbox.aspx", 8);
        }
コード例 #13
0
        protected override void ShowPage()
        {
            pagetitle = "公共消息";

            if (!IsLogin())
            {
                return;
            }

            BindItems(announcepmcount);
            announcepmlist = PrivateMessages.GetAnnouncePrivateMessageCollection(16, pageid);
            newnoticecount = Notices.GetNewNoticeCountByUid(userid);
        }
コード例 #14
0
ファイル: UserCpPage.cs プロジェクト: xslonglianxia/DiscuzNT
 /// <summary>
 /// 绑定短消息
 /// </summary>
 /// <param name="folder">文件箱,所属文件夹(0:收件箱,1:发件箱,2:草稿箱),-1为获取全部短消息条数</param>
 protected void BindPrivateMessage(int folder)
 {
     //获取主题总数
     pmcount      = PrivateMessages.GetPrivateMessageCount(userid, folder);
     usedmsgcount = PrivateMessages.GetPrivateMessageCount(userid, folder);
     maxmsg       = usergroupinfo.Maxpmnum;
     if (maxmsg > 0)
     {
         usedmsgbarwidth   = usedmsgcount * 100 / maxmsg;
         unusedmsgbarwidth = 100 - usedmsgbarwidth;
     }
     BindItems(pmcount);
 }
コード例 #15
0
ファイル: usercpinbox.aspx.cs プロジェクト: object8421/ichari
        protected override void ShowPage()
        {
            pagetitle = "短消息收件箱";

            if (userid == -1)
            {
                AddErrLine("你尚未登录");
                return;
            }
            user = Discuz.Forum.Users.GetUserInfo(userid);

            if (DNTRequest.IsPost())
            {
                if (ForumUtils.IsCrossSitePost())
                {
                    AddErrLine("您的请求来路不正确,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。");
                    return;
                }
                if (Utils.StrIsNullOrEmpty(DNTRequest.GetFormString("pmitemid")))
                {
                    AddErrLine("您未选中任何短消息,当前操作失败!");
                    return;
                }

                if (!Utils.IsNumericList(DNTRequest.GetFormString("pmitemid")))
                {
                    AddErrLine("参数信息错误!");
                    return;
                }

                string[] pmitemid = Utils.SplitString(DNTRequest.GetFormString("pmitemid"), ",");

                int retval = PrivateMessages.DeletePrivateMessage(userid, pmitemid);

                if (retval == -1)
                {
                    AddErrLine("参数无效");
                    return;
                }

                SetUrl("usercpinbox.aspx");
                SetMetaRefresh();
                SetShowBackLink(true);
                AddMsgLine("删除完毕");
            }
            else
            {
                BindItems();
            }
        }
コード例 #16
0
ファイル: DbModels.cs プロジェクト: po-omena/NR-CORE
        public Task AddPrivateMessage(int senderId, string subject, string message)
        {
            var messages = PrivateMessages ?? new PrivateMessages(AccountId, new List <PrivateMessages.PrivateMessage>());

            if (messages.NeedsFix())
            {
                messages.FixFromOldBuild(this);
            }
            var msg = new PrivateMessages.PrivateMessage(senderId, AccountId, subject, message, DateTime.UtcNow.ToUnixTimestamp());

            messages.Messages.Add(msg);
            PrivateMessages = messages;
            return(FlushAsync());
        }
コード例 #17
0
        protected override void ShowPage()
        {
            pagetitle = "短消息收件箱";

            if (!IsLogin())
            {
                return;
            }

            if (DNTRequest.IsPost())
            {
                if (ForumUtils.IsCrossSitePost())
                {
                    AddErrLine("您的请求来路不正确,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。");
                    return;
                }
                if (Utils.StrIsNullOrEmpty(DNTRequest.GetFormString("pmitemid")))
                {
                    AddErrLine("您未选中任何短消息,当前操作失败!");
                    return;
                }
                if (!Utils.IsNumericList(DNTRequest.GetFormString("pmitemid")))
                {
                    AddErrLine("参数信息错误!");
                    return;
                }

                string[] pmitemid = Utils.SplitString(DNTRequest.GetFormString("pmitemid"), ",");

                if (!Utils.IsNumericArray(pmitemid) || PrivateMessages.DeletePrivateMessage(userid, pmitemid) == -1)
                {
                    AddErrLine("参数无效");
                    return;
                }
                Users.UpdateUserNewPMCount(userid, olid);


                SetUrl("usercpinbox.aspx");
                SetMetaRefresh();
                SetShowBackLink(true);
                AddMsgLine("删除完毕");
            }
            else
            {
                BindPrivateMessage(0);
            }

            newnoticecount = Notices.GetNewNoticeCountByUid(userid);
        }
コード例 #18
0
 public void channelsCallback(List <Message> messages, bool is_deleted = false)
 {
     if (messages != null)
     {
         foreach (Message message in messages)
         {
             if (message == null)
             {
                 continue;
             }
             if (message.machine_only || string.IsNullOrEmpty(message.text))
             {
                 continue;
             }
             if (message.channel_id != "net.app.core.pm")
             {
                 // PM for now
                 continue;
             }
             if (!message.is_deleted)
             {
                 ApnItem item = new ApnItem(message, this);
                 item.receivingAccount = this;
                 PrivateMessages.Add(item);
             }
             else
             {
                 IEnumerable <ApnItem> existing_items = PrivateMessages.Where(item => item.Id.ToString() == message.id);
                 if (existing_items != null)
                 {
                     if (existing_items.Count() > 0)
                     {
                         List <ApnItem> cache = new List <ApnItem>();
                         foreach (ApnItem item in existing_items)
                         {
                             cache.Add(item);
                         }
                         foreach (ApnItem item in cache)
                         {
                             PrivateMessages.Remove(item);
                         }
                         cache = null;
                     }
                 }
             }
         }
     }
 }
コード例 #19
0
        private void SaveSearchInfo_Click(object sender, EventArgs e)
        {
            #region  指定条件进行短消息消除

            if (this.CheckCookie())
            {
                string sqlstring = PrivateMessages.GetDeletePrivateMessagesCondition(isnew.Checked, postdatetime.Text, msgfromlist.Text,
                                                                                     lowerupper.Checked, subject.Text, message.Text, isupdateusernewpm.Checked);

                AdminVistLogs.InsertLog(this.userid, this.username, this.usergroupid, this.grouptitle, this.ip, "批量清除短消息", "删除条件是:" + sqlstring);

                base.RegisterStartupScript("PAGE", "window.location.href='forum_searchsm.aspx';");
            }

            #endregion
        }
コード例 #20
0
ファイル: UnitOfWork.cs プロジェクト: yuralazar/GreenChat
 public virtual void Dispose(bool disposing)
 {
     if (this._disposed)
     {
         return;
     }
     if (disposing)
     {
         Context.Dispose();
         UserManager.Dispose();
         ChatMessages.Dispose();
         ChatRooms.Dispose();
         ChatRoomUsers.Dispose();
         Friends.Dispose();
         PrivateMessages.Dispose();
     }
     this._disposed = true;
 }
コード例 #21
0
        /// <summary>
        /// 创建短消息
        /// </summary>
        /// <param name="folder">所属文件夹(0:收件箱,1:发件箱,2:草稿箱)</param>
        /// <param name="saveToSendBox">是否保存到发件箱</param>
        /// <param name="url">跳转链接</param>
        /// <param name="msg">提示信息</param>
        private void CreatePM(int folder, int saveToSendBox, string url, string msg)
        {
            if (folder != 2)
            {
                UserInfo touser = Users.GetUserInfo(msgtoid);
                // 检查接收人的短消息是否已超过接收人用户组的上限,管理组不受接收人短消息上限限制
                int radminId = UserGroups.GetUserGroupInfo(usergroupid).Radminid;
                if (!(radminId > 0 && radminId <= 3) && PrivateMessages.GetPrivateMessageCount(msgtoid, -1) >= UserGroups.GetUserGroupInfo(touser.Groupid).Maxpmnum)
                {
                    AddErrLine("抱歉,接收人的短消息已达到上限,无法接收");
                    return;
                }
                if (!Utils.InArray(Convert.ToInt32(touser.Newsletter).ToString(), "2,3,6,7"))
                {
                    AddErrLine("抱歉,接收人拒绝接收短消息");
                    return;
                }
            }

            // 检查发送人的短消息是否已超过发送人用户组的上限
            if (url != "usercpinbox.aspx" && PrivateMessages.GetPrivateMessageCount(userid, -1) >= usergroupinfo.Maxpmnum)
            {
                AddErrLine("抱歉,您的短消息已达到上限,无法保存到发件箱");
                return;
            }
            pm.Folder = folder;
            if (CreditsFacade.SendPM(userid) == -1)
            {
                AddErrLine("您的积分不足, 不能发送短消息");
                return;
            }
            pm.Pmid = PrivateMessages.CreatePrivateMessage(pm, saveToSendBox);
            //发送邮件通知
            if (DNTRequest.GetString("emailnotify") == "on")
            {
                SendNotifyEmail(Users.GetUserInfo(msgtoid).Email.Trim(), pm);
            }

            SetUrl(url);
            SetMetaRefresh();
            SetShowBackLink(true);
            MsgForward("usercppostpm_succeed");
            AddMsgLine(msg);
        }
コード例 #22
0
        private void DelRec_Click(object sender, EventArgs e)
        {
            #region  除公共消息

            if (this.CheckCookie())
            {
                if (DNTRequest.GetString("id") != "")
                {
                    PrivateMessages.DeletePrivateMessage(0, Utils.SplitString(DNTRequest.GetString("id"), ","));
                    DNTCache.GetCacheService().RemoveObject("/Forum/AnnouncePrivateMessageCount");
                    Response.Redirect("global_announceprivatemessage.aspx");
                }
                else
                {
                    base.RegisterStartupScript("", GetMessageScript("您未选中任何选项"));
                }
            }

            #endregion
        }
コード例 #23
0
        /// <summary>
        /// 加载用户当前请求页数的短消息列表并装入DataTable中
        /// </summary>
        private void BindItems()
        {
            //得到当前用户请求的页数
            pageid = DNTRequest.GetInt("page", 1);
            //获取主题总数
            pmcount = PrivateMessages.GetPrivateMessageCount(userid, 1);
            //获取总页数
            pagecount = pmcount % 16 == 0 ? pmcount / 16 : pmcount / 16 + 1;
            if (pagecount == 0)
            {
                pagecount = 1;
            }
            //修正请求页数中可能的错误
            if (pageid < 1)
            {
                pageid = 1;
            }
            if (pageid > pagecount)
            {
                pageid = pagecount;
            }

            //取得用户所有短消息总数,第二个参数就传-1
            usedmsgcount = PrivateMessages.GetPrivateMessageCount(userid, -1);
            maxmsg       = usergroupinfo.Maxpmnum;

            if (maxmsg <= 0)
            {
                usedmsgbarwidth   = 0;
                unusedmsgbarwidth = 0;
            }
            else
            {
                usedmsgbarwidth   = usedmsgcount * 100 / maxmsg;
                unusedmsgbarwidth = 100 - usedmsgbarwidth;
            }

            pmlist      = PrivateMessages.GetPrivateMessageCollection(userid, 1, 16, pageid, 2);
            pagenumbers = Utils.GetPageNumbers(pageid, pagecount, "usercpsentbox.aspx", 8);
        }
コード例 #24
0
ファイル: FeedRecord.cs プロジェクト: arbium/democratia2
        public void PackMailRecord()
        {
            var user = DataService.PerThread.BaseUserSet.OfType <User>().SingleOrDefault(x => x.Id == _userId);

            if (user == null)
            {
                return;
            }

            var groupfeed = (from _group in user.SubscriptionGroups
                             join content in DataService.PerThread.ContentSet on _group.Id equals content.GroupId
                             where content.State == (byte)ContentState.Approved && _beginDate <= content.PublishDate && content.PublishDate < _endDate && !user.BlackList.Contains(content.Author)
                             where user.Id != content.AuthorId
                             select content).ToList();
            var userfeed = (from _user in user.SubscriptionUsers
                            join content in DataService.PerThread.ContentSet on _user.Id equals content.AuthorId
                            where content.State == (byte)ContentState.Approved && _beginDate <= content.PublishDate && content.PublishDate < _endDate
                            where user.Id != content.AuthorId
                            select content).ToList();

            var feed = groupfeed.Union(userfeed).Distinct().Where(x => x.PublishDate.HasValue).OrderBy(x => x.GroupId).ThenByDescending(c => c.PublishDate);

            _content.AddRange(feed.Select(x => new SubscriptionContent(x)));

            Groups = _content.Select(x => new GroupSchema {
                Name = x.GroupName, Url = x.GroupUrl
            }).Distinct().OrderBy(x => x.Name).ToList();

            var messages = user.InboxMessages.Where(m => !m.IsRead && !m.IsDeletedByRecipient && _beginDate <= m.Date && m.Date < _endDate).ToList();

            CommentNotices.AddRange(messages.Where(m => m.Type == (byte)MessageType.CommentNotice).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            GroupMemberNotices.AddRange(messages.Where(m => m.Type == (byte)MessageType.GroupMemberNotice).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            GroupModeratorNotices.AddRange(messages.Where(m => m.Type == (byte)MessageType.GroupModeratorNotice).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            PollNotices.AddRange(messages.Where(m => m.Type == (byte)MessageType.PollNotice).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            SurveyNotices.AddRange(messages.Where(m => m.Type == (byte)MessageType.SurveyNotice).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            ElectionNotices.AddRange(messages.Where(m => m.Type == (byte)MessageType.ElectionNotice).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            PetitionNotices.AddRange(messages.Where(m => m.Type == (byte)MessageType.PetitionNotice).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            SystemMessages.AddRange(messages.Where(m => m.Type == (byte)MessageType.SystemMessage).Select(x => new MessageUpdate(x)).OrderByDescending(x => x.Date));
            PrivateMessages.AddRange(messages.Where(m => m.Type == (byte)MessageType.PrivateMessage).Select(x => new PrivateMessageUpdate(x)).OrderByDescending(x => x.Date));
        }
コード例 #25
0
        private void AddNewRec_Click(object sender, EventArgs e)
        {
            #region 添加公共消息

            if (subject.Text == "")
            {
                base.RegisterStartupScript("", GetMessageScript("公共消息标题不能为空"));
                return;
            }
            if (message.Text == "")
            {
                base.RegisterStartupScript("", GetMessageScript("公共消息内容不能为空"));
                return;
            }

            try
            {
                PrivateMessageInfo pm = new PrivateMessageInfo();
                pm.Message      = message.Text;
                pm.Subject      = subject.Text;
                pm.Msgto        = "";
                pm.Msgtoid      = 0;
                pm.Msgfrom      = "";
                pm.Msgfromid    = 0;
                pm.New          = 1;
                pm.Postdatetime = DateTime.Now.ToString();
                PrivateMessages.CreatePrivateMessage(pm, 0);
                BindData();
                DNTCache.GetCacheService().RemoveObject("/Forum/AnnouncePrivateMessageCount");
                base.RegisterStartupScript("PAGE", "window.location.href='global_announceprivatemessage.aspx';");
                return;
            }
            catch
            {
                base.RegisterStartupScript("", GetMessageScript("无法更新数据库."));
                return;
            }

            #endregion
        }
コード例 #26
0
        /// <summary>
        /// Monitor inbox for new unread messages.
        /// </summary>
        /// <param name="messages">PrivateMessages instance</param>
        /// <param name="from">Sender's username</param>
        /// <param name="subject">Message subject</param>
        /// <param name="body">Message body</param>
        /// <param name="timeoutMs">How long to wait for the message to arrive before giving up</param>
        /// <returns>Whether the requested message was found.</returns>
        private bool MonitorForMessage(PrivateMessages messages, string from, string subject, string body, int timeoutMs = 30000)
        {
            messages.MonitorUnread();
            messages.UnreadUpdated += C_UnreadMessagesUpdated;

            DateTime start = DateTime.Now;
            bool     res   = false;

            while (!res &&
                   start.AddMilliseconds(timeoutMs) > DateTime.Now)
            {
                if (E != null)
                {
                    res = CheckMessages(E.NewMessages, from, subject, body);
                }
            }

            messages.UnreadUpdated -= C_UnreadMessagesUpdated;
            messages.MonitorUnread();

            return(res);
        }
コード例 #27
0
        void backgroundWorkerMessages_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e != null)
            {
                switch (e.ProgressPercentage)
                {
                case 20:
                    // Channel list
                    KnownChannels = e.UserState as List <Channel>;
                    if (KnownChannels != null)
                    {
                        foreach (Channel channel in KnownChannels)
                        {
                            if (KnownChannelIds.Contains(channel.id))
                            {
                                KnownChannelIds.Add(channel.id);
                            }
                        }
                    }
                    break;

                case 50:
                    ApnItem item = e.UserState as ApnItem;
                    PrivateMessages.Add(item);
                    // || true muss raus
                    if (showNotifications)
                    {
                        AppController.Current.sendNotification("App.net " + username + " private messages", item.AuthorName, item.Text, item.Avatar, item);
                    }

                    break;

                case 99:
                    streamMarkerPrivateMessagesUpdateComplete = true;
                    InitialUpdateForMessages = true;
                    break;
                }
            }
        }
コード例 #28
0
        protected override void ShowPage()
        {
            pagetitle = "短消息发件箱";

            if (userid == -1)
            {
                AddErrLine("你尚未登录");
                return;
            }
            user = Discuz.Forum.Users.GetUserInfo(userid);

            if (DNTRequest.IsPost())
            {
                if (ForumUtils.IsCrossSitePost())
                {
                    AddErrLine("您的请求来路不正确,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。");
                    return;
                }

                string[] pmitemid = Utils.SplitString(DNTRequest.GetFormString("pmitemid"), ",");

                int retval = PrivateMessages.DeletePrivateMessage(userid, pmitemid);

                if (retval == -1)
                {
                    AddErrLine("参数无效<br />");
                    return;
                }

                SetShowBackLink(false);
                AddMsgLine("删除完毕");
            }
            else
            {
                BindItems();
            }
        }
コード例 #29
0
        /// <summary>
        /// 发送通知
        /// </summary>
        /// <returns></returns>
        public string Send()
        {
            if (Signature != GetParam("sig").ToString())
            {
                ErrorCode = (int)ErrorType.API_EC_SIGNATURE;
                return("");
            }

            //如果是桌面程序则需要验证用户身份
            if (this.App.ApplicationType == (int)ApplicationType.DESKTOP)
            {
                if (Uid < 1)
                {
                    ErrorCode = (int)ErrorType.API_EC_SESSIONKEY;
                    return("");
                }
            }

            if (CallId <= LastCallId)
            {
                ErrorCode = (int)ErrorType.API_EC_CALLID;
                return("");
            }

            if (!CheckRequiredParams("subject,message,to_ids"))
            {
                ErrorCode = (int)ErrorType.API_EC_PARAM;
                return("");
            }
            string ids = GetParam("to_ids").ToString();

            if (!CheckRequiredParams("to_ids") || !Utils.IsNumericArray(ids.Split(',')))
            {
                ErrorCode = (int)ErrorType.API_EC_PARAM;
                return("");
            }

            if ((!CheckRequiredParams("from_id") || !Utils.IsNumeric(GetParam("from_id"))) && Uid < 1)
            {
                ErrorCode = (int)ErrorType.API_EC_PARAM;
                return("");
            }
            int fromId = TypeConverter.ObjectToInt(GetParam("from_id"), Uid);

            string message = UBB.ParseUrl(Utils.EncodeHtml(GetParam("message").ToString()));

            string[] to_ids = ids.Split(',');

            string successfulIds = string.Empty;

            foreach (string id in to_ids)
            {
                if (TypeConverter.StrToInt(id) < 1)
                {
                    continue;
                }
                PrivateMessageInfo pm = new PrivateMessageInfo();
                pm.Folder       = 0;
                pm.Message      = message;
                pm.Msgfrom      = Discuz.Forum.Users.GetShortUserInfo(fromId).Username;
                pm.Msgfromid    = fromId;
                pm.Msgto        = "";//可能需要查询具体的收件人姓名
                pm.Msgtoid      = TypeConverter.StrToInt(id);
                pm.New          = 1;
                pm.Postdatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                pm.Subject      = GetParam("subject").ToString();

                successfulIds += (PrivateMessages.CreatePrivateMessage(pm, 0) > 0) ? (id + ",") : "";
            }
            successfulIds = successfulIds.Length > 0 ? successfulIds.Remove(successfulIds.Length - 1) : successfulIds;

            if (Format == FormatType.JSON)
            {
                return(string.Format("\"{0}\"", successfulIds));
            }

            MessageSendResponse nsr = new MessageSendResponse();

            nsr.Result = successfulIds;
            return(SerializationHelper.Serialize(nsr));
        }
コード例 #30
0
        /// <summary>
        /// 获取短消息列表
        /// </summary>
        /// <returns></returns>
        public string Get()
        {
            if (Signature != GetParam("sig").ToString())
            {
                ErrorCode = (int)ErrorType.API_EC_SIGNATURE;
                return("");
            }

            //如果是桌面程序则需要验证用户身份
            if (this.App.ApplicationType == (int)ApplicationType.DESKTOP && Uid < 1)
            {
                //if (Uid < 1)
                //{
                ErrorCode = (int)ErrorType.API_EC_SESSIONKEY;
                return("");
                //}
            }

            if (CallId <= LastCallId)
            {
                ErrorCode = (int)ErrorType.API_EC_CALLID;
                return("");
            }

            if (!CheckRequiredParams("uid,page_size,page_index"))
            {
                ErrorCode = (int)ErrorType.API_EC_PARAM;
                return("");
            }
            int uid       = GetIntParam("uid");
            int pageSize  = GetIntParam("page_size", 10);
            int pageIndex = GetIntParam("page_index", 1);

            List <PrivateMessageInfo> list = PrivateMessages.GetPrivateMessageCollection(uid, 0, pageSize, pageIndex, 1);

            List <Message> newList = new List <Message>();

            foreach (PrivateMessageInfo pm in list)
            {
                Message m = new Message();
                m.MessageId      = pm.Pmid;
                m.From           = pm.Msgfrom;
                m.FromId         = pm.Msgfromid;
                m.MessageContent = pm.Message;
                m.PostDateTime   = pm.Postdatetime;
                m.Subject        = pm.Subject;

                newList.Add(m);
            }

            MessageGetResponse mgr = new MessageGetResponse();

            mgr.Count    = PrivateMessages.GetPrivateMessageCount(uid, 0, 1);
            mgr.List     = true;
            mgr.Messages = newList.ToArray();

            if (Format == FormatType.JSON)
            {
                return(JsonConvert.SerializeObject(mgr));
            }

            return(Util.AddMessageCDATA(SerializationHelper.Serialize(mgr)));
        }