protected void Page_Load(object sender, EventArgs e)
    {
        // Check read permission
        ContactHelper.AuthorizedReadContact(CMSContext.CurrentSiteID, true);

        string siteName = CMSContext.CurrentSiteName;

        // Get bounce limit
        mBounceLimit = SettingsKeyProvider.GetIntValue(siteName + ".CMSBouncedEmailsLimit");
        // Get info if bounced e-mail tracking is available
        mBounceInfoAvailable = SettingsKeyProvider.GetBoolValue(siteName + ".CMSMonitorBouncedEmails") &&
                               NewsletterProvider.OnlineMarketingEnabled(siteName);

        CurrentMaster.HeaderActions.HelpTopicName = "subscribercontacts_tab";
        CurrentMaster.HeaderActions.HelpName      = "helpTopic";

        // Check if parent object exist
        Subscriber sb = SubscriberProvider.GetSubscriber(QueryHelper.GetInteger("subscriberid", 0));

        EditedObject = sb;

        // Initialize unigrid
        UniGrid.OnAction            += uniGrid_OnAction;
        UniGrid.OnExternalDataBound += uniGrid_OnExternalDataBound;
        UniGrid.WhereCondition       = "ContactID IN (SELECT ContactGroupMemberRelatedID FROM OM_ContactGroupMember WHERE ContactGroupMemberContactGroupID = "
                                       + QueryHelper.GetInteger("groupid", 0) + " AND ContactGroupMemberType = 0) AND ContactSiteID = " + CMSContext.CurrentSiteID
                                       + " AND ContactMergedWithContactID IS NULL";
        UniGrid.ShowObjectMenu = false;
    }
Esempio n. 2
0
    /// <summary>
    /// DataForm's OnAfterValidate event handler.
    /// </summary>
    protected void formCustomFields_OnAfterValidate(object sender, EventArgs e)
    {
        // Get subscriber's email
        FormEngineUserControl control = (FormEngineUserControl)formCustomFields.BasicForm.FieldControls["SubscriberEmail"];

        if (control != null)
        {
            string mail = ValidationHelper.GetString(control.Value, String.Empty).Trim();
            // Get original subscriber
            Subscriber subscriberObj = SubscriberProvider.GetSubscriber(subscriberId);
            if (subscriberObj != null)
            {
                // Check the email changes
                if ((subscriberObj.SubscriberEmail.ToLower() != mail.ToLower()) && (SubscriberProvider.EmailExists(mail)))
                {
                    // Show error message if the email address is already used by another subscriber
                    formCustomFields.BasicForm.StopProcessing = true;
                    lblError.Visible = true;
                    lblError.Text    = GetString("Subscriber_Edit.EmailAlreadyExists");
                }
            }
            else
            {
                formCustomFields.BasicForm.StopProcessing = true;
                lblError.Visible = true;
                lblError.Text    = GetString("Subscriber_Edit.SubscriberDoesNotExists");
            }
        }
    }
Esempio n. 3
0
    /// <summary>
    /// Sets data to database.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check "Manage subscribers" permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "managesubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "managesubscribers");
        }

        string email = txtSubscriberEmail.Text.Trim();

        // Check entered values
        string errorMessage = new Validator().NotEmpty(email, GetString("Subscriber_Edit.ErrorEmptyEmail"))
                              .IsEmail(email, GetString("NewsletterSubscription.ErrorInvalidEmail"))
                              .Result;

        if (string.IsNullOrEmpty(errorMessage))
        {
            if (!SubscriberProvider.EmailExists(email))
            {
                // Create new subscriber info and set values
                Subscriber subscriberObj = new Subscriber();

                subscriberObj.SubscriberID        = 0;
                subscriberObj.SubscriberLastName  = txtSubscriberLastName.Text.Trim();
                subscriberObj.SubscriberEmail     = email;
                subscriberObj.SubscriberFirstName = txtSubscriberFirstName.Text.Trim();
                subscriberObj.SubscriberFullName  = (subscriberObj.SubscriberFirstName + " " + subscriberObj.SubscriberLastName).Trim();
                subscriberObj.SubscriberSiteID    = CMSContext.CurrentSiteID;
                subscriberObj.SubscriberGUID      = Guid.NewGuid();

                if (SubscriberProvider.LicenseVersionCheck(URLHelper.GetCurrentDomain(), FeatureEnum.Subscribers, VersionActionEnum.Insert))
                {
                    // Save subscriber to DB
                    SubscriberProvider.SetSubscriber(subscriberObj);
                    // Redirect to edit page
                    URLHelper.Redirect("Subscriber_Frameset.aspx?subscriberid=" + Convert.ToString(subscriberObj.SubscriberID) + "&saved=1");
                }
                else
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("LicenseVersionCheck.Subscribers");
                }
            }
            else
            {
                lblError.Visible = true;
                lblError.Text    = GetString("Subscriber_Edit.EmailAlreadyExists");
            }
        }
        else
        {
            lblError.Visible = true;
            lblError.Text    = errorMessage;
        }
    }
Esempio n. 4
0
    /// <summary>
    /// Handles multiple selector actions.
    /// </summary>
    protected void btnOk_Clicked(object sender, EventArgs e)
    {
        // Check permissions
        CheckAuthorization();

        if (drpActions.SelectedValue != "SELECT")
        {
            // Go through all selected items
            ArrayList list = UniGridSubscribers.SelectedItems;
            if (list.Count > 0)
            {
                SubscriberNewsletterInfo sni = null;
                foreach (object subscriberId in list)
                {
                    sni = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(ValidationHelper.GetInteger(subscriberId, 0), newsletterId);
                    if (sni != null)
                    {
                        switch (drpActions.SelectedValue)
                        {
                        // Remove subscription
                        case "REMOVE":
                            SubscriberProvider.Unsubscribe(sni, chkSendConfirmation.Checked);
                            break;

                        // Approve subscription
                        case "APPROVE":
                            if (!sni.SubscriptionApproved)
                            {
                                sni.SubscriptionApproved     = true;
                                sni.SubscriptionApprovedWhen = DateTime.Now;
                                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(sni);
                            }
                            break;

                        // Reject subscription
                        case "REJECT":
                            if (sni.SubscriptionApproved)
                            {
                                sni.SubscriptionApproved     = false;
                                sni.SubscriptionApprovedWhen = DateTime.MinValue;
                                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(sni);
                            }
                            break;
                        }
                    }
                }
            }
            else
            {
                ltlScript.Text += ScriptHelper.GetAlertScript(GetString("general.noitems"));
            }
        }
        UniGridSubscribers.ResetSelection();
        UniGridSubscribers.ReloadData();
    }
Esempio n. 5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string currentSubscriber = GetString("Subscriber_Edit.NewItemCaption");

        // Get subscriber id from querystring
        subscriberId = QueryHelper.GetInteger("subscriberid", 0);

        // Get subscriber object
        Subscriber subscriberObj = SubscriberProvider.GetSubscriber(subscriberId);

        if (subscriberObj != null)
        {
            if (!DataHelper.IsEmpty(subscriberObj.SubscriberEmail))
            {
                // Get e-mail for breadcrumbs
                currentSubscriber = subscriberObj.SubscriberEmail;
            }
            else
            {
                string type = null;
                switch (subscriberObj.SubscriberType)
                {
                case SiteObjectType.USER:
                    type = GetString("objecttype.cms_user");
                    break;

                case SiteObjectType.ROLE:
                    type = GetString("objecttype.cms_role");
                    break;

                case PredefinedObjectType.CONTACTGROUP:
                    type = GetString("objecttype.om_contactgroup");
                    break;
                }

                // Get first, last names and type for breadcrumbs
                currentSubscriber = string.Format("{0} ({1})", string.Concat(subscriberObj.SubscriberFirstName, " ", subscriberObj.SubscriberLastName), type.ToLower());
            }
        }

        // Initializes page title
        string[,] breadcrumbs = new string[2, 3];
        breadcrumbs[0, 0]     = GetString("Subscriber_Edit.ItemListLink");
        breadcrumbs[0, 1]     = "~/CMSModules/Newsletters/Tools/Subscribers/Subscriber_List.aspx";
        breadcrumbs[0, 2]     = "newslettersContent";
        breadcrumbs[1, 0]     = currentSubscriber;

        CurrentMaster.Title.Breadcrumbs   = breadcrumbs;
        CurrentMaster.Title.HelpTopicName = "general_tab2";
        CurrentMaster.Title.HelpName      = "helpTopic";

        // Initialize tabs
        InitalizeMenu(subscriberObj);
    }
Esempio n. 6
0
    /// <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 UniGridSubscribers_OnAction(string actionName, object actionArgument)
    {
        // Check 'manage subscribers' permission
        CheckAuthorization();

        int subscriberId = ValidationHelper.GetInteger(actionArgument, 0);

        switch (actionName.ToLower())
        {
        // Unsubscribe selected subscriber
        case "remove":
            SubscriberProvider.Unsubscribe(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Approve selected subscription
        case "approve":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (!subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = true;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.Now;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;

        // Reject selected subscription
        case "reject":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = false;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.MinValue;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;

        // Block selected subscriber
        case "block":
            SubscriberProvider.BlockSubscriber(subscriberId);
            break;

        // Un-block selected subscriber
        case "unblock":
            SubscriberProvider.UnblockSubscriber(subscriberId);
            break;
        }
    }
Esempio n. 7
0
    /// <summary>
    /// Uniselector item selected event handler.
    /// </summary>
    protected void UniSelector_OnItemsSelected(object sender, EventArgs e)
    {
        // Check permissions
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "ManageSubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "ManageSubscribers");
        }

        // Get new items from selector
        string newValues = ValidationHelper.GetString(selectNewsletter.Value, null);

        string[] newItems = null;
        SubscriberNewsletterInfo subscription = null;
        Newsletter newsletter   = null;
        int        newsletterId = 0;

        newItems = newValues.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
        if (newItems != null)
        {
            // Get all selected newsletters
            foreach (string item in newItems)
            {
                newsletterId = ValidationHelper.GetInteger(item, 0);

                // Get subscription
                subscription = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);

                // If not already subscribed
                if (subscription == null)
                {
                    newsletter = NewsletterProvider.GetNewsletter(newsletterId);

                    // Subscribe role
                    if (isRoleORContactGroup)
                    {
                        SubscriberProvider.Subscribe(subscriberId, newsletterId, DateTime.Now, chkSendConfirmation.Checked, false);
                    }
                    // Subscribe users and subscribers
                    else
                    {
                        SubscriberProvider.Subscribe(subscriberId, newsletterId, DateTime.Now, chkSendConfirmation.Checked, chkRequireOptIn.Checked);
                    }
                }
            }
        }

        selectNewsletter.Value = null;
        unigridNewsletters.ReloadData();
        pnlUpdate.Update();
    }
Esempio n. 8
0
    /// <summary>
    /// Creates and sends unsubscription e-mail.
    /// </summary>
    /// <param name="subscriber">Subscriber object</param>
    /// <param name="news">Newsletter object</param>
    /// <param name="subscription">Subscription object</param>
    /// <param name="siteName">Site name</param>
    protected void SendUnsubscriptionRequest(Subscriber subscriber, Newsletter news, SubscriberNewsletterInfo subscription, string siteName)
    {
        // Get global e-mail template with unsubscription request
        EmailTemplateInfo et = CMS.EmailEngine.EmailTemplateProvider.GetEmailTemplate("newsletter.unsubscriptionrequest", siteName);

        if (et != null)
        {
            // Get subscriber member
            SortedDictionary <int, Subscriber> subscribers = SubscriberProvider.GetSubscribers(subscriber, 1, 0);
            foreach (KeyValuePair <int, Subscriber> item in subscribers)
            {
                // Get 1st subscriber's member
                Subscriber sb = item.Value;

                string body      = et.TemplateText;
                string plainBody = et.TemplatePlainText;

                // Resolve newsletter macros (first name, last name etc.)
                IssueHelper ih = new IssueHelper();
                if (ih.LoadDynamicFields(sb, news, subscription, null, false, siteName, null, null, null))
                {
                    body      = ih.ResolveDynamicFieldMacros(body);
                    plainBody = ih.ResolveDynamicFieldMacros(plainBody);
                }

                // Create e-mail
                EmailMessage msg = new EmailMessage();
                msg.EmailFormat   = EmailFormatEnum.Default;
                msg.From          = EmailHelper.GetSender(et, news.NewsletterSenderEmail);
                msg.Recipients    = sb.SubscriberEmail;
                msg.BccRecipients = et.TemplateBcc;
                msg.CcRecipients  = et.TemplateCc;
                msg.Subject       = ResHelper.LocalizeString(et.TemplateSubject);
                msg.Body          = URLHelper.MakeLinksAbsolute(body);
                msg.PlainTextBody = URLHelper.MakeLinksAbsolute(plainBody);

                // Add attachments and send e-mail
                MetaFileInfoProvider.ResolveMetaFileImages(msg, et.TemplateID, EmailObjectType.EMAILTEMPLATE, MetaFileInfoProvider.OBJECT_CATEGORY_TEMPLATE);

                EmailSender.SendEmail(siteName, msg);
            }
        }
        else
        {
            // Log missing template
            EventLogProvider ev = new EventLogProvider();
            ev.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "UnsubscriptionRequest", "Unsubscription request e-mail template is missing.");
        }
    }
    /// <summary>
    /// Handles export button click.
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">Event arguments</param>
    protected void btnExport_Click(object sender, EventArgs e)
    {
        // Check "manage subscribers" permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "managesubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "managesubscribers");
        }

        // Get selected newsletters
        ArrayList newsletterIds = new ArrayList();
        string    values        = ValidationHelper.GetString(usNewsletters.Value, null);

        if (!String.IsNullOrEmpty(values))
        {
            string[] newItems = values.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                foreach (string item in newItems)
                {
                    newsletterIds.Add(ValidationHelper.GetInteger(item, 0));
                }
            }
        }

        // Export subscribers
        string subscribers = null;

        if (CMSContext.CurrentSite != null)
        {
            subscribers = SubscriberProvider.ExportSubscribersFromSite(newsletterIds, CMSContext.CurrentSiteID, true, ValidationHelper.GetInteger(rblExportList.SelectedValue, 0));
        }

        // No subscribers exported
        if (string.IsNullOrEmpty(subscribers))
        {
            lblInfo.Text         = GetString("Subscriber_Export.noSubscribersExported");
            lblInfo.Visible      = true;
            txtExportSub.Enabled = false;
        }
        else
        {
            lblInfo.Text         = GetString("Subscriber_Export.subscribersExported");
            lblInfo.Visible      = true;
            txtExportSub.Enabled = true;
        }

        txtExportSub.Text = subscribers;
    }
Esempio n. 10
0
    protected void Page_Load(object sender, EventArgs e)
    {
        subscriberId = QueryHelper.GetInteger("subscriberid", 0);
        // Get subscriber by its ID and check its existence
        Subscriber subscriberObj = SubscriberProvider.GetSubscriber(subscriberId);

        EditedObject = subscriberObj;

        // Check if it is role or contact group subscriber
        isRoleORContactGroup = (subscriberObj.SubscriberRelatedID > 0) && (subscriberObj.SubscriberType != null) &&
                               (subscriberObj.SubscriberType.Equals(SiteObjectType.ROLE, StringComparison.InvariantCultureIgnoreCase) ||
                                subscriberObj.SubscriberType.Equals(PredefinedObjectType.CONTACTGROUP, StringComparison.InvariantCultureIgnoreCase));

        // Initialize page controls
        CurrentMaster.DisplayActionsPanel  = true;
        CurrentMaster.DisplayControlsPanel = true;
        chkRequireOptIn.TextAlign          = TextAlign.Right;
        chkSendConfirmation.TextAlign      = TextAlign.Right;

        // Initialize uniselector for newsletters
        selectNewsletter.UniSelector.SelectionMode    = SelectionModeEnum.MultipleButton;
        selectNewsletter.UniSelector.OnItemsSelected += new EventHandler(UniSelector_OnItemsSelected);
        selectNewsletter.UniSelector.ReturnColumnName = "NewsletterID";
        selectNewsletter.UniSelector.ButtonImage      = GetImageUrl("Objects/Newsletter_Newsletter/add.png");
        selectNewsletter.ImageDialog.CssClass         = "NewItemImage";
        selectNewsletter.LinkDialog.CssClass          = "NewItemLink";
        selectNewsletter.ShowSiteFilter        = false;
        selectNewsletter.ResourcePrefix        = "newsletterselect";
        selectNewsletter.DialogButton.CssClass = "LongButton";
        selectNewsletter.IsLiveSite            = false;

        // Initialize unigrid
        unigridNewsletters.WhereCondition       = "SubscriberID = " + subscriberId.ToString();
        unigridNewsletters.OnAction            += new OnActionEventHandler(unigridNewsletters_OnAction);
        unigridNewsletters.OnExternalDataBound += new OnExternalDataBoundEventHandler(unigridNewsletters_OnExternalDataBound);

        // Initialize mass actions
        if (drpActions.Items.Count == 0)
        {
            drpActions.Items.Add(new ListItem(GetString("general.selectaction"), "SELECT"));
            drpActions.Items.Add(new ListItem(GetString("general.approve"), "APPROVE"));
            drpActions.Items.Add(new ListItem(GetString("general.reject"), "REJECT"));
            drpActions.Items.Add(new ListItem(GetString("general.remove"), "REMOVE"));
        }
    }
Esempio n. 11
0
    /// <summary>
    /// DataForm's OnAfterSave event handler.
    /// </summary>
    protected void formCustomFields_OnAfterSave(object sender, EventArgs e)
    {
        if (!formCustomFields.BasicForm.StopProcessing)
        {
            // Save with provider to log synchronization
            Subscriber subscriberObj = SubscriberProvider.GetSubscriber(subscriberId);
            EditedObject = subscriberObj;

            subscriberObj.SubscriberFullName = (subscriberObj.SubscriberFirstName + " " + subscriberObj.SubscriberLastName).Trim();
            SubscriberProvider.SetSubscriber(subscriberObj);

            lblInfo.Visible = true;
            lblInfo.Text    = GetString("General.ChangesSaved");

            // Refresh header with display name
            ScriptHelper.RefreshTabHeader(Page, null);
        }
    }
Esempio n. 12
0
    /// <summary>
    /// Unigrid newsletters action handler.
    /// </summary>
    protected void unigridNewsletters_OnAction(string actionName, object actionArgument)
    {
        // Check 'configure' permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "ManageSubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "ManageSubscribers");
        }

        int newsletterId = ValidationHelper.GetInteger(actionArgument, 0);

        switch (actionName.ToLower())
        {
        // Unsubscribe selected subscriber
        case "remove":
            SubscriberProvider.Unsubscribe(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Approve selected subscription
        case "approve":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (!subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = true;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.Now;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;

        // Reject selected subscription
        case "reject":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = false;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.MinValue;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;
        }
    }
Esempio n. 13
0
    /// <summary>
    /// Subscriber control items changed event.
    /// </summary>
    protected void SubscriberSelector_OnItemsSelected(object sender, EventArgs e)
    {
        // Check permissions
        CheckAuthorization();

        int subscriberID = 0;

        string[]   newItems = null;
        Subscriber sb       = null;

        // Get new items from selector
        string newValues = ValidationHelper.GetString(selectSubscriber.Value, null);

        newItems = newValues.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
        if (newItems != null)
        {
            // Add all new items to site
            foreach (string item in newItems)
            {
                subscriberID = ValidationHelper.GetInteger(item, 0);

                // Get subscriber
                sb = SubscriberProvider.GetSubscriber(subscriberID);

                // If subscriber exists and is not subscribed, subscribe him
                if ((sb != null) && (!SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId)))
                {
                    try
                    {
                        SubscriberProvider.Subscribe(sb.SubscriberID, newsletterId, DateTime.Now, chkSendConfirmation.Checked, chkRequireOptIn.Checked);
                    }
                    catch
                    {
                    }
                }
            }
        }

        selectSubscriber.Value = null;
        UniGridSubscribers.ReloadData();
        pnlUpdate.Update();
    }
Esempio n. 14
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Initialize dataform
        formCustomFields.OnAfterValidate  += formCustomFields_OnAfterValidate;
        formCustomFields.OnAfterSave      += formCustomFields_OnAfterSave;
        formCustomFields.OnBeforeValidate += formCustomFields_OnBeforeValidate;

        // Get subscriber ID from querystring
        subscriberId = QueryHelper.GetInteger("subscriberid", 0);
        if (subscriberId > 0)
        {
            if (!RequestHelper.IsPostBack())
            {
                // Get subscriber info and check its existence
                Subscriber subscriberObj = SubscriberProvider.GetSubscriber(subscriberId);
                EditedObject = subscriberObj;

                // Fill editing form only if subscriber is of standard type
                if (DataHelper.IsEmpty(subscriberObj.SubscriberType) && subscriberObj.SubscriberRelatedID == 0)
                {
                    formCustomFields.ItemID = subscriberObj.SubscriberID;

                    // Show that the subscriber was created or updated successfully
                    if (QueryHelper.GetBoolean("saved", false))
                    {
                        lblInfo.Visible = true;
                        lblInfo.Text    = GetString("General.ChangesSaved");
                    }
                }
                else
                {
                    formCustomFields.Visible = false;
                }
            }
        }
        else
        {
            formCustomFields.Visible = false;
        }
    }
Esempio n. 15
0
    private void LoadSelection(bool force)
    {
        currentValues = string.Empty;

        Subscriber sb = SubscriberProvider.GetSubscriber(email, siteId);

        if (sb != null)
        {
            // Get selected newsletters
            DataSet ds = SubscriberNewsletterInfoProvider.GetSubscriberNewsletters(sb.SubscriberID, null, -1, "NewsletterID");
            if (!DataHelper.DataSourceIsEmpty(ds))
            {
                currentValues = TextHelper.Join(";", SqlHelperClass.GetStringValues(ds.Tables[0], "NewsletterID"));
            }

            if (!RequestHelper.IsPostBack() || force)
            {
                // Load selected newsletters
                usNewsletters.Value = currentValues;
            }
        }
    }
Esempio n. 16
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string siteName = CMSContext.CurrentSiteName;

        // Get bounce limit
        mBounceLimit = SettingsKeyProvider.GetIntValue(siteName + ".CMSBouncedEmailsLimit");
        // Get info if bounced e-mail tracking is available
        mBounceInfoAvailable = SettingsKeyProvider.GetBoolValue(siteName + ".CMSMonitorBouncedEmails") &&
                               NewsletterProvider.OnlineMarketingEnabled(siteName);

        CurrentMaster.HeaderActions.HelpTopicName = "subscriberusers_tab";
        CurrentMaster.HeaderActions.HelpName      = "helpTopic";

        // Check if parent object exist
        Subscriber sb = SubscriberProvider.GetSubscriber(QueryHelper.GetInteger("subscriberid", 0));

        EditedObject = sb;

        // Initialize unigrid
        UniGrid.OnAction            += uniGrid_OnAction;
        UniGrid.OnExternalDataBound += uniGrid_OnExternalDataBound;
        UniGrid.WhereCondition       = "((RoleID = " + QueryHelper.GetInteger("roleid", 0) + ") AND (SiteID = " + CMSContext.CurrentSiteID + "))";
    }
Esempio n. 17
0
    private void usNewsletters_OnSelectionChanged(object sender, EventArgs e)
    {
        if (RaiseOnCheckPermissions("ManageSubscribers", this))
        {
            if (this.StopProcessing)
            {
                return;
            }
        }

        // Get specified user if used instead of current user
        UserInfo ui = null;

        if (this.UserID > 0)
        {
            ui = UserInfoProvider.GetUserInfo(this.UserID);
        }
        else
        {
            ui = CMSContext.CurrentUser;
        }

        // Get specified site ID instead of current site ID
        int siteId = 0;

        if (this.SiteID > 0)
        {
            siteId = this.SiteID;
        }
        else
        {
            siteId = CMSContext.CurrentSiteID;
        }

        if ((sb == null) && (ui != null))
        {
            // Create new subsciber (bind to existing user account)
            if ((!ui.IsPublic()) && (ValidationHelper.IsEmail(ui.Email) || ValidationHelper.IsEmail(ui.UserName)))
            {
                sb = new Subscriber();
                if (ui != null)
                {
                    if (!string.IsNullOrEmpty(ui.FirstName) && !string.IsNullOrEmpty(ui.LastName))
                    {
                        sb.SubscriberFirstName = ui.FirstName;
                        sb.SubscriberLastName  = ui.LastName;
                    }
                    else
                    {
                        sb.SubscriberFirstName = ui.FullName;
                    }
                    // Full name consists of "user " and user full name
                    sb.SubscriberFullName = "User '" + ui.FullName + "'";
                }

                sb.SubscriberSiteID    = siteId;
                sb.SubscriberType      = SiteObjectType.USER;
                sb.SubscriberRelatedID = ui.UserID;
                // Save subscriber to DB
                SubscriberProvider.SetSubscriber(sb);
            }
        }

        if (sb == null)
        {
            return;
        }

        // Remove old items
        int    newsletterId = 0;
        string newValues    = ValidationHelper.GetString(usNewsletters.Value, null);
        string items        = DataHelper.GetNewItemsInList(newValues, currentValues);

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                foreach (string item in newItems)
                {
                    newsletterId = ValidationHelper.GetInteger(item, 0);

                    // If subscriber is subscribed, unsubscribe him
                    if (SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId))
                    {
                        SubscriberProvider.Unsubscribe(sb.SubscriberID, newsletterId, SendConfirmationEmail);
                        // Log activity
                        LogActivity(ui, newsletterId, false, siteId);
                    }
                }
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(currentValues, newValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                foreach (string item in newItems)
                {
                    newsletterId = ValidationHelper.GetInteger(item, 0);

                    // If subscriber is not subscribed, subscribe him
                    if (!SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId))
                    {
                        try
                        {
                            SubscriberProvider.Subscribe(sb.SubscriberID, newsletterId, DateTime.Now, SendConfirmationEmail);
                            // Log activity
                            LogActivity(ui, newsletterId, true, siteId);
                        }
                        catch { }
                    }
                }
            }
        }

        // Display information about successful (un)subscription
        this.lblInfoMsg.Visible = true;
    }
Esempio n. 18
0
    /// <summary>
    /// Load data.
    /// </summary>
    public void LoadData()
    {
        if (this.StopProcessing)
        {
            // Hide control
            this.Visible = false;
        }
        else
        {
            this.SetContext();

            // Get specified user if used instead of current user
            UserInfo ui = null;
            if (this.UserID > 0)
            {
                ui = UserInfoProvider.GetUserInfo(this.UserID);
            }
            else
            {
                ui = CMSContext.CurrentUser;
            }

            // Get specified site ID instead of current site ID
            int siteId = 0;
            if (this.SiteID > 0)
            {
                siteId = this.SiteID;
            }
            else
            {
                siteId = CMSContext.CurrentSiteID;
            }

            usNewsletters.WhereCondition = "NewsletterSiteID = " + siteId;
            usNewsletters.ButtonRemoveSelected.CssClass = "XLongButton";
            usNewsletters.ButtonAddItems.CssClass       = "XLongButton";
            usNewsletters.OnSelectionChanged           += new EventHandler(usNewsletters_OnSelectionChanged);
            usNewsletters.IsLiveSite = this.IsLiveSite;

            this.userIsIdentified = (ui != null) && (!ui.IsPublic()) && (ValidationHelper.IsEmail(ui.Email) || ValidationHelper.IsEmail(ui.UserName));
            if (this.userIsIdentified)
            {
                usNewsletters.Visible = true;

                // Try to get subsriber info with specified e-mail
                sb = SubscriberProvider.GetSubscriber(ui.Email, siteId);
                if (sb == null)
                {
                    // Try to get subscriber info according to user info
                    sb = SubscriberProvider.GetSubscriber(SiteObjectType.USER, ui.UserID, siteId);
                }

                // Get user e-mail address
                if (sb != null)
                {
                    subscriberEmail = sb.SubscriberEmail;

                    // Get selected newsletters
                    DataSet ds = SubscriberNewsletterInfoProvider.GetSubscriberNewsletters(sb.SubscriberID, null, -1, "NewsletterID");
                    if (!DataHelper.DataSourceIsEmpty(ds))
                    {
                        currentValues = TextHelper.Join(";", SqlHelperClass.GetStringValues(ds.Tables[0], "NewsletterID"));
                    }

                    // Load selected newsletters
                    if (!string.IsNullOrEmpty(currentValues))
                    {
                        usNewsletters.Value = currentValues;
                    }
                }

                // Try to get email address from user data
                if (string.IsNullOrEmpty(subscriberEmail))
                {
                    if (ValidationHelper.IsEmail(ui.Email))
                    {
                        subscriberEmail = ui.Email;
                    }
                    else if (ValidationHelper.IsEmail(ui.UserName))
                    {
                        subscriberEmail = ui.UserName;
                    }
                }
            }
            else
            {
                usNewsletters.Visible = false;

                lblInfo.Visible = true;

                if ((this.UserID > 0) && (CMSContext.CurrentUser.UserID == this.UserID))
                {
                    lblInfo.Text = GetString("MySubscriptions.CannotIdentify");
                }
                else
                {
                    lblInfo.Text = GetString("MySubscriptions.CannotIdentifyUser");
                }
            }

            this.ReleaseContext();
        }
    }
Esempio n. 19
0
    /// <summary>
    /// Contact group items selected event handler.
    /// </summary>
    protected void selector_OnItemsSelected(object sender, EventArgs e)
    {
        // Check permissions
        CheckAuthorization();

        if (cgSelector == null)
        {
            return;
        }
        int groupID = 0;

        string[]   newItems = null;
        Subscriber sb       = null;
        int        siteId   = CMSContext.CurrentSiteID;
        string     cgType   = "om.contactgroup";

        // Get new items from selector
        string newValues = ValidationHelper.GetString(cgSelector.Value, null);

        // Get added items
        newItems = newValues.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
        if (newItems != null)
        {
            foreach (string item in newItems)
            {
                groupID = ValidationHelper.GetInteger(item, 0);

                // Get subscriber
                sb = SubscriberProvider.GetSubscriber(cgType, groupID, siteId);
                if (sb == null)
                {
                    // Get contact group display name
                    string cgName = ModuleCommands.OnlineMarketingGetContactGroupName(groupID);
                    if (string.IsNullOrEmpty(cgName))
                    {
                        break;
                    }

                    // Check limited number of subscribers
                    if (!SubscriberProvider.LicenseVersionCheck(URLHelper.GetCurrentDomain(), FeatureEnum.Subscribers, VersionActionEnum.Insert))
                    {
                        lblError.Text    = GetString("licenselimitations.subscribers.errormultiple");
                        lblError.Visible = true;
                        break;
                    }

                    // Create new subscriber of contact group type
                    sb = new Subscriber();
                    sb.SubscriberFirstName = cgName;
                    // Full name consists of "contact group " and display name
                    sb.SubscriberFullName  = string.Concat("Contact group '", cgName, "'");
                    sb.SubscriberSiteID    = siteId;
                    sb.SubscriberType      = cgType;
                    sb.SubscriberRelatedID = groupID;
                    SubscriberProvider.SetSubscriber(sb);
                }

                // If subscriber exists and is not subscribed, subscribe him
                if ((sb != null) && (!SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId)))
                {
                    try
                    {
                        SubscriberProvider.Subscribe(sb.SubscriberID, newsletterId, DateTime.Now, chkSendConfirmation.Checked, false);
                    }
                    catch
                    {
                    }
                }
            }
        }

        cgSelector.Value = null;
        UniGridSubscribers.ReloadData();
        pnlUpdate.Update();
    }
Esempio n. 20
0
    protected void Page_Load(object sender, EventArgs e)
    {
        Guid subscriberGuid    = QueryHelper.GetGuid("subscriberguid", Guid.Empty);
        int  newsletterIssueId = QueryHelper.GetInteger("issueid", 0);

        // Get newsletter issue
        Issue issue = IssueProvider.GetIssue(newsletterIssueId);

        if (issue == null)
        {
            return;
        }

        // Get subscriber
        Subscriber subscriber = SubscriberProvider.GetSubscriber(subscriberGuid, CMSContext.CurrentSiteID);

        // Get the newsletter
        Newsletter news = NewsletterProvider.GetNewsletter(issue.IssueNewsletterID);

        if (news == null)
        {
            return;
        }

        // Get site default culture
        string culture = CultureHelper.GetDefaultCulture(CMSContext.CurrentSiteName);

        // Ensure preview in default site culture
        // Keep old culture
        System.Globalization.CultureInfo oldUICulture = Thread.CurrentThread.CurrentUICulture;

        // Set current culture
        Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture);

        string htmlPage = String.Empty;

        try
        {
            if (subscriber != null)
            {
                // Get subscriber's member (different for user or role subscribers)
                SortedDictionary <int, Subscriber> subscribers = SubscriberProvider.GetSubscribers(subscriber, 1, 0);
                foreach (KeyValuePair <int, Subscriber> item in subscribers)
                {
                    // Get 1st subscriber's member
                    Subscriber sb = item.Value;

                    htmlPage = IssueProvider.GetEmailBody(issue, news, null, sb, true, CMSContext.CurrentSiteName, null, null, null);
                }
            }

            if (string.IsNullOrEmpty(htmlPage))
            {
                htmlPage = IssueProvider.GetEmailBody(issue, news, null, null, true, CMSContext.CurrentSiteName, null, null, null);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            // Set back to old culture
            Thread.CurrentThread.CurrentUICulture = oldUICulture;
        }

        Response.Clear();
        Response.Write(htmlPage);

        RequestHelper.EndResponse();
    }
Esempio n. 21
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        // Check email format
        string email  = txtEmail.Text.Trim();
        string result = new Validator().IsEmail(email, GetString("unsubscribe.invalidemailformat")).Result;

        if (String.IsNullOrEmpty(result))
        {
            bool requestSent = false;
            int  siteId      = 0;
            if (CMSContext.CurrentSite != null)
            {
                siteId = CMSContext.CurrentSiteID;
            }

            // Try to get all subscriber infos with given e-mail
            DataSet ds = SubscriberProvider.GetSubscribersFromView(email, siteId);
            if (!DataHelper.DataSourceIsEmpty(ds))
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    Subscriber sb = new Subscriber(dr);
                    if ((sb != null) && ((sb.SubscriberType == null) || (sb.SubscriberRelatedID > 0) && (sb.SubscriberType == SiteObjectType.USER)))
                    {
                        // Get newsletter information
                        Newsletter news = NewsletterProvider.GetNewsletter(this.NewsletterName, siteId);
                        if (news != null)
                        {
                            // Get subscription info
                            SubscriberNewsletterInfo sni = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(sb.SubscriberID, news.NewsletterID);
                            // Send e-mail to subscribed user only
                            if (sni != null)
                            {
                                SendUnsubscriptionRequest(sb, news, sni, CMSContext.CurrentSiteName);
                                requestSent = true;  // At least one request was sent
                            }
                        }
                    }
                }
            }

            // Unsubscription failed if none confirmation e-mail was sent
            if (!requestSent)
            {
                // Use default error message if none is specified
                if (String.IsNullOrEmpty(this.ErrorText))
                {
                    result = GetString("unsubscribe.notsubscribed");
                }
                else
                {
                    result = this.ErrorText;
                }
            }
        }

        // Display error message if set
        if (!string.IsNullOrEmpty(result))
        {
            lblError.Text    = result;
            lblError.Visible = true;
        }
        else
        {
            // Display unsubscription confirmation
            lblInfo.Visible = true;
            if (String.IsNullOrEmpty(this.ResultText))
            {
                // Use default message if none was specified
                lblInfo.Text = GetString("unsubscribe.confirmtext");
            }
            else
            {
                lblInfo.Text = this.ResultText;
            }
            lblError.Visible  = false;
            txtEmail.Visible  = false;
            btnSubmit.Visible = false;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // If StopProcessing flag is set, do nothing
        if (StopProcessing)
        {
            Visible = false;
            return;
        }

        string subscriptionHash = QueryHelper.GetString("subscriptionhash", string.Empty);
        string requestTime      = QueryHelper.GetString("datetime", string.Empty);

        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
            {
                lblInfo.Text = ResHelper.GetString("newsletter.approval_failed");
                return;
            }
        }

        if (string.IsNullOrEmpty(subscriptionHash))
        {
            this.Visible = false;
            return;
        }

        // Try to approve subscription
        SubscriberProvider.ApprovalResult result = SubscriberProvider.ApproveSubscription(subscriptionHash, false, CMSContext.CurrentSiteName, datetime);

        switch (result)
        {
        // Approving subscription was successful
        case SubscriberProvider.ApprovalResult.Success:
            if (!String.IsNullOrEmpty(this.SuccessfulApprovalText))
            {
                lblInfo.Text = this.SuccessfulApprovalText;
            }
            else
            {
                lblInfo.Text = ResHelper.GetString("newsletter.successful_approval");
            }

            // Log newsletter subscription activity
            if ((CMSContext.ViewMode == ViewModeEnum.LiveSite))
            {
                SubscriberNewsletterInfo sni = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriptionHash);
                if (sni != null)
                {
                    // Load subscriber info and make sure activity modul is enabled
                    Subscriber sb = SubscriberProvider.GetSubscriber(sni.SubscriberID);
                    if ((sb != null) && ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(sb.SubscriberSiteID))
                    {
                        int        siteId = sb.SubscriberSiteID;
                        Newsletter news   = NewsletterProvider.GetNewsletter(sni.NewsletterID);
                        if (news.NewsletterLogActivity && ActivitySettingsHelper.NewsletterSubscribeEnabled(siteId))
                        {
                            // Under what contacs this subscriber belogs to?
                            int contactId = ActivityTrackingHelper.GetContactID(sb);

                            if (contactId > 0)
                            {
                                ModuleCommands.OnlineMarketingUpdateContactFromExternalData(sb, contactId);
                                ModuleCommands.OnlineMarketingCreateRelation(sb.SubscriberID, MembershipType.NEWSLETTER_SUBSCRIBER, contactId);
                                var data = new ActivityData()
                                {
                                    ContactID = contactId,
                                    SiteID    = sb.SubscriberSiteID,
                                    Type      = PredefinedActivityType.NEWSLETTER_SUBSCRIBING,
                                    TitleData = news.NewsletterName,
                                    ItemID    = news.NewsletterID,
                                    URL       = URLHelper.CurrentRelativePath,
                                    Campaign  = CMSContext.Campaign
                                };
                                ActivityLogProvider.LogActivity(data);
                            }
                        }
                    }
                }
            }
            break;

        // Subscription was already approved
        case SubscriberProvider.ApprovalResult.Failed:
            if (!String.IsNullOrEmpty(this.UnsuccessfulApprovalText))
            {
                lblInfo.Text = this.UnsuccessfulApprovalText;
            }
            else
            {
                lblInfo.Text = ResHelper.GetString("newsletter.approval_failed");
            }
            break;

        case SubscriberProvider.ApprovalResult.TimeExceeded:
            if (!String.IsNullOrEmpty(this.UnsuccessfulApprovalText))
            {
                lblInfo.Text = this.UnsuccessfulApprovalText;
            }
            else
            {
                lblInfo.Text = ResHelper.GetString("newsletter.approval_timeexceeded");
            }
            break;


        // Subscription not found
        default:
        case SubscriberProvider.ApprovalResult.NotFound:
            if (!String.IsNullOrEmpty(this.UnsuccessfulApprovalText))
            {
                lblInfo.Text = this.UnsuccessfulApprovalText;
            }
            else
            {
                lblInfo.Text = ResHelper.GetString("newsletter.approval_invalid");
            }
            break;
        }
    }
Esempio n. 23
0
    /// <summary>
    /// Handles multiple selector actions.
    /// </summary>
    protected void btnOk_Clicked(object sender, EventArgs e)
    {
        // Check permissions
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "ManageSubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "ManageSubscribers");
        }
        // Return if no action was selected
        if (drpActions.SelectedValue.Equals("SELECT", StringComparison.InvariantCultureIgnoreCase))
        {
            return;
        }

        // Get selected items
        ArrayList list = unigridNewsletters.SelectedItems;

        if (list.Count == 0)
        {
            ltlScript.Text += ScriptHelper.GetAlertScript(GetString("general.noitems"));
            return;
        }

        int newsletterId;
        SubscriberNewsletterInfo subscriptionInfo;

        foreach (object id in list)
        {
            newsletterId = ValidationHelper.GetInteger(id, 0);

            switch (drpActions.SelectedValue)
            {
            // Remove subscription
            case "REMOVE":
                SubscriberProvider.Unsubscribe(subscriberId, newsletterId, chkSendConfirmation.Checked);
                break;

            // Approve subscription
            case "APPROVE":
                subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
                if ((subscriptionInfo != null) && (!subscriptionInfo.SubscriptionApproved))
                {
                    subscriptionInfo.SubscriptionApproved     = true;
                    subscriptionInfo.SubscriptionApprovedWhen = DateTime.Now;
                    SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
                }
                break;

            // Reject subscription
            case "REJECT":
                subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
                if ((subscriptionInfo != null) && (subscriptionInfo.SubscriptionApproved))
                {
                    subscriptionInfo.SubscriptionApproved     = false;
                    subscriptionInfo.SubscriptionApprovedWhen = DateTime.MinValue;
                    SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
                }
                break;
            }
        }

        unigridNewsletters.ResetSelection();
        unigridNewsletters.ReloadData();
    }
Esempio n. 24
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get data from query string
        Guid   subscriberGuid   = QueryHelper.GetGuid("subscriberguid", Guid.Empty);
        Guid   newsletterGuid   = QueryHelper.GetGuid("newsletterguid", Guid.Empty);
        string subscriptionHash = QueryHelper.GetString("subscriptionhash", string.Empty);
        Guid   issueGuid        = QueryHelper.GetGuid("issueGuid", Guid.Empty);
        int    issueID          = QueryHelper.GetInteger("issueid", 0);
        int    contactId        = QueryHelper.GetInteger("contactid", 0);
        bool   unsubscribed     = false;

        string   requestTime = QueryHelper.GetString("datetime", string.Empty);
        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
            {
                ShowError(GetString("newsletter.unsubscribefailed"));
                return;
            }
        }

        // Get site ID
        int siteId = 0;

        if (CMSContext.CurrentSite != null)
        {
            siteId = CMSContext.CurrentSiteID;
        }

        if ((subscriberGuid != Guid.Empty) && (newsletterGuid != Guid.Empty) && (siteId != 0))
        {
            Subscriber subscriber = SubscriberProvider.GetSubscriber(subscriberGuid, siteId);
            if (subscriber == null)
            {
                ShowError(GetString("Unsubscribe.SubscriberDoesNotExist"));
                return;
            }
            // Show error message if subscriber type is 'Role'
            if (!string.IsNullOrEmpty(subscriber.SubscriberType) && subscriber.SubscriberType.Equals(SiteObjectType.ROLE, StringComparison.InvariantCultureIgnoreCase))
            {
                ShowError(GetString("Unsubscribe.CannotUnsubscribeRole"));
                return;
            }

            Newsletter newsletter = NewsletterProvider.GetNewsletter(newsletterGuid, siteId);
            if (newsletter == null)
            {
                ShowError(GetString("Unsubscribe.NewsletterDoesNotExist"));
                return;
            }

            // Check if subscriber with given GUID is subscribed to specified newsletter
            if (SubscriberProvider.IsSubscribed(subscriber.SubscriberID, newsletter.NewsletterID))
            {
                bool isSubscribed = true;

                if (string.IsNullOrEmpty(subscriber.SubscriberType) || !subscriber.SubscriberType.Equals(PredefinedObjectType.CONTACTGROUP, StringComparison.InvariantCultureIgnoreCase))
                {
                    // Unsubscribe action
                    SubscriberProvider.Unsubscribe(subscriber.SubscriberID, newsletter.NewsletterID);
                }
                else
                {
                    // Check if the contact group member has unsubscription activity for the specified newsletter
                    isSubscribed = (contactId > 0) && !ModuleCommands.OnlineMarketingIsContactUnsubscribed(contactId, newsletter.NewsletterID, siteId);
                }

                if (isSubscribed)
                {
                    // Log newsletter unsubscription activity
                    LogActivity(subscriber, 0, newsletter.NewsletterID, issueID, issueGuid, siteId, contactId);

                    // Display confirmation
                    ShowInformation(GetString("Unsubscribe.Unsubscribed"));
                    unsubscribed = true;
                }
                else
                {
                    // Contact group member is already unsubscribed
                    ShowError(GetString("Unsubscribe.NotSubscribed"));
                }
            }
            else
            {
                ShowError(GetString("Unsubscribe.NotSubscribed"));
            }
        }
        // Check if subscription approval hash is supplied
        else if (!string.IsNullOrEmpty(subscriptionHash))
        {
            SubscriberNewsletterInfo sni = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriptionHash);
            // Check if hash is valid
            if (sni != null)
            {
                SubscriberProvider.ApprovalResult result = SubscriberProvider.Unsubscribe(subscriptionHash, true, CMSContext.CurrentSiteName, datetime);

                switch (result)
                {
                // Approving subscription was successful
                case SubscriberProvider.ApprovalResult.Success:
                    bool isSubscribed = true;

                    // Get subscriber
                    Subscriber subscriber = SubscriberProvider.GetSubscriber(sni.SubscriberID);
                    if ((subscriber != null) && !string.IsNullOrEmpty(subscriber.SubscriberType) && subscriber.SubscriberType.Equals(PredefinedObjectType.CONTACTGROUP, StringComparison.InvariantCultureIgnoreCase))
                    {
                        // Check if the contact group member has unsubscription activity for the specified newsletter
                        isSubscribed = (contactId > 0) && !ModuleCommands.OnlineMarketingIsContactUnsubscribed(contactId, sni.NewsletterID, siteId);
                    }

                    if (isSubscribed)
                    {
                        // Log newsletter unsubscription activity
                        LogActivity(null, sni.SubscriberID, sni.NewsletterID, issueID, issueGuid, siteId, contactId);

                        // Display confirmation
                        ShowInformation(GetString("Unsubscribe.Unsubscribed"));
                        unsubscribed = true;
                    }
                    else
                    {
                        // Contact group member is already unsubscribed
                        ShowError(GetString("Unsubscribe.NotSubscribed"));
                    }
                    break;

                // Subscription was already approved
                case SubscriberProvider.ApprovalResult.Failed:
                    ShowError(GetString("newsletter.unsubscribefailed"));
                    break;

                case SubscriberProvider.ApprovalResult.TimeExceeded:
                    ShowError(GetString("newsletter.approval_timeexceeded"));
                    break;

                // Subscription not found
                default:
                case SubscriberProvider.ApprovalResult.NotFound:
                    ShowError(GetString("Unsubscribe.NotSubscribed"));
                    break;
                }
            }
            else
            {
                ShowError(GetString("Unsubscribe.NotSubscribed"));
            }
        }
        else
        {
            if (subscriberGuid == Guid.Empty)
            {
                ShowError(GetString("Unsubscribe.SubscriberDoesNotExist"));
            }
            if (newsletterGuid == Guid.Empty)
            {
                ShowError(GetString("Unsubscribe.NewsletterDoesNotExist"));
            }
        }

        // Increase unsubscribed count
        if (unsubscribed)
        {
            // If Issue ID was provided
            if (issueID > 0)
            {
                IssueProvider.Unsubscribe(issueID);
                return;
            }
            // Otherwise try using the Issue GUID
            if (issueGuid != Guid.Empty)
            {
                Issue issue = IssueProvider.GetIssue(issueGuid, siteId);
                if (issue == null)
                {
                    return;
                }

                IssueProvider.Unsubscribe(issue.IssueID);
            }
        }
    }
 /// <summary>
 /// Un-block contact.
 /// </summary>
 private void Unblock(object actionArgument)
 {
     CheckAuthorization();
     SubscriberProvider.UnblockContact(ValidationHelper.GetInteger(actionArgument, 0));
 }
    /// <summary>
    /// Logs activity for unsubscribing.
    /// </summary>
    /// <param name="sb">Subscriber (optional - can be null if subscriber ID is used)</param>
    /// <param name="subscriberId">Subscriber ID (optional - can be zero if subscriber object is used)</param>
    /// <param name="newsletterId">Newsletter ID</param>
    /// <param name="siteId">Site ID</param>
    /// <param name="issueId">Issue ID</param>
    /// <param name="issueGuid">Issue GUID</param>
    /// <param name="contactId">Contact ID is present if the mail is sent to a contact group</param>
    private void LogActivity(Subscriber sb, int subscriberId, int newsletterId, int siteId, int issueId, Guid issueGuid, int contactId)
    {
        // Check if activities logging is enabled
        if ((newsletterId <= 0) || (CMSContext.ViewMode != ViewModeEnum.LiveSite) || !ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(siteId) ||
            !ActivitySettingsHelper.NewsletterSubscribeEnabled(siteId))
        {
            return;
        }

        // Load subscriber info object according to its ID if not given
        if (sb == null)
        {
            if (subscriberId <= 0)
            {
                return;
            }
            sb = SubscriberProvider.GetSubscriber(subscriberId);
        }

        if (sb == null)
        {
            return;
        }

        Newsletter news = NewsletterProvider.GetNewsletter(newsletterId);

        if ((news != null) && news.NewsletterLogActivity)
        {
            bool isFromContactGroup = (contactId > 0);

            // Try to retrieve contact IDs for particular subscriber from membership relations
            if (!isFromContactGroup)
            {
                contactId = ActivityTrackingHelper.GetContactID(sb);
            }

            if (contactId > 0)
            {
                // Load additional info (issue id)
                if ((issueId <= 0) && (issueGuid != Guid.Empty))
                {
                    Issue issue = IssueProvider.GetIssue(issueGuid, siteId);
                    if (issue != null)
                    {
                        issueId = issue.IssueID;
                    }
                }

                var data = new ActivityData()
                {
                    ContactID    = contactId,
                    SiteID       = sb.SubscriberSiteID,
                    Type         = PredefinedActivityType.NEWSLETTER_UNSUBSCRIBING,
                    TitleData    = news.NewsletterName,
                    ItemID       = newsletterId,
                    URL          = URLHelper.CurrentRelativePath,
                    ItemDetailID = issueId,
                    Value        = (isFromContactGroup ? "contactgroup(" + sb.SubscriberRelatedID + ")" : null)
                };
                ActivityLogProvider.LogActivity(data);
            }
        }
    }
    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    protected void SetupControl()
    {
        if (StopProcessing)
        {
            // Do nothing
        }
        else
        {
            int siteId = 0;

            // Get current id
            if (CMSContext.CurrentSite != null)
            {
                siteId = CMSContext.CurrentSiteID;
            }

            // Get subscriber and newsletter guid from query string
            Guid   subscriberGuid   = QueryHelper.GetGuid("subscriberguid", Guid.Empty);
            Guid   newsletterGuid   = QueryHelper.GetGuid("newsletterguid", Guid.Empty);
            string subscriptionHash = QueryHelper.GetString("subscriptionhash", string.Empty);
            int    issueId          = QueryHelper.GetInteger("issueid", 0);
            Guid   issueGuid        = QueryHelper.GetGuid("issueguid", Guid.Empty);
            int    contactId        = QueryHelper.GetInteger("contactid", 0);

            string   requestTime = QueryHelper.GetString("datetime", string.Empty);
            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
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("newsletter.unsubscribefailed");
                    return;
                }
            }

            // Check whether both guid exists
            if ((subscriberGuid != Guid.Empty) && (newsletterGuid != Guid.Empty))
            {
                Subscriber subscriber = SubscriberProvider.GetSubscriber(subscriberGuid, siteId);
                if (subscriber == null)
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("Unsubscribe.SubscriberDoesNotExist");
                    return;
                }
                // Show error message if subscriber type is 'Role'
                if (!string.IsNullOrEmpty(subscriber.SubscriberType) && subscriber.SubscriberType.Equals(SiteObjectType.ROLE, StringComparison.InvariantCultureIgnoreCase))
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("Unsubscriber.CannotUnsubscribeRole");
                    return;
                }

                Newsletter newsletter = NewsletterProvider.GetNewsletter(newsletterGuid, siteId);
                if (newsletter == null)
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("Unsubscribe.NewsletterDoesNotExist");
                    return;
                }

                // Check whether subscription is valid
                if (SubscriberProvider.IsSubscribed(subscriber.SubscriberID, newsletter.NewsletterID))
                {
                    bool isSubscribed = true;

                    if (string.IsNullOrEmpty(subscriber.SubscriberType) || !subscriber.SubscriberType.Equals(PredefinedObjectType.CONTACTGROUP, StringComparison.InvariantCultureIgnoreCase))
                    {
                        // Unsubscribe action
                        SubscriberProvider.Unsubscribe(subscriber.SubscriberID, newsletter.NewsletterID, SendConfirmationEmail);
                    }
                    else
                    {
                        // Check if the contact group member has unsubscription activity for the specified newsletter
                        isSubscribed = (contactId > 0) && !ModuleCommands.OnlineMarketingIsContactUnsubscribed(contactId, newsletter.NewsletterID, siteId);
                    }

                    if (isSubscribed)
                    {
                        // Log newsletter unsubscription activity
                        LogActivity(subscriber, subscriber.SubscriberID, newsletter.NewsletterID, subscriber.SubscriberSiteID, issueId, issueGuid, contactId);

                        // Display confirmation
                        DisplayConfirmation();
                    }
                    else
                    {
                        // Contact group member is already unsubscribed
                        lblError.Visible = true;
                        lblError.Text    = GetString("Unsubscribe.NotSubscribed");
                    }
                }
                else
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("Unsubscribe.NotSubscribed");
                }
            }
            // Check if subscriptionGUID is supplied
            else if (!string.IsNullOrEmpty(subscriptionHash))
            {
                // Check if given subscription exists
                SubscriberNewsletterInfo sni = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriptionHash);
                if (sni != null)
                {
                    SubscriberProvider.ApprovalResult result = SubscriberProvider.Unsubscribe(subscriptionHash, true, CMSContext.CurrentSiteName, datetime);

                    switch (result)
                    {
                    // Approving subscription was successful
                    case SubscriberProvider.ApprovalResult.Success:
                        bool isSubscribed = true;

                        // Get subscriber
                        Subscriber subscriber = SubscriberProvider.GetSubscriber(sni.SubscriberID);
                        if ((subscriber != null) && !string.IsNullOrEmpty(subscriber.SubscriberType) && subscriber.SubscriberType.Equals(PredefinedObjectType.CONTACTGROUP, StringComparison.InvariantCultureIgnoreCase))
                        {
                            // Check if the contact group member has unsubscription activity for the specified newsletter
                            isSubscribed = (contactId > 0) && !ModuleCommands.OnlineMarketingIsContactUnsubscribed(contactId, sni.NewsletterID, siteId);
                        }

                        if (isSubscribed)
                        {
                            // Log newsletter unsubscription activity
                            LogActivity(subscriber, subscriber.SubscriberID, sni.NewsletterID, siteId, issueId, issueGuid, contactId);

                            // Display confirmation
                            DisplayConfirmation();
                        }
                        else
                        {
                            // Contact group member is already unsubscribed
                            lblError.Visible = true;
                            lblError.Text    = GetString("Unsubscribe.NotSubscribed");
                        }
                        break;

                    // Subscription was already approved
                    case SubscriberProvider.ApprovalResult.Failed:
                        lblError.Visible = true;
                        lblError.Text    = GetString("newsletter.unsubscribefailed");
                        break;

                    case SubscriberProvider.ApprovalResult.TimeExceeded:
                        lblError.Visible = true;
                        lblError.Text    = GetString("newsletter.approval_timeexceeded");
                        break;

                    // Subscription not found
                    default:
                    case SubscriberProvider.ApprovalResult.NotFound:
                        lblError.Visible = true;
                        lblError.Text    = GetString("Unsubscribe.NotSubscribed");
                        break;
                    }
                }
                else
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("Unsubscribe.NotSubscribed");
                }
            }
            else
            {
                Visible = false;
            }
        }
    }
Esempio n. 28
0
    protected void Page_Load(object sender, EventArgs e)
    {
        InitGUI();

        // Get issue ID from query string
        int newsletterIssueId = QueryHelper.GetInteger("issueid", 0);

        // Get Issue object
        Issue issue = IssueProvider.GetIssue(newsletterIssueId);

        if (issue == null)
        {
            lblError.Visible = true;
            lblError.Text    = GetString("Newsletter_Issue_New_Preview.NoIssue");

            return;
        }

        // Get specific number of subscribers subscribed to the newsletter
        string where = "SubscriberID IN (SELECT SubscriberID FROM Newsletter_SubscriberNewsletter WHERE NewsletterID=" + issue.IssueNewsletterID + " AND (SubscriptionApproved = 1 OR SubscriptionApproved IS NULL))";
        DataSet subscribers = SubscriberProvider.GetSubscribers(where, null, MAX_PREVIEW_SUBSCRIBERS, null);

        string script;

        if (!DataHelper.DataSourceIsEmpty(subscribers))
        {
            // Limit max subscribers count to number of rows
            int maxCount = subscribers.Tables[0].Rows.Count;

            // Generate javascript based on subscribers
            script = string.Format(@"newsletterIssueId ={0};
                                     var guid = new Array({1});
                                     var email = new Array({1});
                                     var subject = new Array({1});
                                     var subscribers = new Array(guid, email);",
                                   newsletterIssueId,
                                   maxCount);

            // Ensure correct subject culture
            string siteName = CMSContext.CurrentSiteName;
            string culture  = CultureHelper.GetDefaultCulture(siteName);

            // Get newsletter object
            Newsletter news = NewsletterProvider.GetNewsletter(issue.IssueNewsletterID);

            // Get subject base
            string subjectBase = GetString("general.subject") + ResHelper.Colon;

            Subscriber subscriber = null;
            Subscriber sb         = null;
            SortedDictionary <int, Subscriber> subMembers = null;
            string      infoLine = null;
            string      subject  = null;
            IssueHelper ih       = new IssueHelper();

            for (int i = 0; i < maxCount; i++)
            {
                // Get subscriber
                subscriber = new Subscriber(subscribers.Tables[0].Rows[i]);
                if (subscriber != null)
                {
                    // Insert subscriber GUID
                    script = string.Format("{0} guid[{1}] = '{2}'; \n ", script, i, subscriber.SubscriberGUID);

                    // Get subscriber's member (different for user, role or contact group subscribers)
                    subMembers = SubscriberProvider.GetSubscribers(subscriber, 1, 0);
                    foreach (KeyValuePair <int, Subscriber> item in subMembers)
                    {
                        // Get 1st subscriber's member
                        sb = item.Value;
                        if (sb != null)
                        {
                            // Create information line
                            infoLine = ScriptHelper.GetString(sb.SubscriberEmail, false);

                            // Add info about subscriber type
                            if (sb.SubscriberType == SiteObjectType.USER)
                            {
                                infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_user").ToLower());
                            }
                            else if (sb.SubscriberType == SiteObjectType.ROLE)
                            {
                                infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_role").ToLower());
                            }
                            else if (sb.SubscriberType == PredefinedObjectType.CONTACTGROUP)
                            {
                                infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contactgroup").ToLower());
                            }

                            script = string.Format("{0} email[{1}] = '{2}'; \n ", script, i, infoLine);

                            // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%})
                            if (ih.LoadDynamicFields(sb, news, null, issue, true, siteName, null, null, null))
                            {
                                subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject);
                            }

                            // Create resolved subject
                            subject = HTMLHelper.HTMLEncode(string.Format("{0} {1}", subjectBase, subject));
                            script  = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(subject));
                        }
                    }
                }
            }
        }
        else
        {
            // No subscribers? => hide 'prev' and 'next' link buttons
            pnlLinkButtons.Visible = false;

            // Generate void javascript
            script = string.Format(@"newsletterIssueId ={0};
                                     var guid = new Array(1);
                                     var email = new Array(1);
                                     var subscribers = new Array(guid, email);
                                     guid[1] = 0;
                                     email[1] = 0;",
                                   newsletterIssueId);
        }
        ltlScript.Text = ScriptHelper.GetScript(script);

        if (!RequestHelper.IsPostBack())
        {
            ScriptHelper.RegisterStartupScript(this, typeof(string), "LoadPreview" + ClientID, ScriptHelper.GetScript("pageLoad();"));
        }
    }
Esempio n. 29
0
 /// <summary>
 /// Delete selected subscriber.
 /// </summary>
 private void Delete(object actionArgument)
 {
     CheckAuthorization();
     SubscriberProvider.DeleteSubscriber(ValidationHelper.GetInteger(actionArgument, 0));
 }
Esempio n. 30
0
    private void usNewsletters_OnSelectionChanged(object sender, EventArgs e)
    {
        // Check 'EcommerceModify' permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Ecommerce", "EcommerceModify"))
        {
            // Check 'ModifyCustomers' permission if don't have general ecommerce modify permission
            if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Ecommerce", "ModifyCustomers"))
            {
                CMSPage.RedirectToCMSDeskAccessDenied("CMS.Ecommerce", "EcommerceModify OR ModifyCustomers");
            }
        }

        // Check if a customer has a valid email
        if ((email != null) && (email.Trim() != string.Empty) && (ValidationHelper.IsEmail(email)))
        {
            // Check whether subcriber already exist
            Subscriber sb = SubscriberProvider.GetSubscriber(email, siteId);
            if (sb == null)
            {
                // Create new subscriber
                sb = new Subscriber();
                sb.SubscriberEmail     = email;
                sb.SubscriberFirstName = firstName;
                sb.SubscriberLastName  = lastName;
                sb.SubscriberFullName  = (firstName + " " + lastName).Trim();
                sb.SubscriberSiteID    = siteId;
                sb.SubscriberGUID      = Guid.NewGuid();
                SubscriberProvider.SetSubscriber(sb);
            }

            // Remove old items
            string newValues = ValidationHelper.GetString(usNewsletters.Value, null);
            string items     = DataHelper.GetNewItemsInList(newValues, currentValues);
            if (!String.IsNullOrEmpty(items))
            {
                string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                if (newItems != null)
                {
                    foreach (string item in newItems)
                    {
                        int newsletterId = ValidationHelper.GetInteger(item, 0);

                        // If subscriber is subscribed, unsubscribe him
                        if (SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId))
                        {
                            SubscriberProvider.Unsubscribe(sb.SubscriberID, newsletterId);
                        }
                    }
                }
            }

            // Add new items
            items = DataHelper.GetNewItemsInList(currentValues, newValues);
            if (!String.IsNullOrEmpty(items))
            {
                string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                if (newItems != null)
                {
                    foreach (string item in newItems)
                    {
                        int newsletterId = ValidationHelper.GetInteger(item, 0);

                        // If subscriber is not subscribed, subscribe him
                        if (!SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId))
                        {
                            SubscriberProvider.Subscribe(sb.SubscriberID, newsletterId, DateTime.Now);
                        }
                    }
                }
            }

            // Display information about successful (un)subscription
            lblInfo.Visible = true;
            lblInfo.Text    = GetString("General.ChangesSaved");
        }
    }