void gridElem_OnAction(string actionName, object actionArgument) { if (actionName == "delete") { int id = ValidationHelper.GetInteger(actionArgument, 0); var cui = MembershipContext.AuthenticatedUser; bool haveModify = cui.IsAuthorizedPerResource("cms.reporting", "modify"); if (!(cui.IsAuthorizedPerResource("cms.reporting", "subscribe") || haveModify)) { RedirectToAccessDenied("cms.reporting", "Subscribe"); } if (!cui.IsAuthorizedPerResource("cms.reporting", "modify")) { ReportSubscriptionInfo rsi = ReportSubscriptionInfoProvider.GetReportSubscriptionInfo(id); if ((rsi != null) && (rsi.ReportSubscriptionUserID != cui.UserID)) { RedirectToAccessDenied(GetString("reportsubscription.onlymodifyusersallowed")); } } ReportSubscriptionInfoProvider.DeleteReportSubscriptionInfo(id); } }
protected void Page_Load(object sender, EventArgs e) { mEmail = QueryHelper.GetString(Server.UrlDecode("email"), String.Empty); Guid subscriptionGUID = QueryHelper.GetGuid("guid", Guid.Empty); mReportSubscriptionInfo = ReportSubscriptionInfoProvider.GetReportSubscriptionInfo(subscriptionGUID); if (mReportSubscriptionInfo != null) { mReportInfo = ReportInfoProvider.GetReportInfo(mReportSubscriptionInfo.ReportSubscriptionReportID); if (mReportInfo != null) { // Set info label based by subscription's report lblInfo.Text = String.Format(GetString("reportsubscription.unsubscription.info"), HTMLHelper.HTMLEncode(mEmail), HTMLHelper.HTMLEncode(mReportInfo.ReportDisplayName)); } } else { ShowError(GetString("reportsubscription.notfound")); pnlInfo.Visible = false; btnUnsubscribe.Enabled = false; } btnUnsubscribe.Text = GetString("reportsubscription.unsubscribe"); Title = GetString("reportsubscription.unsubscribe.title"); PageTitle.TitleText = GetString("reportsubscription.unsubscribe.title"); }
protected void Page_Load(object sender, EventArgs e) { email = QueryHelper.GetString(Server.UrlDecode("email"), String.Empty); Guid subscriptionGUID = QueryHelper.GetGuid("guid", Guid.Empty); rsi = ReportSubscriptionInfoProvider.GetReportSubscriptionInfo(subscriptionGUID); if (rsi != null) { ri = ReportInfoProvider.GetReportInfo(rsi.ReportSubscriptionReportID); if (ri != null) { // Set info label based by subscription's report lblInfo.Text = String.Format(GetString("reportsubscription.unsubscription.info"), email, ri.ReportDisplayName); } } else { ShowError(GetString("reportsubscription.notfound")); pnlInfo.Visible = false; btnUnsubscribe.Enabled = false; } btnUnsubscribe.Text = GetString("reportsubscription.unsubscribe"); Title = GetString("reportsubscription.unsubscribe.title"); CurrentMaster.Title.TitleText = GetString("reportsubscription.unsubscribe.title"); CurrentMaster.Title.TitleImage = GetImageUrl("/CMSModules/CMS_Reporting/Subscription24.png"); }
void reportSubscriptions_OnAction(string actionName, object actionArgument) { int id = ValidationHelper.GetInteger(actionArgument, 0); if (CheckSecurity(id)) { switch (actionName.ToLowerCSafe()) { case "reportunsubscribe": ReportSubscriptionInfoProvider.DeleteReportSubscriptionInfo(id); break; } } }
protected void btnUnsubscribe_click(object sender, EventArgs ea) { // Validate email if (String.IsNullOrEmpty(email) || !ValidationHelper.IsEmail(email)) { ShowError(GetString("om.contact.enteremail")); return; } // Delete subscription if email is valid if (rsi != null) { if (rsi.ReportSubscriptionEmail.Trim() != email) { ShowError(GetString("reportsubscription.emailnotmatch")); return; } ReportSubscriptionInfoProvider.DeleteReportSubscriptionInfo(rsi.ReportSubscriptionID); ShowInformation(GetString("reportsubscription.unsubscription.success")); btnUnsubscribe.Visible = false; pnlInfo.Visible = false; // Send info about successful unsubscription to set email String siteName = SiteContext.CurrentSiteName; EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Reporting_Unsubscription_template", siteName); if (eti != null) { // Create email EmailMessage em = new EmailMessage(); em.EmailFormat = EmailFormatEnum.Default; em.From = String.IsNullOrEmpty(eti.TemplateFrom) ? EmailHelper.Settings.NotificationsSenderAdress(siteName) : eti.TemplateFrom;; em.Recipients = rsi.ReportSubscriptionEmail; em.Subject = eti.TemplateSubject; em.BccRecipients = eti.TemplateBcc; em.CcRecipients = eti.TemplateCc; MacroResolver resolver = ReportSubscriptionSender.CreateSubscriptionMacroResolver(ri, rsi, SiteContext.CurrentSite, em.Recipients); em.Body = resolver.ResolveMacros(eti.TemplateText); em.PlainTextBody = resolver.ResolveMacros(eti.TemplatePlainText); EmailHelper.ResolveMetaFileImages(em, eti.TemplateID, EmailTemplateInfo.OBJECT_TYPE, ObjectAttachmentsCategories.TEMPLATE); EmailSender.SendEmail(siteName, em); } } }
protected void btnUnsubscribe_click(object sender, EventArgs ea) { // Validate email if (String.IsNullOrEmpty(mEmail) || !ValidationHelper.IsEmail(mEmail)) { ShowError(GetString("om.contact.enteremail")); return; } // Delete subscription if email is valid if (mReportSubscriptionInfo != null) { if (mReportSubscriptionInfo.ReportSubscriptionEmail.Trim() != mEmail) { ShowError(GetString("reportsubscription.emailnotmatch")); return; } ReportSubscriptionInfoProvider.DeleteReportSubscriptionInfo(mReportSubscriptionInfo.ReportSubscriptionID); ShowInformation(GetString("reportsubscription.unsubscription.success")); btnUnsubscribe.Visible = false; pnlInfo.Visible = false; // Send info about successful unsubscription to set email String siteName = SiteContext.CurrentSiteName; EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Reporting_Unsubscription_template", siteName); if (eti != null) { // Create email EmailMessage em = new EmailMessage(); em.EmailFormat = EmailFormatEnum.Default; em.From = EmailHelper.Settings.NotificationsSenderAddress(siteName); em.Recipients = mReportSubscriptionInfo.ReportSubscriptionEmail; MacroResolver resolver = ReportSubscriptionSender.CreateSubscriptionMacroResolver(mReportInfo, mReportSubscriptionInfo, SiteContext.CurrentSite, em.Recipients); EmailSender.SendEmailWithTemplateText(siteName, em, eti, resolver, false); } } }
protected override void OnInit(EventArgs e) { // Security check UseCMSDeskAccessDeniedPage = !IsLiveSite; var cui = MembershipContext.AuthenticatedUser; bool haveModify = cui.IsAuthorizedPerResource("cms.reporting", "modify"); if (!(cui.IsAuthorizedPerResource("cms.reporting", "subscribe") || haveModify)) { RedirectToAccessDenied("cms.reporting", "Subscribe"); } // Init validators rfvEmail.Text = GetString("om.contact.enteremail"); rfvSubject.Text = GetString("bizformgeneral.emptyemailsubject"); var subscriptionId = QueryHelper.GetInteger("SubscriptionID", 0); mReportSubscriptionInfo = subscriptionId > 0 ? ReportSubscriptionInfoProvider.GetReportSubscriptionInfo(QueryHelper.GetInteger("SubscriptionID", 0)) : new ReportSubscriptionInfo(); // Set edited object EditedObject = mReportSubscriptionInfo; int reportID = QueryHelper.GetInteger("ReportID", 0); string reportName = QueryHelper.GetString("reportName", String.Empty); if (reportID != 0) { Report = ReportInfoProvider.GetReportInfo(reportID); } else if (!String.IsNullOrEmpty(reportName)) { Report = ReportInfoProvider.GetReportInfo(reportName); } else { if (mReportSubscriptionInfo.ReportSubscriptionID > 0) { // If no report specified, get it from subscription Report = ReportInfoProvider.GetReportInfo(mReportSubscriptionInfo.ReportSubscriptionReportID); } } if ((mReportSubscriptionInfo.ReportSubscriptionID > 0) && !haveModify && !SimpleMode) { if (mReportSubscriptionInfo.ReportSubscriptionUserID != cui.UserID) { RedirectToAccessDenied(GetString("reportsubscription.onlymodifyusersallowed")); } } if (Report == null) { return; } // Set interval control for subscription mode ucInterval.DisplayStartTime = false; ucInterval.DisplayOnce = false; ucInterval.DisplaySecond = false; if (!RequestHelper.IsPostBack()) { drpLast.Items.Add(new ListItem(GetString("reportsubscription.hours"), "hour")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.days"), "day")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.weeks"), "week")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.months"), "month")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.years"), "year")); } if (SimpleMode) { LoadAdHoc(); } else { LoadData(); } // Show save changes after new object created if (!RequestHelper.IsPostBack() && QueryHelper.GetBoolean("saved", false)) { ShowChangesSaved(); } base.OnInit(e); }
/// <summary> /// Saves the control. Returns false, if error occurred. /// </summary> public bool Save() { // Validates input data String error = ValidateData(); if (!String.IsNullOrEmpty(error)) { ShowError(error); return(false); } if (Report != null) { bool isNew = false; if (mReportSubscriptionInfo.ReportSubscriptionID <= 0) { // Insert mode - initialize reportSubscriptionID mReportSubscriptionInfo.ReportSubscriptionUserID = MembershipContext.AuthenticatedUser.UserID; mReportSubscriptionInfo.ReportSubscriptionSiteID = SiteContext.CurrentSiteID; mReportSubscriptionInfo.ReportSubscriptionSettings["ReportInterval"] = mIntervalStr; isNew = true; } if (!SimpleMode) { // Save basic form & validates basic form data if (!formElem.SaveData(null)) { return(false); } // Store all parameters in basic form to string XML representation mParameters = formElem.DataRow; mReportSubscriptionInfo.ReportSubscriptionValueID = 0; mReportSubscriptionInfo.ReportSubscriptionTableID = 0; mReportSubscriptionInfo.ReportSubscriptionGraphID = 0; // If subscription is not for whole report, store item ID string drpValue = drpItems.SelectedValue; if (drpValue != "all") { int id = ValidationHelper.GetInteger(drpValue.Substring(1), 0); if (drpValue.Contains('g')) { mReportSubscriptionInfo.ReportSubscriptionGraphID = id; } if (drpValue.Contains('t')) { mReportSubscriptionInfo.ReportSubscriptionTableID = id; } if (drpValue.Contains('v')) { mReportSubscriptionInfo.ReportSubscriptionValueID = id; } } } else { mReportSubscriptionInfo.ReportSubscriptionGraphID = mGraphID; mReportSubscriptionInfo.ReportSubscriptionTableID = mTableID; mReportSubscriptionInfo.ReportSubscriptionValueID = mValueID; } if (mParameters != null) { // Find special 'from' and 'to' parameters. DataColumn dcFrom = mParameters.Table.Columns["fromdate"]; DataColumn dcTo = mParameters.Table.Columns["todate"]; if (rbTime.Checked) { if (dcTo != null) { // Convert column from datetime to string to enable store macros mParameters.Table.Columns.Remove(dcTo.ColumnName); mParameters.Table.Columns.Add(dcTo.ColumnName, typeof(String)); // Add current date time macro mParameters[dcTo.ColumnName] = "{%CurrentDateTime%}"; } // Create right macro datetime command based on given interval. String command = String.Empty; switch (drpLast.SelectedValue) { case "hour": command = "AddHours"; break; case "day": command = "AddDays"; break; case "week": command = "AddWeeks"; break; case "month": command = "AddMonths"; break; case "year": command = "AddYears"; break; } // Create todate macro int last = ValidationHelper.GetInteger(txtLast.Text.Trim(), 0); String dateCommand = String.Format("{{%CurrentDateTime.{0}({1})%}}", command, last * (-1)); // Convert fromdate to string if (dcFrom != null) { mParameters.Table.Columns.Remove(dcFrom.ColumnName); mParameters.Table.Columns.Add(dcFrom.ColumnName, typeof(String)); mParameters[dcFrom.ColumnName] = dateCommand; } } else { // Empty fromdate and todate for uncheck limit date if (dcFrom != null) { mParameters[dcFrom.ColumnName] = DBNull.Value; } if (dcTo != null) { mParameters[dcTo.ColumnName] = DBNull.Value; } } // Write parameters to XML string representation mReportSubscriptionInfo.ReportSubscriptionParameters = ReportHelper.WriteParametersToXml(mParameters); } String email = txtEmail.Text.Trim(); bool emailChanged = mReportSubscriptionInfo.ReportSubscriptionEmail != email; mReportSubscriptionInfo.ReportSubscriptionEnabled = chkEnabled.Checked; mReportSubscriptionInfo.ReportSubscriptionReportID = Report.ReportID; mReportSubscriptionInfo.ReportSubscriptionInterval = ucInterval.ScheduleInterval; mReportSubscriptionInfo.ReportSubscriptionEmail = email; mReportSubscriptionInfo.ReportSubscriptionSubject = txtSubject.Text; mReportSubscriptionInfo.ReportSubscriptionCondition = ucMacroEditor.Text; mReportSubscriptionInfo.ReportSubscriptionOnlyNonEmpty = chkNonEmpty.Checked; mReportSubscriptionInfo.ReportSubscriptionNextPostDate = SchedulingHelper.GetFirstRunTime(ucInterval.TaskInterval); ReportSubscriptionInfoProvider.SetReportSubscriptionInfo(mReportSubscriptionInfo); // Check whether email changed (applies for new subscription also) if (emailChanged) { String siteName = SiteContext.CurrentSiteName; EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Reporting_Subscription_information", siteName); if (eti != null) { // Send information email EmailMessage em = new EmailMessage(); em.EmailFormat = EmailFormatEnum.Default; em.From = String.IsNullOrEmpty(eti.TemplateFrom) ? EmailHelper.Settings.NotificationsSenderAddress(siteName) : eti.TemplateFrom; em.Recipients = email; em.Subject = eti.TemplateSubject; em.BccRecipients = eti.TemplateBcc; em.CcRecipients = eti.TemplateCc; MacroResolver resolver = ReportSubscriptionSender.CreateSubscriptionMacroResolver(Report, mReportSubscriptionInfo, SiteContext.CurrentSite, em.Recipients); em.Body = resolver.ResolveMacros(eti.TemplateText); em.PlainTextBody = resolver.ResolveMacros(eti.TemplatePlainText); EmailHelper.ResolveMetaFileImages(em, eti.TemplateID, EmailTemplateInfo.OBJECT_TYPE, ObjectAttachmentsCategories.TEMPLATE); EmailSender.SendEmail(siteName, em); } } // For new item and advanced mode redirect to store ID in query string if ((isNew) && (!SimpleMode)) { URLHelper.Redirect(RequestContext.CurrentURL + "&saved=1&subscriptionid=" + mReportSubscriptionInfo.ReportSubscriptionID); } ShowChangesSaved(); return(true); } return(false); }
/// <summary> /// Checks if given subscription is for current user. /// </summary> /// <param name="subscriptionID">Subscription ID</param> /// <returns>True if subscription belongs to user, false if not</returns> private bool CheckSecurity(int subscriptionID) { ReportSubscriptionInfo rsi = ReportSubscriptionInfoProvider.GetReportSubscriptionInfo(subscriptionID); return(rsi.ReportSubscriptionUserID == UserID); }
protected override void OnInit(EventArgs e) { UseCMSDeskAccessDeniedPage = !IsLiveSite; CurrentUserInfo cui = CMSContext.CurrentUser; bool haveModify = cui.IsAuthorizedPerResource("cms.reporting", "modify"); if (!(cui.IsAuthorizedPerResource("cms.reporting", "subscribe") || haveModify)) { RedirectToAccessDenied("cms.reporting", "Subscribe"); } pnlBasic.GroupingText = GetString("reportsubscription.settings"); pnlParameters.GroupingText = GetString("reportsubscription.parameters.title"); // Init validator rfvEmail.Text = GetString("om.contact.enteremail"); rfvSubject.Text = GetString("bizformgeneral.emptyemailsubject"); rsi = ReportSubscriptionInfoProvider.GetReportSubscriptionInfo(QueryHelper.GetInteger("SubscriptionID", 0)); int reportID = QueryHelper.GetInteger("ReportID", 0); String reportName = QueryHelper.GetString("reportName", String.Empty); if (reportID != 0) { ri = ReportInfoProvider.GetReportInfo(reportID); } else if (!String.IsNullOrEmpty(reportName)) { ri = ReportInfoProvider.GetReportInfo(reportName); } else { if (rsi != null) { // If no report specified, get it from subscription ri = ReportInfoProvider.GetReportInfo(rsi.ReportSubscriptionReportID); } } if ((rsi != null) && !haveModify && !SimpleMode) { if (rsi.ReportSubscriptionUserID != cui.UserID) { RedirectToAccessDenied(GetString("reportsubscription.onlymodifyusersallowed")); } } if (ri == null) { return; } // Set interval control for subscription mode ucInterval.DisplayStartTime = false; ucInterval.DisplayOnce = false; ucInterval.DisplaySecond = false; if (!RequestHelper.IsPostBack()) { drpLast.Items.Add(new ListItem(GetString("reportsubscription.hours"), "hour")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.days"), "day")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.weeks"), "week")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.months"), "month")); drpLast.Items.Add(new ListItem(GetString("reportsubscription.years"), "year")); } if (SimpleMode) { LoadAdHoc(); } else { LoadData(); } // Show save changes after new object created if (!RequestHelper.IsPostBack() && (QueryHelper.GetBoolean("saved", false) == true)) { ShowChangesSaved(); } base.OnInit(e); }