Ejemplo n.º 1
0
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void Page_Load([NotNull] object sender, [NotNull] EventArgs e)
        {
            // check if this feature is disabled
            if (!this.Get <YafBoardSettings>().AllowPrivateMessages)
            {
                YafBuildLink.RedirectInfoPage(InfoMessage.Disabled);
            }

            if (this.IsPostBack)
            {
                return;
            }

            if (this.Request.QueryString.GetFirstOrDefault("v").IsSet())
            {
                this.View = PmViewConverter.FromQueryString(this.Request.QueryString.GetFirstOrDefault("v"));

                this.hidLastTab.Value = $"View{(int)this.View}";
            }

            this.PageLinks.AddRoot();
            this.PageLinks.AddLink(
                this.Get <YafBoardSettings>().EnableDisplayName
                    ? this.PageContext.CurrentUserData.DisplayName
                    : this.PageContext.PageUserName,
                YafBuildLink.GetLink(ForumPages.cp_profile));
            this.PageLinks.AddLink(this.GetText("TITLE"));

            this.NewPM.NavigateUrl  = YafBuildLink.GetLinkNotEscaped(ForumPages.pmessage);
            this.NewPM2.NavigateUrl = this.NewPM.NavigateUrl;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get Messages by To User Id
        /// </summary>
        /// <param name="repository">
        /// The repository.
        /// </param>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <param name="view">
        /// The view.
        /// </param>
        /// <returns>
        /// The <see cref="List"/>.
        /// </returns>
        public static List <UserPMessage> List(
            this IRepository <UserPMessage> repository,
            [NotNull] int userId,
            [NotNull] PmView view)
        {
            CodeContracts.VerifyNotNull(repository);

            return(view == PmView.Archive
                ? repository.Get(p => p.UserID == userId && p.IsRead == false && p.IsArchived == true)
                : repository.Get(
                       p => p.UserID == userId && p.IsRead == false && p.IsDeleted == false && p.IsArchived == false));
        }
Ejemplo n.º 3
0
        public static string ToQueryStringParam(PmView view)
        {
            switch (view)
            {
            case PmView.Outbox:
                return("out");

            case PmView.Inbox:
                return("in");

            case PmView.Archive:
                return("arch");

            default:
                return(null);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void Page_Load([NotNull] object sender, [NotNull] EventArgs e)
        {
            // check if this feature is disabled
            if (!this.Get <BoardSettings>().AllowPrivateMessages)
            {
                BuildLink.RedirectInfoPage(InfoMessage.Disabled);
            }

            if (this.IsPostBack)
            {
                return;
            }

            if (this.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("v").IsSet())
            {
                this.View = PmViewConverter.FromQueryString(this.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("v"));

                this.hidLastTab.Value = $"View{(int)this.View}";
            }

            this.NewPM.NavigateUrl  = BuildLink.GetLinkNotEscaped(ForumPages.PostPrivateMessage);
            this.NewPM2.NavigateUrl = this.NewPM.NavigateUrl;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void Page_Load([NotNull] object sender, [NotNull] EventArgs e)
        {
            // check if this feature is disabled
            if (!this.Get <BoardSettings>().AllowPrivateMessages)
            {
                BuildLink.RedirectInfoPage(InfoMessage.Disabled);
            }

            if (this.IsPostBack)
            {
                return;
            }

            if (this.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("v").IsSet())
            {
                this.View = PmViewConverter.FromQueryString(this.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("v"));

                this.hidLastTab.Value = $"View{(int)this.View}";
            }

            this.NewPM.NavigateUrl  = BuildLink.GetLink(ForumPages.PostPrivateMessage);
            this.NewPM2.NavigateUrl = this.NewPM.NavigateUrl;

            // Renew PM Statistics
            var dt = this.GetRepository <PMessage>().UserMessageCount(this.PageContext.PageUserID);

            if (dt.HasRows())
            {
                this.InfoInbox.Text = this.InfoArchive.Text = this.InfoOutbox.Text = this.GetPMessageText(
                    "PMLIMIT_ALL",
                    dt.Rows[0]["NumberTotal"],
                    dt.Rows[0]["NumberIn"],
                    dt.Rows[0]["NumberOut"],
                    dt.Rows[0]["NumberArchived"],
                    dt.Rows[0]["NumberAllowed"]);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Get Private Messages by user
        /// </summary>
        /// <param name="repository">
        /// The repository.
        /// </param>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <param name="view">
        /// The view.
        /// </param>
        /// <param name="sortField">
        /// The sort field.
        /// </param>
        /// <param name="sortAscending">
        /// The sort ascending.
        /// </param>
        /// <returns>
        /// The <see cref="List"/>.
        /// </returns>
        public static List <dynamic> List(
            this IRepository <PMessage> repository,
            [NotNull] int userId,
            [NotNull] PmView view,
            [NotNull] string sortField,
            [NotNull] bool sortAscending)
        {
            CodeContracts.VerifyNotNull(repository);

            return(repository.DbAccess.Execute(
                       db =>
            {
                var expression = OrmLiteConfig.DialectProvider.SqlExpression <PMessage>();

                expression.Join <UserPMessage>((a, b) => a.ID == b.PMessageID)
                .Join <UserPMessage, User>(
                    (b, c) => b.UserID == Sql.TableAlias(c.ID, "c"),
                    db.Connection.TableAlias("c")).Join <User>(
                    (a, d) => a.FromUserID == Sql.TableAlias(d.ID, "d"),
                    db.Connection.TableAlias("d"));

                switch (view)
                {
                case PmView.Inbox:
                    expression.Where <UserPMessage>(
                        b => b.UserID == userId && b.IsArchived == false && b.IsDeleted == false);
                    break;

                case PmView.Outbox:
                    expression.Where <PMessage, UserPMessage>(
                        (a, b) => a.FromUserID == userId && b.IsArchived == false && b.IsInOutbox == true);
                    break;

                case PmView.Archive:
                    expression.Where <UserPMessage>(b => b.UserID == userId && b.IsArchived == true);
                    break;
                }

                switch (sortField)
                {
                case "Subject":
                    {
                        if (sortAscending)
                        {
                            expression.OrderBy <PMessage>(a => a.Subject);
                        }
                        else
                        {
                            expression.OrderByDescending <PMessage>(a => a.Subject);
                        }
                    }

                    break;

                case "Created":
                    {
                        if (sortAscending)
                        {
                            expression.OrderBy <PMessage>(a => a.Created);
                        }
                        else
                        {
                            expression.OrderByDescending <PMessage>(a => a.Created);
                        }
                    }

                    break;

                case "ToUser":
                    {
                        if (sortAscending)
                        {
                            expression.OrderBy <UserPMessage>(a => a.UserID);
                        }
                        else
                        {
                            expression.OrderByDescending <UserPMessage>(a => a.UserID);
                        }
                    }

                    break;

                case "FromUser":
                    {
                        if (sortAscending)
                        {
                            expression.OrderBy <PMessage>(a => a.FromUserID);
                        }
                        else
                        {
                            expression.OrderByDescending <PMessage>(a => a.FromUserID);
                        }
                    }

                    break;
                }

                expression.Select <PMessage, UserPMessage, User, User>(
                    (a, b, c, d) => new
                {
                    a.ReplyTo,
                    PMessageID = a.ID,
                    UserPMessageID = b.ID,
                    a.FromUserID,
                    FromUser = Sql.TableAlias("d.Name", "d"),
                    FromUserDisplayName = Sql.TableAlias("d.DisplayName", "d"),
                    FromStyle = Sql.TableAlias("d.UserStyle", "d"),
                    FromSuspended = Sql.TableAlias("d.Suspended", "d"),
                    ToUserID = b.UserID,
                    ToUser = Sql.TableAlias("c.Name", "c"),
                    ToUserDisplayName = Sql.TableAlias("c.DisplayName", "c"),
                    ToStyle = Sql.TableAlias("c.UserStyle", "c"),
                    ToSuspended = Sql.TableAlias("c.Suspended", "c"),
                    a.Created,
                    a.Subject,
                    a.Body,
                    a.Flags,
                    UserPMFlags = b.Flags,
                    b.IsRead,
                    b.IsReply,
                    b.IsInOutbox,
                    b.IsArchived,
                    b.IsDeleted
                });

                return db.Connection.Select <object>(expression);
            }));
        }