/// <summary> /// Logs "subscription" activity. /// </summary> /// <param name="bci">Forum subscription</param> private void LogSubscriptionActivity(ForumSubscriptionInfo fsi, ForumInfo fi) { string siteName = CMSContext.CurrentSiteName; if ((CMSContext.ViewMode != ViewModeEnum.LiveSite) || (fsi == null) || (fi == null) || !fi.ForumLogActivity || !ActivitySettingsHelper.ActivitiesEnabledForThisUser(CMSContext.CurrentUser) || !ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(siteName) || !ActivitySettingsHelper.ForumPostSubscriptionEnabled(siteName)) { return; } var data = new ActivityData() { ContactID = ModuleCommands.OnlineMarketingGetCurrentContactID(), SiteID = CMSContext.CurrentSiteID, Type = PredefinedActivityType.SUBSCRIPTION_FORUM_POST, TitleData = fi.ForumName, ItemID = fi.ForumID, ItemDetailID = fsi.SubscriptionID, URL = URLHelper.CurrentRelativePath, NodeID = CMSContext.CurrentDocument.NodeID, Culture = CMSContext.CurrentDocument.DocumentCulture, Campaign = CMSContext.Campaign }; ActivityLogProvider.LogActivity(data); }
protected override void OnPreRender(EventArgs e) { if (!displayControlPerformed) { plcList.Visible = listVisible; subscriptionList.Visible = listVisible; if (listVisible) { subscriptionList.ReloadData(); } } // Ensure breadcrumbs items int subscriptionId = ValidationHelper.GetInteger(ViewState["SubscriptionID"], 0); if ((subscriptionId > 0) && String.IsNullOrEmpty(ucBreadcrumbs.Items[1].Text)) { ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); if (fsi != null) { SetBreadcrumbsItem(fsi.SubscriptionEmail); } } base.OnPreRender(e); }
/// <summary> /// Initializes the control properties. /// </summary> protected void SetupControl() { if (StopProcessing) { // Do nothing } else { Guid unsubscribeGuid = QueryHelper.GetGuid("unsubscribe", Guid.Empty); if (unsubscribeGuid != Guid.Empty) { ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(unsubscribeGuid); if (fsi != null) { ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(fsi.SubscriptionID); lblInfoText.Visible = true; lblInfoText.Text = UnsubscriptionText; } else { lblInfoText.Visible = true; lblInfoText.Text = UnsuccessfulUnsubscriptionText; lblInfoText.CssClass = "ErrorLabel"; return; } } else { Visible = false; } } }
protected void Page_Load(object sender, EventArgs e) { // Forums Guid subGuid = QueryHelper.GetGuid("subGuid", Guid.Empty); if (subGuid != Guid.Empty) { ForumSubscriptionInfo fsi = null; if (subGuid != Guid.Empty) { fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subGuid); } else { lblError.Visible = true; lblError.Text = GetString("Forum.UnsubscribeUnsuccessfull"); return; } if (fsi != null) { ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(fsi.SubscriptionID); lblInfo.Visible = true; lblInfo.Text = GetString("Unsubscribe.Unsubscribed"); } else { lblError.Visible = true; lblError.Text = GetString("forum.invalidsubscribeid"); } } }
/// <summary> /// OK click handler. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { // Check banned IP if (!BannedIPInfoProvider.IsAllowed(CMSContext.CurrentSiteName, BanControlEnum.AllNonComplete)) { lblError.Visible = true; lblError.Text = GetString("General.BannedIP"); return; } // Check input fields string result = new Validator().NotEmpty(txtEmail.Text, rfvEmailRequired.ErrorMessage).IsRegularExp(txtEmail.Text, @"^([\w0-9_-]+(\.[\w0-9_-]+)*@[\w0-9_-]+(\.[\w0-9_-]+)+)*$", rfvEmail.ErrorMessage).Result; if (result == "") { // For selected forum and only if subscribtion is enabled if ((ForumContext.CurrentForum != null) && ((ForumContext.CurrentState == ForumStateEnum.SubscribeToPost) || (ForumContext.CurrentState == ForumStateEnum.NewSubscription))) { // Check permissions if (!this.IsAvailable(ForumContext.CurrentForum, ForumActionType.SubscribeToForum)) { lblError.Visible = true; lblError.Text = GetString("ForumNewPost.PermissionDenied"); return; } // Create new subscribtion ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(); fsi.SubscriptionForumID = ForumContext.CurrentForum.ForumID; fsi.SubscriptionEmail = HTMLHelper.HTMLEncode(txtEmail.Text.Trim()); fsi.SubscriptionGUID = Guid.NewGuid(); if (ForumContext.CurrentSubscribeThread != null) { fsi.SubscriptionPostID = ForumContext.CurrentSubscribeThread.PostId; } if (CMSContext.CurrentUser != null) { fsi.SubscriptionUserID = CMSContext.CurrentUser.UserID; } // Check whethger user is not subscribed if (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), fsi.SubscriptionForumID, fsi.SubscriptionPostID)) { lblError.Text = GetString("ForumSubscibe.SubscriptionExists"); lblError.Visible = true; return; } ForumSubscriptionInfoProvider.SetForumSubscriptionInfo(fsi); LogSubscriptionActivity(fsi, ForumContext.CurrentForum); } } URLHelper.Redirect(ClearURL()); }
/// <summary> /// Logs "subscription" activity. /// </summary> /// <param name="forumSubscriptionInfo">Forum subscription</param> /// <param name="forumInfo">Forum object</param> private void LogSubscriptionActivity(ForumSubscriptionInfo forumSubscriptionInfo, ForumInfo forumInfo) { if ((forumInfo == null) || (forumSubscriptionInfo == null) || !forumInfo.ForumLogActivity) { return; } mForumActivityLogger.LogForumSubscriptionActivity(forumInfo, forumSubscriptionInfo, DocumentContext.CurrentDocument); Service.Resolve <ICurrentContactMergeService>().UpdateCurrentContactEmail(forumSubscriptionInfo.SubscriptionEmail, MembershipContext.AuthenticatedUser); }
/// <summary> /// Logs "subscription" activity. /// </summary> /// <param name="fsi">Forum subscription</param> /// <param name="fi">Forum object</param> private void LogSubscriptionActivity(ForumSubscriptionInfo fsi, ForumInfo fi) { if ((fi == null) || !fi.ForumLogActivity) { return; } Activity activity = new ActivitySubscriptionForumPost(fi, fsi, DocumentContext.CurrentDocument, AnalyticsContext.ActivityEnvironmentVariables); activity.Log(); }
protected void Page_Load(object sender, EventArgs e) { Title = "Forums - Edit subscription"; string currentForumSubscription = ""; int subscriptionId = QueryHelper.GetInteger("subscriptionid", 0); subscriptionEdit.SubscriptionID = subscriptionId; subscriptionEdit.OnSaved += subscriptionEdit_OnSaved; subscriptionEdit.IsLiveSite = false; // get forumSubscription id from querystring if (subscriptionId > 0) { ForumSubscriptionInfo forumSubscriptionObj = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); currentForumSubscription = HTMLHelper.HTMLEncode(forumSubscriptionObj.SubscriptionEmail); // Initialize breadcrumbs PageBreadcrumbs.Items.Add(new BreadcrumbItem { Text = GetString("ForumSubscription_Edit.ItemListLink"), RedirectUrl = ResolveUrl("~/CMSModules/Groups/Tools/Forums/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumSubscriptionObj.SubscriptionForumID), }); PageBreadcrumbs.Items.Add(new BreadcrumbItem { Text = (string.IsNullOrEmpty(currentForumSubscription)) ? GetString("ForumSubscription_List.NewItemCaption") : currentForumSubscription, }); } else { forumId = QueryHelper.GetInteger("forumid", 0); if (forumId == 0) { return; } subscriptionEdit.ForumID = forumId; // Initialize breadcrumbs PageBreadcrumbs.Items.Add(new BreadcrumbItem { Text = GetString("ForumSubscription_Edit.ItemListLink"), RedirectUrl = ResolveUrl("~/CMSModules/Groups/Tools/Forums/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumId), }); PageBreadcrumbs.Items.Add(new BreadcrumbItem { Text = (string.IsNullOrEmpty(currentForumSubscription)) ? GetString("ForumSubscription_List.NewItemCaption") : currentForumSubscription, }); PageTitle.TitleText = GetString("forumsubscription_edit.newitemcaption"); } subscriptionEdit.OnCheckPermissions += subscriptionEdit_OnCheckPermissions; }
protected void Page_Load(object sender, EventArgs e) { this.Title = "Forums - Edit subscription"; string currentForumSubscription = ""; ForumSubscriptionInfo forumSubscriptionObj = new ForumSubscriptionInfo(); int subscriptionId = QueryHelper.GetInteger("subscriptionid", 0); this.subscriptionEdit.SubscriptionID = subscriptionId; this.subscriptionEdit.OnSaved += new EventHandler(subscriptionEdit_OnSaved); this.subscriptionEdit.IsLiveSite = false; // get forumSubscription id from querystring if (subscriptionId > 0) { forumSubscriptionObj = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); currentForumSubscription = HTMLHelper.HTMLEncode(forumSubscriptionObj.SubscriptionEmail); // initializes page title control string[,] tabs = new string[2, 3]; tabs[0, 0] = GetString("ForumSubscription_Edit.ItemListLink"); tabs[0, 1] = "~/CMSModules/Groups/Tools/Forums/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumSubscriptionObj.SubscriptionForumID; tabs[0, 2] = ""; tabs[1, 0] = (string.IsNullOrEmpty(currentForumSubscription)) ? GetString("ForumSubscription_List.NewItemCaption") : currentForumSubscription; tabs[1, 1] = ""; tabs[1, 2] = ""; this.CurrentMaster.Title.Breadcrumbs = tabs; } else { forumId = ValidationHelper.GetInteger(Request.QueryString["forumid"], 0); if (forumId == 0) { return; } this.subscriptionEdit.ForumID = forumId; // initializes page title control string[,] tabs = new string[2, 3]; tabs[0, 0] = GetString("ForumSubscription_Edit.ItemListLink"); tabs[0, 1] = "~/CMSModules/Groups/Tools/Forums/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumId.ToString(); tabs[0, 2] = ""; tabs[1, 0] = (string.IsNullOrEmpty(currentForumSubscription)) ? GetString("ForumSubscription_List.NewItemCaption") : currentForumSubscription; tabs[1, 1] = ""; tabs[1, 2] = ""; this.CurrentMaster.Title.Breadcrumbs = tabs; this.CurrentMaster.Title.TitleText = GetString("forumsubscription_edit.newitemcaption"); this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Forums_ForumSubscription/new.png"); } this.subscriptionEdit.OnCheckPermissions += new CMSAdminControl.CheckPermissionsEventHandler(subscriptionEdit_OnCheckPermissions); }
protected void Page_Load(object sender, EventArgs e) { Title = "Forums - Edit subscription"; subscriptionId = QueryHelper.GetInteger("subscriptionid", 0); subscriptionEdit.SubscriptionID = subscriptionId; subscriptionEdit.OnSaved += new EventHandler(subscriptionEdit_OnSaved); subscriptionEdit.IsLiveSite = false; string currentForumSubscription = ""; ForumSubscriptionInfo forumSubscriptionObj = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); // get forumSubscription id from querystring if (forumSubscriptionObj != null) { currentForumSubscription = HTMLHelper.HTMLEncode(forumSubscriptionObj.SubscriptionEmail); // Initialize breadcrumbs PageBreadcrumbs.Items.Add(new BreadcrumbItem() { Text = GetString("ForumSubscription_Edit.ItemListLink"), RedirectUrl = ResolveUrl("~/CMSModules/Forums/Tools/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumSubscriptionObj.SubscriptionForumID), }); PageBreadcrumbs.Items.Add(new BreadcrumbItem() { Text = currentForumSubscription, }); } else { forumId = QueryHelper.GetInteger("forumid", 0); if (forumId == 0) { return; } subscriptionEdit.ForumID = forumId; isNewItem = true; // Initialize breadcrumbs PageBreadcrumbs.Items.Add(new BreadcrumbItem() { Text = GetString("ForumSubscription_Edit.ItemListLink"), RedirectUrl = ResolveUrl("~/CMSModules/Forums/Tools/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumId), }); PageBreadcrumbs.Items.Add(new BreadcrumbItem() { Text = GetString("ForumSubscription_Edit.NewItemCaption"), }); } ForumContext.CheckSite(0, forumId, 0); }
private void subscriptionEdit_OnSaved(object sender, EventArgs e) { int subscriptionId = ValidationHelper.GetInteger(ViewState["SubscriptionID"], 0); if (subscriptionId > 0) { ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); if (fsi != null) { SetBreadcrumbsItem(fsi.SubscriptionEmail); } } }
protected void Page_Load(object sender, EventArgs e) { this.Title = "Forums - Edit subscription"; subscriptionId = QueryHelper.GetInteger("subscriptionid", 0); this.subscriptionEdit.SubscriptionID = subscriptionId; this.subscriptionEdit.OnSaved += new EventHandler(subscriptionEdit_OnSaved); this.subscriptionEdit.IsLiveSite = false; string currentForumSubscription = ""; ForumSubscriptionInfo forumSubscriptionObj = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); // get forumSubscription id from querystring if (forumSubscriptionObj != null) { currentForumSubscription = HTMLHelper.HTMLEncode(forumSubscriptionObj.SubscriptionEmail); // initializes page title control string[,] tabs = new string[2, 3]; tabs[0, 0] = GetString("ForumSubscription_Edit.ItemListLink"); tabs[0, 1] = "~/CMSModules/Forums/Tools/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumSubscriptionObj.SubscriptionForumID; tabs[0, 2] = ""; tabs[1, 0] = currentForumSubscription; tabs[1, 1] = ""; tabs[1, 2] = ""; this.CurrentMaster.Title.Breadcrumbs = tabs; } else { forumId = QueryHelper.GetInteger("forumid", 0); if (forumId == 0) { return; } this.subscriptionEdit.ForumID = forumId; this.isNewItem = true; // Initializes page title control string[,] tabs = new string[2, 3]; tabs[0, 0] = GetString("ForumSubscription_Edit.ItemListLink"); tabs[0, 1] = "~/CMSModules/Forums/Tools/Subscriptions/ForumSubscription_List.aspx?forumid=" + forumId.ToString(); tabs[0, 2] = ""; tabs[1, 0] = GetString("ForumSubscription_Edit.NewItemCaption"); tabs[1, 1] = ""; tabs[1, 2] = ""; this.CurrentMaster.Title.Breadcrumbs = tabs; } ForumContext.CheckSite(0, forumId, 0); }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { if (!CheckPermissions("cms.forums", CMSAdminControl.PERMISSION_MODIFY)) { return; } string errorMessage = new Validator().NotEmpty(txtSubscriptionEmail.Text, GetString("ForumSubscription_Edit.EnterSomeEmail")).Result; if (errorMessage == "") { // Check that e-mail is not already subscribed if (ForumSubscriptionInfoProvider.IsSubscribed(txtSubscriptionEmail.Text.Trim(), this.mForumId, 0)) { lblError.Visible = true; lblError.Text = GetString("ForumSubscibe.SubscriptionExists"); return; } if (SubscriptionObj == null) { SubscriptionObj = new ForumSubscriptionInfo(); SubscriptionObj.SubscriptionForumID = this.mForumId; SubscriptionObj.SubscriptionGUID = Guid.NewGuid(); } SubscriptionObj.SubscriptionEmail = txtSubscriptionEmail.Text.Trim(); if (ValidationHelper.IsEmail(SubscriptionObj.SubscriptionEmail)) { ForumSubscriptionInfoProvider.SetForumSubscriptionInfo(SubscriptionObj, chkSendConfirmationEmail.Checked, null, null); this.SubscriptionID = SubscriptionObj.SubscriptionID; lblInfo.Visible = true; lblInfo.Text = GetString("General.ChangesSaved"); this.RaiseOnSaved(); } else { lblError.Visible = true; lblError.Text = GetString("ForumSubscription_Edit.EmailIsNotValid"); } } else { lblError.Visible = true; lblError.Text = errorMessage; } }
protected void subscriptionNew_OnSaved(object sender, EventArgs e) { int subscriptionId = subscriptionNew.SubscriptionID; ViewState["SubscriptionID"] = subscriptionId; ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); if (fsi != null) { lblEditBack.Text = breadCrumbsSeparator + HTMLHelper.HTMLEncode(fsi.SubscriptionEmail); } subscriptionEdit.SubscriptionID = subscriptionId; DisplayControl("edit"); }
protected void subscriptionNew_OnSaved(object sender, EventArgs e) { int subscriptionId = subscriptionNew.SubscriptionID; ViewState["SubscriptionID"] = subscriptionId; ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); if (fsi != null) { SetBreadcrumbsItem(fsi.SubscriptionEmail); } subscriptionEdit.SubscriptionID = subscriptionId; DisplayControl("edit"); }
/// <summary> /// Handles the Click event of the btnApprove control. /// </summary> protected void btnUnsubscribe_Click(object sender, EventArgs e) { if (UserID != MembershipContext.AuthenticatedUser.UserID) { // Check permissions if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } } DataSet ds = ForumSubscriptionInfoProvider.GetSubscriptions("(SubscriptionUserID = " + UserID + ") AND (SubscriptionPostID = " + PostID + ") AND (ISNULL(SubscriptionApproved, 1) = 1)", null, 0, "SubscriptionID"); if (!DataHelper.DataSourceIsEmpty(ds)) { ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(ds.Tables[0].Rows[0]); ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(fsi); RefreshParentWindow(); } }
/// <summary> /// On action event handling. /// </summary> /// <param name="actionName">Name of the action</param> /// <param name="actionArgument">Value of the action</param> void forumSubscriptions_OnAction(string actionName, object actionArgument) { int id = ValidationHelper.GetInteger(actionArgument, 0); DataSet ds = null; if (actionName.ToLowerCSafe() == "forumunsubscribe") { ds = ForumSubscriptionInfoProvider.GetSubscriptions("(SubscriptionUserID = " + UserID + ") AND (SubscriptionForumID = " + id + ") AND (SubscriptionPostID IS NULL) AND (ISNULL(SubscriptionApproved, 1) = 1) ", null, 0, "SubscriptionID"); } else { ds = ForumSubscriptionInfoProvider.GetSubscriptions("(SubscriptionUserID = " + UserID + ") AND (SubscriptionPostID = " + id + ") AND (ISNULL(SubscriptionApproved, 1) = 1)", null, 0, "SubscriptionID"); } ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(ds.Tables[0].Rows[0]); switch (actionName.ToLowerCSafe()) { case "forumunsubscribe": case "postunsubscribe": if (RaiseOnCheckPermissions(PERMISSION_MANAGE, this)) { if (StopProcessing) { return; } } try { ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(fsi); } catch (Exception ex) { ShowError(ex.Message); } break; } }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { // check 'Read' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.forums", "Modify")) { RedirectToCMSDeskAccessDenied("cms.forums", "Modify"); } string errorMessage = new Validator().NotEmpty(txtSubscriptionEmail.Text, GetString("ForumSubscription_Edit.EnterSomeEmail")).Result; if (errorMessage == "") { ForumSubscriptionInfo subscription = new ForumSubscriptionInfo(); if (subscription == null) { lblError.Visible = true; lblError.Text = GetString("ForumSubscription_Edit.SubscriptionDoesNotExist"); return; } subscription.SubscriptionEmail = txtSubscriptionEmail.Text.Trim(); if (ValidationHelper.IsEmail(subscription.SubscriptionEmail)) { subscription.SubscriptionForumID = forumId; ForumSubscriptionInfoProvider.SetForumSubscriptionInfo(subscription); URLHelper.Redirect("ForumSubscription_Edit.aspx?subscriptionid=" + Convert.ToString(subscription.SubscriptionID) + "&saved=1"); } else { lblError.Visible = true; lblError.Text = GetString("ForumSubscription_Edit.EmailIsNotValid"); } } else { lblError.Visible = true; lblError.Text = errorMessage; } }
/// <summary> /// Handles the Click event of the btnApprove control. /// </summary> protected void btnUnsubscribe_Click(object sender, EventArgs e) { if (UserID != MembershipContext.AuthenticatedUser.UserID) { // Check permissions if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } } var query = new ObjectQuery <ForumSubscriptionInfo>().Where(new WhereCondition().WhereNull("SubscriptionApproved").Or().WhereEquals("SubscriptionApproved", 1)).And().WhereEquals("SubscriptionUserID", UserID).And().WhereEquals("SubscriptionPostID", PostID).Column("SubscriptionID").TopN(1); ForumSubscriptionInfo fsi = query.FirstOrDefault(); if (fsi != null) { ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(fsi); RefreshParentWindow(); } }
/// <summary> /// Edit subscription handler. /// </summary> protected void subscriptionList_OnAction(object sender, CommandEventArgs e) { switch (e.CommandName.ToLower()) { case "edit": int subscriptionId = ValidationHelper.GetInteger(e.CommandArgument, 0); this.subscriptionEdit.SubscriptionID = subscriptionId; ViewState["SubscriptionID"] = subscriptionId; ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); if (fsi != null) { this.lblEditBack.Text = breadCrumbsSeparator + HTMLHelper.HTMLEncode(fsi.SubscriptionEmail); } DisplayControl("edit"); break; } }
/// <summary> /// Edit subscription handler. /// </summary> protected void subscriptionList_OnAction(object sender, CommandEventArgs e) { switch (e.CommandName.ToLowerCSafe()) { case "edit": int subscriptionId = ValidationHelper.GetInteger(e.CommandArgument, 0); subscriptionEdit.SubscriptionID = subscriptionId; ViewState["SubscriptionID"] = subscriptionId; ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); if (fsi != null) { SetBreadcrumbsItem(fsi.SubscriptionEmail); } DisplayControl("edit"); break; } }
/// <summary> /// Redirect to the unsubscription page if current url contains valid unbscription informations. /// </summary> protected void EnsureUnsubscription() { Guid unsubGuid = QueryHelper.GetGuid("unsubscribe", Guid.Empty); if (unsubGuid != Guid.Empty) { int forumId = QueryHelper.GetInteger("forumid", 0); if (forumId > 0) { ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(unsubGuid); if (fsi != null) { ForumInfo fi = ForumInfoProvider.GetForumInfo(forumId); if ((fi != null) && (fsi.SubscriptionForumID == fi.ForumID)) { URLHelper.Redirect("~/CMSModules/Forums/CMSPages/unsubscribe.aspx?subGuid=" + unsubGuid.ToString()); } } } } }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that throws event</param> /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param> protected void gridElem_OnAction(string actionName, object actionArgument) { int subscriptionId = ValidationHelper.GetInteger(actionArgument, 0); switch (actionName.ToLowerCSafe()) { case "delete": if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } // Delete ForumSubscriptionInfo object from database ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(subscriptionId, chkSendConfirmationEmail.Checked); break; case "approve": if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } // Approve ForumSubscriptionInfo object ForumSubscriptionInfo fsi = ForumSubscriptionInfoProvider.GetForumSubscriptionInfo(subscriptionId); if ((fsi != null) && !fsi.SubscriptionApproved) { fsi.SubscriptionApproved = true; ForumSubscriptionInfoProvider.SetForumSubscriptionInfo(fsi); if (chkSendConfirmationEmail.Checked) { ForumSubscriptionInfoProvider.SendConfirmationEmail(fsi, true, null, null); } } break; } RaiseOnAction(actionName, actionArgument); }
/// <summary> /// OK click hadler. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { #region "Security" // Check whether forum exists if (ForumContext.CurrentForum == null) { return; } // Check security bool securityCheck = true; switch (ForumContext.CurrentState) { case ForumStateEnum.NewThread: securityCheck = IsAvailable(ForumContext.CurrentForum, ForumActionType.NewThread); break; case ForumStateEnum.ReplyToPost: securityCheck = IsAvailable(ForumContext.CurrentForum, ForumActionType.Reply); break; case ForumStateEnum.EditPost: securityCheck = ForumContext.CurrentPost != null && IsAvailable(ForumContext.CurrentPost, ForumActionType.Edit); break; } if (!securityCheck) { lblError.Visible = true; lblError.Text = GetString("ForumNewPost.PermissionDenied"); return; } #region "Captcha" // Check security code if is required if ((ForumContext.CurrentForum.ForumUseCAPTCHA) && (!SecurityCode1.IsValid()) && (ForumContext.CurrentState != ForumStateEnum.EditPost)) { lblError.Visible = true; lblError.Text = GetString("ForumNewPost.InvalidCaptcha"); return; } #endregion #region "Email field" // Create instance of validator Validator validator = new Validator(); // Check whether email is valid string result = validator.IsEmail(txtEmail.Text, rfvEmail.ErrorMessage).Result; // Check whether email is present with correct format if email is required // or when subscribtion to current post is checked if ((ForumContext.CurrentForum.ForumRequireEmail || chkSubscribe.Checked) && (result != "")) { lblError.Visible = true; lblError.Text = result; return; } // Check if email is added if is in correct format if ((txtEmail.Text.Trim() != "") && (result != "")) { lblError.Visible = true; lblError.Text = rfvEmail.ErrorMessage; return; } #endregion #region "Subject" // Check whether subject is filled if (txtSubject.Text.Trim() == "") { lblError.Visible = true; lblError.Text = rfvSubject.ErrorMessage; return; } #endregion #region "Text" validator = new Validator(); // Check post text in HTML editor or text area if (!ForumContext.CurrentForum.ForumHTMLEditor) { // Check whether post text is added in text area if ((result = validator.NotEmpty(DiscussionMacroHelper.RemoveTags(ucBBEditor.Text), rfvText.ErrorMessage).Result) != "") { lblError.Visible = true; lblError.Text = result; return; } } else { // Check whether post text is added in HTML editor if ((result = validator.NotEmpty(htmlTemplateBody.ResolvedValue, rfvText.ErrorMessage).Result) != "") { lblError.Visible = true; lblError.Text = result; return; } } #endregion #region "User name" // Check whether user name is filled if user name field is visible if (ForumContext.CurrentForum.ForumAllowChangeName || CMSContext.CurrentUser.IsPublic() || ((ForumContext.CurrentForum != null) && (ForumContext.UserIsModerator(ForumContext.CurrentForum.ForumID, ForumContext.CommunityGroupID)))) { validator = new Validator(); if ((result = validator.NotEmpty(txtUserName.Text, rfvUserName.ErrorMessage).Result) != "") { lblError.Visible = true; lblError.Text = result; return; } } #endregion #endregion #region "Forum post properties" bool newPost = false; // Current forum info object ForumInfo fi = ForumContext.CurrentForum; // Forum post info object ForumPostInfo fp = null; // Get forum post info with dependence on current state if (ForumContext.CurrentState == ForumStateEnum.EditPost) { // Get existing object fp = ForumContext.CurrentPost; fp.PostLastEdit = DateTime.Now; } else { // Create new forum post info obejct fp = new ForumPostInfo(); newPost = true; } #region "Ad-hoc forum" if (this.IsAdHocForum && (ForumContext.CurrentForum.ForumID == 0)) { if (CMSContext.CurrentDocument == null) { lblError.Visible = true; lblError.Text = GetString("forums.documentdoesnotexist"); return; } fi.ForumGroupID = ForumGroupInfoProvider.GetAdHocGroupInfo(this.SiteID).GroupID; fi.ForumName = "AdHoc-" + Guid.NewGuid(); fi.ForumDisplayName = TextHelper.LimitLength(CMSContext.CurrentDocument.DocumentName, POST_USERNAME_LENGTH, String.Empty); fi.ForumOpen = true; fi.ForumModerated = false; fi.ForumAccess = 040000; fi.ForumThreads = 0; fi.ForumPosts = 0; fi.ForumLogActivity = this.LogActivity; ForumInfoProvider.SetForumInfo(fi); ForumContext.CurrentForum.ForumID = fi.ForumID; ForumContext.ForumID = fi.ForumID; this.ForumID = fi.ForumID; } #endregion // Post forum fp.PostForumID = ForumContext.CurrentForum.ForumID; // Get forum post info with dependence on current state if (ForumContext.CurrentState != ForumStateEnum.EditPost) { // Post time fp.PostTime = DateTime.Now; // User IP adress fp.PostInfo.IPAddress = Request.UserHostAddress; // User agent fp.PostInfo.Agent = Request.UserAgent; // Post user id if (!CMSContext.CurrentUser.IsPublic()) { fp.PostUserID = CMSContext.CurrentUser.UserID; } // Post signature fp.PostUserSignature = txtSignature.Text; } // Post subject fp.PostSubject = txtSubject.Text; // Post user email fp.PostUserMail = txtEmail.Text; // Post type int forumType = ForumContext.CurrentForum.ForumType; if (forumType == 0) { if (ForumContext.CurrentReplyThread == null) { // New thread - use type which user choosed fp.PostType = (radTypeDiscussion.Checked ? 0 : 1); } else { // Reply - use parent type fp.PostType = ForumContext.CurrentReplyThread.PostType; } } else { // Fixed type - use the forum setting fp.PostType = forumType - 1; } bool newThread = (ForumContext.CurrentReplyThread == null); // Set username if change name is allowed if (fi.ForumAllowChangeName || CMSContext.CurrentUser.IsPublic() || ForumContext.UserIsModerator(fp.PostForumID, ForumContext.CommunityGroupID)) { fp.PostUserName = TextHelper.LimitLength(txtUserName.Text, POST_USERNAME_LENGTH, ""); } else { // Get forum post info with dependence on current state if (ForumContext.CurrentState != ForumStateEnum.EditPost) { fp.PostUserName = UserName; } } // Post parent id -> reply to if (ForumContext.CurrentReplyThread != null) { fp.PostParentID = ForumContext.CurrentReplyThread.PostId; // Check max relative level if ((this.MaxRelativeLevel > -1) && (ForumContext.CurrentReplyThread.PostLevel >= this.MaxRelativeLevel)) { lblError.Visible = true; lblError.Text = GetString("Forums.MaxRelativeLevelError"); return; } } // Get post text from HTML editor if is enabled fp.PostText = ForumContext.CurrentForum.ForumHTMLEditor ? htmlTemplateBody.ResolvedValue : ucBBEditor.Text; // Approve post if forum is not moderated if (newPost) { if (!ForumContext.CurrentForum.ForumModerated) { fp.PostApproved = true; } else { if (ForumContext.UserIsModerator(fp.PostForumID, this.CommunityGroupID)) { fp.PostApproved = true; fp.PostApprovedByUserID = CMSContext.CurrentUser.UserID; } } } // If signature is enabled then if (EnableSignature) { fp.PostUserSignature = CMSContext.CurrentUser.UserSignature; } #endregion if (!BadWordInfoProvider.CanUseBadWords(CMSContext.CurrentUser, CMSContext.CurrentSiteName)) { // Prepare columns to check Dictionary<string, int> columns = new Dictionary<string, int>(); columns.Add("PostText", 0); columns.Add("PostSubject", 450); columns.Add("PostUserSignature", 0); columns.Add("PostUserName", 200); // Perform bad words check string badMessage = BadWordsHelper.CheckBadWords(fp, columns, "PostApproved", "PostApprovedByUserID", fp.PostText, CMSContext.CurrentUser.UserID); if (badMessage == "") { if (!ValidatePost(fp)) { badMessage = GetString("ForumNewPost.EmptyBadWord"); } } if (badMessage != "") { lblError.Visible = true; lblError.Text = badMessage; return; } } // Flood protection if (FloodProtectionHelper.CheckFlooding(CMSContext.CurrentSiteName, CMSContext.CurrentUser)) { lblError.Visible = true; lblError.Text = GetString("General.FloodProtection"); return; } // Check banned ip if (!BannedIPInfoProvider.IsAllowed(CMSContext.CurrentSiteName, BanControlEnum.AllNonComplete)) { lblError.Visible = true; lblError.Text = GetString("General.BannedIP"); return; } string baseUrl = ForumContext.CurrentForum.ForumBaseUrl; if (String.IsNullOrEmpty(baseUrl)) { baseUrl = this.FriendlyBaseURL; } string unsubscriptionUrl = ForumContext.CurrentForum.ForumUnsubscriptionUrl; if (String.IsNullOrEmpty(unsubscriptionUrl)) { unsubscriptionUrl = this.UnsubscriptionURL; } // USe parent post id for new post int subscibePostId = newPost ? fp.PostParentID : fp.PostId; // Check subscriptions if ((chkSubscribe.Checked) && (!String.IsNullOrEmpty(txtEmail.Text)) && (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), fp.PostForumID, subscibePostId))) { // Post of the forum is already subscribed to this email -> show an error chkSubscribe.Checked = false; lblError.Text = GetString("Forums.EmailAlreadySubscribed"); lblError.Visible = true; return; } // Save post object ForumPostInfoProvider.SetForumPostInfo(fp, baseUrl, unsubscriptionUrl); LogPostActivity(fp, fi); #region "Subscription" // If subscribe is checked create new subscription to the current post if ((chkSubscribe.Checked) && (!ForumSubscriptionInfoProvider.IsSubscribed(fp.PostUserMail, fp.PostForumID, fp.PostId))) { // Create new subscription info object ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(); // Set info properties fsi.SubscriptionForumID = fp.PostForumID; fsi.SubscriptionEmail = fp.PostUserMail; fsi.SubscriptionPostID = fp.PostId; fsi.SubscriptionUserID = fp.PostUserID; fsi.SubscriptionGUID = Guid.NewGuid(); // Save subscription ForumSubscriptionInfoProvider.SetForumSubscriptionInfo(fsi, true, baseUrl, unsubscriptionUrl); LogSubscriptionActivity(fsi, fi); } #endregion // Generate new captcha code SecurityCode1.GenerateNew(); if ((!fp.PostApproved) && (!ForumContext.UserIsModerator(fp.PostForumID, this.CommunityGroupID))) { if (OnModerationRequired != null) { OnModerationRequired(this, null); } } // Keep current user info CurrentUserInfo currentUser = CMSContext.CurrentUser; if (currentUser.IsAuthenticated() && chkAttachFile.Checked && (currentUser.IsGlobalAdministrator || ForumContext.CurrentForum.AllowAttachFiles != SecurityAccessEnum.Nobody)) { // Redirect to the post attachments URLHelper.Redirect(GetURL(fp, ForumActionType.Attachment)); } else { if (!this.StopProcessing) { // Redirect back to the forum or forum thread URLHelper.Redirect(ClearURL()); } } }
/// <summary> /// Btn OK handler. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } if (editPi == null) { editPi = ForumPostInfoProvider.GetForumPostInfo(EditPostID); } // Sets the current or parent post id int subscibePostId = 0; if (editPi != null) { editPi.PostLastEdit = DateTime.Now; editPi.PostIsAnswer = ValidationHelper.GetInteger(txtPostIsAnswer.Text, editPi.PostIsAnswer); editPi.PostIsNotAnswer = ValidationHelper.GetInteger(txtPostIsNotAnswer.Text, editPi.PostIsNotAnswer); } else { // Create new post editPi = new ForumPostInfo(); // Set as reply if (replyPi != null) { editPi.PostParentID = replyPi.PostId; subscibePostId = replyPi.PostId; } editPi.PostUserID = MembershipContext.AuthenticatedUser.UserID; editPi.PostForumID = fi.ForumID; editPi.SiteId = fi.ForumSiteID; editPi.PostTime = DateTime.Now; editPi.PostApproved = true; editPi.PostApprovedByUserID = MembershipContext.AuthenticatedUser.UserID; } #region "Security" string result = new Validator().NotEmpty(txtSubject.Text, rfvSubject.ErrorMessage).NotEmpty(txtUserName, rfvUserName.ErrorMessage).Result; // Check if is some text in TextArea or in HTMLEditor if (result == "") { if (fi.ForumHTMLEditor) { if (htmlTemplateBody.ResolvedValue.Trim() == "") { result = rfvText.ErrorMessage; } editPi.PostText = htmlTemplateBody.ResolvedValue; } else { if (DiscussionMacroResolver.RemoveTags(ucBBEditor.Text).Trim() == "") { result = rfvText.ErrorMessage; } editPi.PostText = ucBBEditor.Text; } } if ((fi.ForumRequireEmail || chkSubscribe.Checked || (txtEmail.Text != String.Empty)) && result == "") { result = new Validator().IsEmail(txtEmail.Text, rfvEmail.ErrorMessage).Result; if (!String.IsNullOrEmpty(result)) { ShowError(result); if (chkSubscribe.Checked && String.IsNullOrEmpty(txtEmail.Text)) { ShowError(GetString("Forums.Emailsubscribe")); } Visible = true; return; } } #endregion // Check subscriptions if ((chkSubscribe.Checked) && (!String.IsNullOrEmpty(txtEmail.Text)) && (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), editPi.PostForumID, subscibePostId))) { // Post of the forum is already subscribed to this email -> show an error result = GetString("Forums.EmailAlreadySubscribed"); chkSubscribe.Checked = false; } if (String.IsNullOrEmpty(result)) { if (fi.ForumType == 0) { editPi.PostType = (radTypeQuestion.Checked) ? 1 : 0; } editPi.PostUserName = TextHelper.LimitLength(txtUserName.Text, POST_USERNAME_LENGTH, ""); editPi.PostSubject = TextHelper.LimitLength(txtSubject.Text, POST_SUBJECT_LENGTH, ""); editPi.PostUserMail = txtEmail.Text; editPi.PostUserSignature = txtSignature.Text; ForumPostInfoProvider.SetForumPostInfo(editPi); EditPostID = editPi.PostId; #region "Subscription" if ((chkSubscribe.Checked) && (!String.IsNullOrEmpty(editPi.PostUserMail))) { ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(); fsi.SubscriptionForumID = ForumID; fsi.SubscriptionEmail = editPi.PostUserMail; fsi.SubscriptionPostID = editPi.PostId; fsi.SubscriptionUserID = MembershipContext.AuthenticatedUser.UserID; fsi.SubscriptionGUID = Guid.NewGuid(); ForumSubscriptionInfoProvider.Subscribe(fsi, DateTime.Now, true, true); } #endregion ClearForm(); if (OnInsertPost != null) { OnInsertPost(this, null); } RaiseOnSaved(); } else { ShowError(result); return; } }
/// <summary> /// OK click handler. /// </summary> 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 result = new Validator().NotEmpty(txtEmail.Text, rfvEmailRequired.ErrorMessage).IsRegularExp(txtEmail.Text, @"^([\w0-9_-]+(\.[\w0-9_-]+)*@[\w0-9_-]+(\.[\w0-9_-]+)+)*$", rfvEmail.ErrorMessage).Result; if (result == "") { // For selected forum and only if subscription is enabled if ((ForumContext.CurrentForum != null) && ((ForumContext.CurrentState == ForumStateEnum.SubscribeToPost) || (ForumContext.CurrentState == ForumStateEnum.NewSubscription))) { // Check permissions if (!IsAvailable(ForumContext.CurrentForum, ForumActionType.SubscribeToForum)) { ShowError(GetString("ForumNewPost.PermissionDenied")); return; } // Create new subscription ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(); fsi.SubscriptionForumID = ForumContext.CurrentForum.ForumID; fsi.SubscriptionEmail = HTMLHelper.HTMLEncode(txtEmail.Text.Trim()); fsi.SubscriptionGUID = Guid.NewGuid(); if (ForumContext.CurrentSubscribeThread != null) { fsi.SubscriptionPostID = ForumContext.CurrentSubscribeThread.PostId; } if (CMSContext.CurrentUser != null) { fsi.SubscriptionUserID = CMSContext.CurrentUser.UserID; } // Check whether user is not subscribed if (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), fsi.SubscriptionForumID, fsi.SubscriptionPostID)) { ShowError(GetString("ForumSubscibe.SubscriptionExists")); return; } ForumSubscriptionInfoProvider.Subscribe(fsi, DateTime.Now, true, true); if (fsi.SubscriptionApproved) { ShowConfirmation(GetString("blog.subscription.beensubscribed")); LogSubscriptionActivity(fsi, ForumContext.CurrentForum); } else { string confirmation = GetString("general.subscribed.doubleoptin"); int optInInterval = ForumGroupInfoProvider.DoubleOptInInterval(CMSContext.CurrentSiteName); if (optInInterval > 0) { confirmation += "<br />" + string.Format(GetString("general.subscription_timeintervalwarning"), optInInterval); } ShowConfirmation(confirmation); } } } URLHelper.Redirect(ClearURL()); }
/// <summary> /// Logs activity. /// </summary> /// <param name="bci">Forum subscription</param> private void LogSubscriptionActivity(ForumSubscriptionInfo fsi, ForumInfo fi) { if ((fi == null) || !fi.ForumLogActivity) { return; } Activity activity = new ActivitySubscriptionForumPost(fi, fsi, CMSContext.CurrentDocument, CMSContext.ActivityEnvironmentVariables); activity.Log(); }
/// <summary> /// OK click hadler. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { #region "Security" // Check whether forum exists if (ForumContext.CurrentForum == null) { return; } // Check security bool securityCheck = true; switch (ForumContext.CurrentState) { case ForumStateEnum.NewThread: securityCheck = IsAvailable(ForumContext.CurrentForum, ForumActionType.NewThread); break; case ForumStateEnum.ReplyToPost: securityCheck = IsAvailable(ForumContext.CurrentForum, ForumActionType.Reply); break; case ForumStateEnum.EditPost: securityCheck = ForumContext.CurrentPost != null && IsAvailable(ForumContext.CurrentPost, ForumActionType.Edit); break; } if (!securityCheck) { ShowError(GetString("ForumNewPost.PermissionDenied")); return; } #region "Captcha" // Check security code if is required if ((ForumContext.CurrentForum.ForumUseCAPTCHA) && (!SecurityCode1.IsValid()) && (ForumContext.CurrentState != ForumStateEnum.EditPost)) { ShowError(GetString("ForumNewPost.InvalidCaptcha")); return; } #endregion #region "Email field" // Create instance of validator Validator validator = new Validator(); // Check whether email is valid string result = validator.IsEmail(txtEmail.Text, rfvEmail.ErrorMessage).Result; // Check whether email is present with correct format if email is required // or when subscribtion to current post is checked if ((ForumContext.CurrentForum.ForumRequireEmail || chkSubscribe.Checked) && (!String.IsNullOrEmpty(result))) { ShowError(result); return; } // Check if email is added if is in correct format if ((txtEmail.Text.Trim() != "") && (!String.IsNullOrEmpty(result))) { ShowError(rfvEmail.ErrorMessage); return; } #endregion #region "Subject" // Check whether subject is filled if (txtSubject.Text.Trim() == "") { ShowError(rfvSubject.ErrorMessage); return; } #endregion #region "Text" validator = new Validator(); // Check post text in HTML editor or text area if (!ForumContext.CurrentForum.ForumHTMLEditor) { // Check whether post text is added in text area if ((result = validator.NotEmpty(DiscussionMacroHelper.RemoveTags(ucBBEditor.Text), rfvText.ErrorMessage).Result) != "") { ShowError(result); return; } } else { // Check whether post text is added in HTML editor if ((result = validator.NotEmpty(htmlTemplateBody.ResolvedValue, rfvText.ErrorMessage).Result) != "") { ShowError(result); return; } } #endregion #region "User name" // Check whether user name is filled if user name field is visible if (ForumContext.CurrentForum.ForumAllowChangeName || MembershipContext.AuthenticatedUser.IsPublic() || ((ForumContext.CurrentForum != null) && (ForumContext.UserIsModerator(ForumContext.CurrentForum.ForumID, ForumContext.CommunityGroupID)))) { validator = new Validator(); if (!String.IsNullOrEmpty(result = validator.NotEmpty(txtUserName.Text, rfvUserName.ErrorMessage).Result)) { ShowError(result); return; } } #endregion #endregion #region "Forum post properties" bool newPost = false; // Current forum info object ForumInfo fi = ForumContext.CurrentForum; // Forum post info object ForumPostInfo fp = null; // Get forum post info with dependence on current state if (ForumContext.CurrentState == ForumStateEnum.EditPost) { // Get existing object fp = ForumContext.CurrentPost; fp.PostLastEdit = DateTime.Now; } else { // Create new forum post info object fp = new ForumPostInfo(); newPost = true; } #region "Ad-hoc forum" if (IsAdHocForum && (ForumContext.CurrentForum.ForumID == 0)) { if (DocumentContext.CurrentDocument == null) { ShowError(GetString("forums.documentdoesnotexist")); return; } fi.ForumGroupID = ForumGroupInfoProvider.GetAdHocGroupInfo(SiteID).GroupID; fi.ForumName = "AdHoc-" + Guid.NewGuid(); fi.ForumDisplayName = TextHelper.LimitLength(DocumentContext.CurrentDocument.GetDocumentName(), POST_USERNAME_LENGTH, String.Empty); fi.ForumOpen = true; fi.ForumModerated = false; fi.ForumAccess = 040000; fi.ForumThreads = 0; fi.ForumPosts = 0; fi.ForumLogActivity = LogActivity; ForumInfoProvider.SetForumInfo(fi); ForumContext.CurrentForum.ForumID = fi.ForumID; ForumContext.ForumID = fi.ForumID; ForumID = fi.ForumID; } #endregion // Post forum fp.PostForumID = ForumContext.CurrentForum.ForumID; // Get forum post info with dependence on current state if (ForumContext.CurrentState != ForumStateEnum.EditPost) { // Post time fp.PostTime = DateTime.Now; // User IP address fp.PostInfo.IPAddress = RequestContext.UserHostAddress; // User agent fp.PostInfo.Agent = Request.UserAgent; // Post user id if (!MembershipContext.AuthenticatedUser.IsPublic()) { fp.PostUserID = MembershipContext.AuthenticatedUser.UserID; } // Post signature fp.PostUserSignature = txtSignature.Text; } // Post subject fp.PostSubject = txtSubject.Text; // Post user email fp.PostUserMail = txtEmail.Text; // Post type int forumType = ForumContext.CurrentForum.ForumType; if (forumType == 0) { if (ForumContext.CurrentReplyThread == null) { // New thread - use type which user chosen fp.PostType = (radTypeDiscussion.Checked ? 0 : 1); } else { // Reply - use parent type fp.PostType = ForumContext.CurrentReplyThread.PostType; } } else { // Fixed type - use the forum setting fp.PostType = forumType - 1; } bool newThread = (ForumContext.CurrentReplyThread == null); // Set username if change name is allowed if (fi.ForumAllowChangeName || MembershipContext.AuthenticatedUser.IsPublic() || ForumContext.UserIsModerator(fp.PostForumID, ForumContext.CommunityGroupID)) { fp.PostUserName = TextHelper.LimitLength(txtUserName.Text, POST_USERNAME_LENGTH, ""); } else { // Get forum post info with dependence on current state if (ForumContext.CurrentState != ForumStateEnum.EditPost) { fp.PostUserName = UserName; } } // Post parent id -> reply to if (ForumContext.CurrentReplyThread != null) { fp.PostParentID = ForumContext.CurrentReplyThread.PostId; // Check max relative level if ((MaxRelativeLevel > -1) && (ForumContext.CurrentReplyThread.PostLevel >= MaxRelativeLevel)) { ShowError(GetString("Forums.MaxRelativeLevelError")); return; } } // Get post text from HTML editor if is enabled fp.PostText = ForumContext.CurrentForum.ForumHTMLEditor ? htmlTemplateBody.ResolvedValue : ucBBEditor.Text; // Approve post if forum is not moderated if (newPost) { if (!ForumContext.CurrentForum.ForumModerated) { fp.PostApproved = true; } else { if (ForumContext.UserIsModerator(fp.PostForumID, CommunityGroupID)) { fp.PostApproved = true; fp.PostApprovedByUserID = MembershipContext.AuthenticatedUser.UserID; } } } // If signature is enabled then if (EnableSignature) { fp.PostUserSignature = MembershipContext.AuthenticatedUser.UserSignature; } #endregion if (!BadWordInfoProvider.CanUseBadWords(MembershipContext.AuthenticatedUser, SiteContext.CurrentSiteName)) { // Prepare columns to check Dictionary <string, int> columns = new Dictionary <string, int>(); columns.Add("PostText", 0); columns.Add("PostSubject", 450); columns.Add("PostUserSignature", 0); columns.Add("PostUserName", 200); // Perform bad words check string badMessage = BadWordsHelper.CheckBadWords(fp, columns, "PostApproved", "PostApprovedByUserID", fp.PostText, MembershipContext.AuthenticatedUser.UserID, () => { return(ValidatePost(fp)); }); if (String.IsNullOrEmpty(badMessage)) { if (!ValidatePost(fp)) { badMessage = GetString("ForumNewPost.EmptyBadWord"); } } if (!String.IsNullOrEmpty(badMessage)) { ShowError(badMessage); return; } } // Flood protection if (FloodProtectionHelper.CheckFlooding(SiteContext.CurrentSiteName, MembershipContext.AuthenticatedUser)) { ShowError(GetString("General.FloodProtection")); return; } // Check banned ip if (!BannedIPInfoProvider.IsAllowed(SiteContext.CurrentSiteName, BanControlEnum.AllNonComplete)) { ShowError(GetString("General.BannedIP")); return; } string baseUrl = ForumContext.CurrentForum.ForumBaseUrl; if (String.IsNullOrEmpty(baseUrl)) { baseUrl = FriendlyBaseURL; } string unsubscriptionUrl = ForumContext.CurrentForum.ForumUnsubscriptionUrl; if (String.IsNullOrEmpty(unsubscriptionUrl)) { unsubscriptionUrl = UnsubscriptionURL; } // USe parent post id for new post int subscibePostId = newPost ? fp.PostParentID : fp.PostId; // Check subscriptions if ((chkSubscribe.Checked) && (!String.IsNullOrEmpty(txtEmail.Text)) && (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), fp.PostForumID, subscibePostId))) { // Post of the forum is already subscribed to this email -> show an error chkSubscribe.Checked = false; ShowError(GetString("Forums.EmailAlreadySubscribed")); return; } // Save post object ForumPostInfoProvider.SetForumPostInfo(fp, baseUrl, unsubscriptionUrl); LogPostActivity(fp, fi); #region "Subscription" // If subscribe is checked create new subscription to the current post if ((chkSubscribe.Checked) && (!ForumSubscriptionInfoProvider.IsSubscribed(fp.PostUserMail, fp.PostForumID, fp.PostId))) { // Create new subscription info object ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(); // Set info properties fsi.SubscriptionForumID = fp.PostForumID; fsi.SubscriptionEmail = fp.PostUserMail; fsi.SubscriptionPostID = fp.PostId; fsi.SubscriptionUserID = fp.PostUserID; fsi.SubscriptionGUID = Guid.NewGuid(); // Save subscription ForumSubscriptionInfoProvider.Subscribe(fsi, DateTime.Now, true, true); if (fsi.SubscriptionApproved) { LogSubscriptionActivity(fsi, fi); } } #endregion bool moderationRequired = false; if ((!fp.PostApproved) && (!ForumContext.UserIsModerator(fp.PostForumID, CommunityGroupID))) { moderationRequired = true; if (OnModerationRequired != null) { OnModerationRequired(this, null); } } // Keep current user info CurrentUserInfo currentUser = MembershipContext.AuthenticatedUser; if (currentUser.IsAuthenticated() && chkAttachFile.Checked && (currentUser.IsGlobalAdministrator || ForumContext.CurrentForum.AllowAttachFiles != SecurityAccessEnum.Nobody)) { // Redirect to the post attachments string attachmentUrl = GetURL(fp, ForumActionType.Attachment); if (moderationRequired) { attachmentUrl = URLHelper.AddParameterToUrl(attachmentUrl, "moderated", "1"); } URLHelper.Redirect(attachmentUrl); } else { if (!StopProcessing) { // Redirect back to the forum or forum thread URLHelper.Redirect(ClearURL()); } } }
/// <summary> /// Handles the Click event of the btnApprove control. /// </summary> protected void btnUnsubscribe_Click(object sender, EventArgs e) { if (UserID != CMSContext.CurrentUser.UserID) { // Check permissions if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } } DataSet ds = ForumSubscriptionInfoProvider.GetSubscriptions("(SubscriptionUserID = " + UserID + ") AND (SubscriptionPostID = " + PostID + ") AND (ISNULL(SubscriptionApproved, 1) = 1)", null, 0, "SubscriptionID"); if (!DataHelper.DataSourceIsEmpty(ds)) { ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(ds.Tables[0].Rows[0]); ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(fsi); RefreshParentWindow(); } }
/// <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 result = new Validator().NotEmpty(txtEmail.Text, rfvEmailRequired.ErrorMessage).IsRegularExp(txtEmail.Text, @"^([\w0-9_-]+(\.[\w0-9_-]+)*@[\w0-9_-]+(\.[\w0-9_-]+)+)*$", rfvEmail.ErrorMessage).Result; if (result == "") { // For selected forum and only if subscription is enabled if ((ForumContext.CurrentForum != null) && ((ForumContext.CurrentState == ForumStateEnum.SubscribeToPost) || (ForumContext.CurrentState == ForumStateEnum.NewSubscription))) { // Check permissions if (!IsAvailable(ForumContext.CurrentForum, ForumActionType.SubscribeToForum)) { ShowError(GetString("ForumNewPost.PermissionDenied")); return; } // Create new subscription ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(); fsi.SubscriptionForumID = ForumContext.CurrentForum.ForumID; fsi.SubscriptionEmail = HTMLHelper.HTMLEncode(txtEmail.Text.Trim()); fsi.SubscriptionGUID = Guid.NewGuid(); if (ForumContext.CurrentSubscribeThread != null) { fsi.SubscriptionPostID = ForumContext.CurrentSubscribeThread.PostId; } if (MembershipContext.AuthenticatedUser != null) { fsi.SubscriptionUserID = MembershipContext.AuthenticatedUser.UserID; } // Check whether user is not subscribed if (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), fsi.SubscriptionForumID, fsi.SubscriptionPostID)) { ShowError(GetString("ForumSubscibe.SubscriptionExists")); return; } ForumSubscriptionInfoProvider.Subscribe(fsi, DateTime.Now, true, true); if (fsi.SubscriptionApproved) { ShowConfirmation(GetString("blog.subscription.beensubscribed")); LogSubscriptionActivity(fsi, ForumContext.CurrentForum); } else { string confirmation = GetString("general.subscribed.doubleoptin"); int optInInterval = ForumGroupInfoProvider.DoubleOptInInterval(SiteContext.CurrentSiteName); if (optInInterval > 0) { confirmation += "<br />" + string.Format(GetString("general.subscription_timeintervalwarning"), optInInterval); } ShowConfirmation(confirmation); } } } URLHelper.Redirect(ClearURL()); }
/// <summary> /// Btn OK handler. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } if (editPi == null) { editPi = ForumPostInfoProvider.GetForumPostInfo(EditPostID); } // Sets the current or parent post id int subscibePostId = 0; if (editPi != null) { editPi.PostLastEdit = DateTime.Now; editPi.PostIsAnswer = ValidationHelper.GetInteger(txtPostIsAnswer.Text, editPi.PostIsAnswer); editPi.PostIsNotAnswer = ValidationHelper.GetInteger(txtPostIsNotAnswer.Text, editPi.PostIsNotAnswer); } else { // Create new post editPi = new ForumPostInfo(); // Set as reply if (replyPi != null) { editPi.PostParentID = replyPi.PostId; subscibePostId = replyPi.PostId; } editPi.PostUserID = CMSContext.CurrentUser.UserID; editPi.PostForumID = fi.ForumID; editPi.PostTime = DateTime.Now; editPi.PostApproved = true; editPi.PostApprovedByUserID = CMSContext.CurrentUser.UserID; } #region "Security" string result = new Validator().NotEmpty(txtSubject.Text, rfvSubject.ErrorMessage).NotEmpty(txtUserName, rfvUserName.ErrorMessage).Result; // Check if is some text in TextArea or in HTMLEditor if (result == "") { if (fi.ForumHTMLEditor) { if (htmlTemplateBody.ResolvedValue.Trim() == "") { result = rfvText.ErrorMessage; } editPi.PostText = htmlTemplateBody.ResolvedValue; } else { if (DiscussionMacroHelper.RemoveTags(ucBBEditor.Text).Trim() == "") { result = rfvText.ErrorMessage; } editPi.PostText = ucBBEditor.Text; } } if ((fi.ForumRequireEmail || chkSubscribe.Checked || (txtEmail.Text != String.Empty)) && result == "") { result = new Validator().IsEmail(txtEmail.Text, rfvEmail.ErrorMessage).Result; if (!String.IsNullOrEmpty(result)) { ShowError(result); if (chkSubscribe.Checked && String.IsNullOrEmpty(txtEmail.Text)) { ShowError(GetString("Forums.Emailsubscribe")); } Visible = true; return; } } #endregion // Check subscriptions if ((chkSubscribe.Checked) && (!String.IsNullOrEmpty(txtEmail.Text)) && (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), editPi.PostForumID, subscibePostId))) { // Post of the forum is already subscribed to this email -> show an error result = GetString("Forums.EmailAlreadySubscribed"); chkSubscribe.Checked = false; } if (String.IsNullOrEmpty(result)) { if (fi.ForumType == 0) { editPi.PostType = (radTypeQuestion.Checked) ? 1 : 0; } editPi.PostUserName = TextHelper.LimitLength(txtUserName.Text, POST_USERNAME_LENGTH, ""); editPi.PostSubject = TextHelper.LimitLength(txtSubject.Text, POST_SUBJECT_LENGTH, ""); editPi.PostUserMail = txtEmail.Text; editPi.PostUserSignature = txtSignature.Text; ForumPostInfoProvider.SetForumPostInfo(editPi); EditPostID = editPi.PostId; #region "Subscription" if ((chkSubscribe.Checked) && (!String.IsNullOrEmpty(editPi.PostUserMail))) { ForumSubscriptionInfo fsi = new ForumSubscriptionInfo(); fsi.SubscriptionForumID = ForumID; fsi.SubscriptionEmail = editPi.PostUserMail; fsi.SubscriptionPostID = editPi.PostId; fsi.SubscriptionUserID = CMSContext.CurrentUser.UserID; fsi.SubscriptionGUID = Guid.NewGuid(); ForumSubscriptionInfoProvider.Subscribe(fsi, DateTime.Now, true, true); } #endregion ClearForm(); if (OnInsertPost != null) { OnInsertPost(this, null); } RaiseOnSaved(); } else { ShowError(result); return; } }
/// <summary> /// Check that subscription hash is valid and subscription didn't expire /// </summary> /// <param name="subGuid">Subscription GUID for subscriptions without</param> /// <param name="subscriptionHash">Subscription hash to check</param> /// <param name="requestTime">Date time of subscription request</param> /// <param name="checkOnly">Indicates if only check will be performed</param> private void CheckAndUnsubscribe(Guid subGuid, string subscriptionHash, string requestTime, bool checkOnly) { OptInApprovalResultEnum result = OptInApprovalResultEnum.NotFound; // Get date and time DateTime datetime = DateTimeHelper.ZERO_TIME; if (!string.IsNullOrEmpty(requestTime)) { try { datetime = DateTime.ParseExact(requestTime, SecurityHelper.EMAIL_CONFIRMATION_DATETIME_FORMAT, null); } catch { DisplayError(GetString("general.unsubscription_unsuccessful")); return; } } ForumSubscriptionInfo fsi = null; if (subGuid != Guid.Empty) { if (SubscriptionObject != null) { if (!checkOnly) { ForumSubscriptionInfoProvider.DeleteForumSubscriptionInfo(fsi); result = OptInApprovalResultEnum.Success; } } } // Check if subscription approval hash is supplied else if (!string.IsNullOrEmpty(subscriptionHash)) { if (checkOnly) { // Validate hash result = ForumSubscriptionInfoProvider.ValidateHash(SubscriptionObject, subscriptionHash, CMSContext.CurrentSiteName, datetime); } else { // Check if hash is valid result = ForumSubscriptionInfoProvider.Unsubscribe(subscriptionHash, true, CMSContext.CurrentSiteName, datetime); } } switch (result) { // Approving subscription was successful case OptInApprovalResultEnum.Success: if (!checkOnly) { ShowInfo(DataHelper.GetNotEmpty(SuccessfulUnsubscriptionText, GetString("Unsubscribe.Unsubscribed"))); } break; // Subscription was already approved case OptInApprovalResultEnum.Failed: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulUnsubscriptionText, GetString("general.unsubscription_unsuccessful"))); break; case OptInApprovalResultEnum.TimeExceeded: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulUnsubscriptionText, GetString("general.unsubscription_timeexceeded"))); break; // Subscription not found default: case OptInApprovalResultEnum.NotFound: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulUnsubscriptionText, GetString("general.unsubscription_NotSubscribed"))); break; } }