HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/CMS/CMSModules/MessageBoards/Controls/NewSubscription.ascx.cs
using System;
using System.Data;

using CMS.DocumentEngine;
using CMS.Helpers;
using CMS.MessageBoards;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.UIControls;
using CMS.WebAnalytics;
using CMS.ExtendedControls;
using CMS.Protection;
using CMS.DataEngine;

public partial class CMSModules_MessageBoards_Controls_NewSubscription : CMSUserControl
{
    #region "Private variables"

    private BoardProperties mBoardProperties = null;
    private int mBoardID = 0;

    #endregion


    #region "Public properties"

    /// <summary>
    /// ForumId.
    /// </summary>
    public int BoardID
    {
        get
        {
            return mBoardID;
        }
        set
        {
            mBoardID = value;
        }
    }


    /// <summary>
    /// Properties passed from the upper control.
    /// </summary>
    public BoardProperties BoardProperties
    {
        get
        {
            return mBoardProperties;
        }
        set
        {
            mBoardProperties = value;
        }
    }


    /// <summary>
    /// Placeholder for messages.
    /// </summary>
    public override MessagesPlaceHolder MessagesPlaceHolder
    {
        get
        {
            return plcMessages;
        }
    }

    #endregion


    #region "Page events"

    protected void Page_Load(object sender, EventArgs e)
    {
        string valGroup = UniqueID;

        lblEmail.ResourceString = "board.subscription.email";
        btnOk.ResourceString = "board.subscription.subscribe";
        btnOk.ValidationGroup = valGroup;

        rfvEmailRequired.ErrorMessage = GetString("board.subscription.noemail");
        rfvEmailRequired.ValidationGroup = valGroup;

        revEmailValid.ValidationGroup = valGroup;
        revEmailValid.ErrorMessage = GetString("board.messageedit.revemail");
        revEmailValid.ValidationExpression = @"^([\w0-9_\-\+]+(\.[\w0-9_\-\+]+)*@[\w0-9_-]+(\.[\w0-9_-]+)+)*$";
    }


    /// <summary>
    /// Pre-fill user e-mail.
    /// </summary>
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        if (!RequestHelper.IsPostBack())
        {
            if (txtEmail.Text.Trim() == "" && (MembershipContext.AuthenticatedUser.Email != null) && (MembershipContext.AuthenticatedUser.Email != ""))
            {
                txtEmail.Text = MembershipContext.AuthenticatedUser.Email;
            }
        }
    }


    /// <summary>
    /// OK click handler.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check banned IP
        if (!BannedIPInfoProvider.IsAllowed(SiteContext.CurrentSiteName, BanControlEnum.AllNonComplete))
        {
            ShowError(GetString("General.BannedIP"));
            return;
        }

        // Check input fields
        string email = txtEmail.Text.Trim();
        string result = new Validator().NotEmpty(email, rfvEmailRequired.ErrorMessage)
            .IsEmail(email, GetString("general.correctemailformat")).Result;

        // Try to subscribe new subscriber
        if (result == "")
        {
            // Try to create a new board
            BoardInfo boardInfo = null;
            if (BoardID == 0)
            {
                // Create new message board according to webpart properties
                boardInfo = new BoardInfo(BoardProperties);
                BoardInfoProvider.SetBoardInfo(boardInfo);

                // Update information on current message board
                BoardID = boardInfo.BoardID;

                // Set board-role relationship                
                BoardRoleInfoProvider.SetBoardRoles(BoardID, BoardProperties.BoardRoles);

                // Set moderators
                BoardModeratorInfoProvider.SetBoardModerators(BoardID, BoardProperties.BoardModerators);
            }

            if (BoardID > 0)
            {
                // Check for duplicit e-mails
                DataSet ds = BoardSubscriptionInfoProvider.GetSubscriptions("(SubscriptionApproved <> 0) AND (SubscriptionBoardID=" + BoardID +
                                                                            ") AND (SubscriptionEmail='" + SqlHelper.GetSafeQueryString(email, false) + "')", null);
                if (DataHelper.DataSourceIsEmpty(ds))
                {
                    BoardSubscriptionInfo bsi = new BoardSubscriptionInfo();
                    bsi.SubscriptionBoardID = BoardID;
                    bsi.SubscriptionEmail = email;
                    if ((MembershipContext.AuthenticatedUser != null) && !MembershipContext.AuthenticatedUser.IsPublic())
                    {
                        bsi.SubscriptionUserID = MembershipContext.AuthenticatedUser.UserID;
                    }
                    BoardSubscriptionInfoProvider.Subscribe(bsi, DateTime.Now, true, true);

                    // Clear form
                    txtEmail.Text = "";
                    if (boardInfo == null)
                    {
                        boardInfo = BoardInfoProvider.GetBoardInfo(BoardID);
                    }

                    // If subscribed, log activity
                    if (bsi.SubscriptionApproved)
                    {
                        ShowConfirmation(GetString("board.subscription.beensubscribed"));
                        LogActivity(bsi, boardInfo);
                    }
                    else
                    {
                        string confirmation = GetString("general.subscribed.doubleoptin");
                        int optInInterval = BoardInfoProvider.DoubleOptInInterval(SiteContext.CurrentSiteName);
                        if (optInInterval > 0)
                        {
                            confirmation += "<br />" + string.Format(GetString("general.subscription_timeintervalwarning"), optInInterval);
                        }
                        ShowConfirmation(confirmation);
                    }
                }
                else
                {
                    result = GetString("board.subscription.emailexists");
                }
            }
        }

        if (result != String.Empty)
        {
            ShowError(result);
        }
    }


    /// <summary>
    /// Log activity (subscribing)
    /// </summary>
    private void LogActivity(BoardSubscriptionInfo bsi, BoardInfo bi)
    {
        Activity activity = new ActivitySubscriptionMessageBoard(bi, bsi, DocumentContext.CurrentDocument, AnalyticsContext.ActivityEnvironmentVariables);
        activity.Log();
    }

    #endregion
}