Пример #1
0
    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);
        }
    }
Пример #2
0
    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");
    }
Пример #3
0
    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;
            }
        }
    }
Пример #5
0
    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);
            }
        }
    }
Пример #6
0
    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);
            }
        }
    }
Пример #7
0
    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);
    }
Пример #8
0
    /// <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);
    }
Пример #10
0
    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);
    }