using System; using System.Collections.Generic; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.MessageBoard; using CMS.PortalEngine; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; using CMS.WebAnalytics; using TreeNode = CMS.DocumentEngine.TreeNode; using CMS.ExtendedControls; public partial class CMSModules_MessageBoards_Controls_NewSubscription : CMSUserControl { #region "Private variables" private BoardProperties mBoardProperties = null; private int mBoardID = 0; #endregion #region "Public properties" /// /// ForumId. /// public int BoardID { get { return mBoardID; } set { mBoardID = value; } } /// /// Properties passed from the upper control. /// public BoardProperties BoardProperties { get { return mBoardProperties; } set { mBoardProperties = value; } } /// /// Placeholder for messages. /// 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_-]+)+)*$"; } /// /// Pre-fill user e-mail. /// protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (!RequestHelper.IsPostBack()) { if (txtEmail.Text.Trim() == "" && (CMSContext.CurrentUser.Email != null) && (CMSContext.CurrentUser.Email != "")) { txtEmail.Text = CMSContext.CurrentUser.Email; } } } /// /// OK click handler. /// protected void btnOK_Click(object sender, EventArgs e) { // Check banned IP if (!BannedIPInfoProvider.IsAllowed(CMSContext.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='" + SqlHelperClass.GetSafeQueryString(email, false) + "')", null); if (DataHelper.DataSourceIsEmpty(ds)) { BoardSubscriptionInfo bsi = new BoardSubscriptionInfo(); bsi.SubscriptionBoardID = BoardID; bsi.SubscriptionEmail = email; if ((CMSContext.CurrentUser != null) && !CMSContext.CurrentUser.IsPublic()) { bsi.SubscriptionUserID = CMSContext.CurrentUser.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(CMSContext.CurrentSiteName); if (optInInterval > 0) { confirmation += "
" + string.Format(GetString("general.subscription_timeintervalwarning"), optInInterval); } ShowConfirmation(confirmation); } } else { result = GetString("board.subscription.emailexists"); } } } if (result != String.Empty) { ShowError(result); } } /// /// Log activity (subscribing) /// private void LogActivity(BoardSubscriptionInfo bsi, BoardInfo bi) { Activity activity = new ActivitySubscriptionMessageBoard(bi, bsi, CMSContext.CurrentDocument, CMSContext.ActivityEnvironmentVariables); activity.Log(); } #endregion }