/// <summary> /// Deletes blog post subscription. Called when the "Delete subscription" button is pressed. /// Expects the CreateBlogPostSubscription method to be run first. /// </summary> private bool DeleteBlogPostSubscription() { // Prepare the parameters TreeNode documentNode = null; // Get the blog posts DataSet posts = BlogHelper.GetBlogPosts(CMSContext.CurrentSiteName, "/MyNewBlog", null, true, null, null, true); if (!DataHelper.DataSourceIsEmpty(posts)) { TreeProvider tree = new TreeProvider(CMSContext.CurrentUser); // Create object from DataRow documentNode = TreeNode.New(posts.Tables[0].Rows[0], "cms.blogpost", tree); } if (documentNode != null) { // Get the blog post subscription BlogPostSubscriptionInfo deleteSubscription = BlogPostSubscriptionInfoProvider.GetBlogPostSubscriptionInfo("*****@*****.**", documentNode.DocumentID); if (deleteSubscription != null) { // Delete the blog post subscription BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(deleteSubscription); return true; } } return false; }
protected void Page_Load(object sender, EventArgs e) { // Get info on subscription Guid subscriptionGuid = QueryHelper.GetGuid("subscriptionguid", Guid.Empty); if (subscriptionGuid != Guid.Empty) { BlogPostSubscriptionInfo subscriptionInfo = BlogPostSubscriptionInfoProvider.GetBlogPostSubscriptionInfo(subscriptionGuid); if (subscriptionInfo != null) { try { // Remove subscription information from the system BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(subscriptionInfo.SubscriptionID); // Inform user on success this.lblInfo.Visible = true; this.lblInfo.Text = GetString("blog.unsubscribe.success"); } catch (Exception ex) { // Inform user on general error lblError.Visible = true; lblError.Text = GetString("general.erroroccurred") + " " + ex.Message; } } else { // Inform user when specified subscription wasn't find in the system at all lblError.Visible = true; lblError.Text = GetString("blog.unsubscribe.subscriptiondontexist"); } } }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that threw 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 (RaiseOnCheckPermissions(PERMISSION_MANAGE, this)) { if (StopProcessing) { return; } } try { // Try to delete notification subscription BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(subscriptionId); } catch (Exception ex) { ShowError(ex.Message); } break; case "approve": if (RaiseOnCheckPermissions(PERMISSION_MANAGE, this)) { if (StopProcessing) { return; } } // Approve BlogPostSubscriptionInfo object BlogPostSubscriptionInfo bsi = BlogPostSubscriptionInfoProvider.GetBlogPostSubscriptionInfo(subscriptionId); if ((bsi != null) && !bsi.SubscriptionApproved) { bsi.SubscriptionApproved = true; BlogPostSubscriptionInfoProvider.SetBlogPostSubscriptionInfo(bsi); // Log activity if (MembershipContext.AuthenticatedUser.UserID == UserID) { Service <ICurrentContactMergeService> .Entry().UpdateCurrentContactEmail(bsi.SubscriptionEmail, MembershipContext.AuthenticatedUser); var blogsActivityLogger = new BlogsActivityLogger(); blogsActivityLogger.LogBlogPostSubscriptionActivity(bsi); } } break; } }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that threw 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 (RaiseOnCheckPermissions(PERMISSION_MANAGE, this)) { if (StopProcessing) { return; } } try { // Try to delete notification subscription BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(subscriptionId); } catch (Exception ex) { ShowError(ex.Message); } break; case "approve": if (RaiseOnCheckPermissions(PERMISSION_MANAGE, this)) { if (StopProcessing) { return; } } // Approve BlogPostSubscriptionInfo object BlogPostSubscriptionInfo bsi = BlogPostSubscriptionInfoProvider.GetBlogPostSubscriptionInfo(subscriptionId); if ((bsi != null) && !bsi.SubscriptionApproved) { bsi.SubscriptionApproved = true; BlogPostSubscriptionInfoProvider.SetBlogPostSubscriptionInfo(bsi); // Log activity if (MembershipContext.AuthenticatedUser.UserID == UserID) { BlogPostSubscriptionInfoProvider.LogSubscriptionActivity(bsi, PredefinedActivityType.SUBSCRIPTION_BLOG_POST, false); } } break; } }
/// <summary> /// Initializes the controls. /// </summary> private void SetupControls() { if (!this.StopProcessing) { // Get info on subscription Guid subscriptionGuid = QueryHelper.GetGuid("subscriptionguid", Guid.Empty); if (subscriptionGuid != Guid.Empty) { BlogPostSubscriptionInfo subscriptionInfo = BlogPostSubscriptionInfoProvider.GetBlogPostSubscriptionInfo(subscriptionGuid); if (subscriptionInfo != null) { try { // Remove subscription information from the system BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(subscriptionInfo.SubscriptionID); // Inform user on success this.lblInfo.Visible = true; this.lblInfo.Text = ((this.UnsubscribedText.Trim() != "") ? this.UnsubscribedText : GetString("blog.unsubscribe.success")); } catch (Exception ex) { // Inform user on general error lblError.Visible = true; lblError.Text = GetString("general.erroroccurred") + " " + ex.Message; } } else { // Inform user when specified subscription wasn't find in the system at all lblError.Visible = true; lblError.Text = GetString("blog.unsubscribe.subscriptiondontexist"); } } else { // Inform user when subscription information is missing this.Visible = false; } } }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that threw event</param> /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param> protected void gridElem_OnAction(string actionName, object actionArgument) { if (actionName == "delete") { if (RaiseOnCheckPermissions(CMSAdminControl.PERMISSION_MANAGE, this)) { if (this.StopProcessing) { return; } } try { // Try to delete notification subscription BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(ValidationHelper.GetInteger(actionArgument, 0)); } catch (Exception ex) { lblError.Visible = true; lblError.Text = ex.Message; } } }
/// <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; } } if (subGuid != Guid.Empty) { if (SubscriptionObject != null) { if (!checkOnly) { BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(SubscriptionObject); result = OptInApprovalResultEnum.Success; } } } // Check if subscription approval hash is supplied else if (!string.IsNullOrEmpty(subscriptionHash)) { if (checkOnly) { // Validate hash result = BlogPostSubscriptionInfoProvider.ValidateHash(SubscriptionObject, subscriptionHash, SiteContext.CurrentSiteName, datetime); } else { // Check if hash is valid result = BlogPostSubscriptionInfoProvider.Unsubscribe(subscriptionHash, true, SiteContext.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; } }
/// <summary> /// Check that subscription hash is valid and subscription didn't expire /// </summary> /// <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 CheckAndSubscribe(string subscriptionHash, string requestTime, bool checkOnly) { // Get date and time DateTime datetime = DateTimeHelper.ZERO_TIME; // Get date and time if (!string.IsNullOrEmpty(requestTime)) { try { datetime = DateTime.ParseExact(requestTime, SecurityHelper.EMAIL_CONFIRMATION_DATETIME_FORMAT, null); } catch { DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_failed"))); return; } } // Initialize opt-in result OptInApprovalResultEnum result = OptInApprovalResultEnum.NotFound; // Check only data consistency if (checkOnly) { // Validate hash result = BlogPostSubscriptionInfoProvider.ValidateHash(SubscriptionObject, subscriptionHash, SiteContext.CurrentSiteName, datetime); if ((result == OptInApprovalResultEnum.Success) && (SubscriptionObject.SubscriptionApproved)) { result = OptInApprovalResultEnum.NotFound; } } else { // Try to approve subscription result = BlogPostSubscriptionInfoProvider.ApproveSubscription(SubscriptionObject, subscriptionHash, false, SiteContext.CurrentSiteName, datetime); } // Process result switch (result) { // Approving subscription was successful case OptInApprovalResultEnum.Success: if (!checkOnly) { ShowInfo(DataHelper.GetNotEmpty(SuccessfulConfirmationText, GetString("general.subscription_approval"))); BlogPostSubscriptionInfoProvider.LogSubscriptionActivity(SubscriptionObject, QueryHelper.GetInteger("cid", 0), QueryHelper.GetInteger("siteid", 0), QueryHelper.GetText("url", ""), QueryHelper.GetText("camp", ""), PredefinedActivityType.SUBSCRIPTION_BLOG_POST, true); } break; // Subscription was already approved case OptInApprovalResultEnum.Failed: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_failed"))); break; case OptInApprovalResultEnum.TimeExceeded: BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(SubscriptionObject); DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_timeexceeded"))); break; // Subscription not found default: case OptInApprovalResultEnum.NotFound: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_invalid"))); break; } }
/// <summary> /// Check that subscription hash is valid and subscription didn't expire /// </summary> /// <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 CheckAndSubscribe(string subscriptionHash, string requestTime, bool checkOnly) { // Get date and time DateTime datetime = DateTimeHelper.ZERO_TIME; // Get date and time if (!string.IsNullOrEmpty(requestTime)) { try { datetime = DateTimeUrlFormatter.Parse(requestTime); } catch { DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_failed"))); return; } } // Initialize opt-in result OptInApprovalResultEnum result; // Check only data consistency if (checkOnly) { // Validate hash result = BlogPostSubscriptionInfoProvider.ValidateHash(SubscriptionObject, subscriptionHash, SiteContext.CurrentSiteName, datetime); if ((result == OptInApprovalResultEnum.Success) && (SubscriptionObject.SubscriptionApproved)) { result = OptInApprovalResultEnum.NotFound; } } else { // Try to approve subscription result = BlogPostSubscriptionInfoProvider.ApproveSubscription(SubscriptionObject, subscriptionHash, false, SiteContext.CurrentSiteName, datetime); } // Process result switch (result) { // Approving subscription was successful case OptInApprovalResultEnum.Success: if (!checkOnly) { ShowInfo(DataHelper.GetNotEmpty(SuccessfulConfirmationText, GetString("general.subscription_approval"))); Service.Resolve <ICurrentContactMergeService>().UpdateCurrentContactEmail(SubscriptionObject.SubscriptionEmail, MembershipContext.AuthenticatedUser); var blogsActivityLogger = Service.Resolve <IBlogsActivityLogger>(); blogsActivityLogger.LogBlogPostSubscriptionActivity(SubscriptionObject, QueryHelper.GetInteger("cid", 0), QueryHelper.GetInteger("siteid", 0), QueryHelper.GetText("camp", "")); } break; // Subscription was already approved case OptInApprovalResultEnum.Failed: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_failed"))); break; case OptInApprovalResultEnum.TimeExceeded: BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(SubscriptionObject); DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_timeexceeded"))); break; // Subscription not found default: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulConfirmationText, GetString("general.subscription_invalid"))); break; } }
/// <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 = DateTimeUrlFormatter.Parse(requestTime); } catch { DisplayError(GetString("general.unsubscription_unsuccessful")); return; } } if (SubscriptionObject != null) { if (subGuid != Guid.Empty) { if (!checkOnly) { BlogPostSubscriptionInfoProvider.DeleteBlogPostSubscriptionInfo(SubscriptionObject); result = OptInApprovalResultEnum.Success; } else { // Subscription exists but do nothing automatically, wait to user action return; } } // Check if subscription approval hash is supplied else if (!string.IsNullOrEmpty(subscriptionHash)) { result = checkOnly ? BlogPostSubscriptionInfoProvider.ValidateHash(SubscriptionObject, subscriptionHash, SiteContext.CurrentSiteName, datetime) : BlogPostSubscriptionInfoProvider.Unsubscribe(subscriptionHash, true, SiteContext.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: DisplayError(DataHelper.GetNotEmpty(UnsuccessfulUnsubscriptionText, GetString("general.unsubscription_NotSubscribed"))); break; } }