/// <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="issueId">Issue ID</param> /// <param name="contactId">Contact ID is present if the mail is sent to a contact or a contact group</param> private void LogActivity(SubscriberInfo sb, int subscriberId, int newsletterId, int issueId, int contactId) { bool isFromContactGroup = !string.IsNullOrEmpty(sb.SubscriberType) && sb.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACTGROUP, true); if (contactId <= 0) { contactId = ActivityTrackingHelper.GetContactID(sb); } if (sb == null) { sb = SubscriberInfoProvider.GetSubscriberInfo(subscriberId); } if (contactId > 0) { NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(newsletterId); Activity activity = new ActivityNewsletterUnsubscribing(sb, news, CMSContext.ActivityEnvironmentVariables); if (activity.Data != null) { activity.Data.ContactID = contactId; activity.Data.ItemDetailID = issueId; activity.Data.Value = isFromContactGroup ? "contactgroup(" + sb.SubscriberRelatedID + ")" : null; activity.Log(); } } }
/// <summary> /// Logs activity for unsubscribing. /// </summary> /// <param name="subscriber">Subscriber</param> /// <param name="newsletterId">Newsletter ID</param> /// <param name="issueId">Issue ID</param> /// <param name="contactId">Contact ID is present if the mail is sent to a contact or a contact group</param> private void LogActivity(SubscriberInfo subscriber, int newsletterId, int issueId, int contactId) { if (subscriber == null) { throw new ArgumentNullException("subscriber"); } if (contactId <= 0) { contactId = ActivityTrackingHelper.GetContactID(subscriber); } if (contactId > 0) { NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(newsletterId); bool isFromContactGroup = subscriber.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACTGROUP, true); bool isFromPersona = subscriber.SubscriberType.EqualsCSafe(PredefinedObjectType.PERSONA, true); Activity activity = new ActivityNewsletterUnsubscribing(subscriber, news, AnalyticsContext.ActivityEnvironmentVariables); if (activity.Data != null) { activity.Data.ContactID = contactId; activity.Data.ItemDetailID = issueId; if (isFromContactGroup) { activity.Data.Value = "contactgroup(" + subscriber.SubscriberRelatedID + ")"; } else if (isFromPersona) { activity.Data.Value = "persona(" + subscriber.SubscriberRelatedID + ")"; } activity.Log(); } } }
/// <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 or a contact group</param> private void LogActivity(SubscriberInfo sb, int subscriberId, int newsletterId, int siteId, int issueId, Guid issueGuid, int contactId) { // Load subscriber info object according to its ID if not given if (sb == null) { sb = SubscriberInfoProvider.GetSubscriberInfo(subscriberId); } NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(newsletterId); bool isFromContactGroup = !string.IsNullOrEmpty(sb.SubscriberType) && sb.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACTGROUP, true); bool isFromPersona = !string.IsNullOrEmpty(sb.SubscriberType) && sb.SubscriberType.EqualsCSafe(PredefinedObjectType.PERSONA, true); if (contactId <= 0) { contactId = ActivityTrackingHelper.GetContactID(sb); } if (contactId > 0) { // Load additional info (issue id) if ((issueId <= 0) && (issueGuid != Guid.Empty)) { IssueInfo issue = IssueInfoProvider.GetIssueInfo(issueGuid, siteId); if (issue != null) { issueId = issue.IssueID; } } Activity activity = new ActivityNewsletterUnsubscribing(sb, news, AnalyticsContext.ActivityEnvironmentVariables); if (activity.Data != null) { activity.Data.ContactID = contactId; activity.Data.ItemDetailID = issueId; activity.Data.Value = isFromContactGroup ? "contactgroup(" + sb.SubscriberRelatedID + ")" : isFromPersona ? "persona(" + sb.SubscriberRelatedID + ")" : null; activity.Log(); } } }
private static void LogNewsletterSubscriptionActivity(SubscriberInfo subscriber, NewsletterInfo newsletter) { // Under what contacts this subscriber belogs to? int contactId = ActivityTrackingHelper.GetContactID(subscriber); if (contactId <= 0) { return; } // Activity object is created for contact taken from ActivityContext. // Set ID of contact opening this email into this context otherwise new contact could be created. var activityContext = AnalyticsContext.ActivityEnvironmentVariables; activityContext.ContactID = contactId; var activity = new ActivityNewsletterSubscribing(subscriber, newsletter, activityContext); activity.Log(); }
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)) { Visible = false; return; } // Try to approve subscription SubscriberInfoProvider.ApprovalResult result = SubscriberInfoProvider.ApproveSubscription(subscriptionHash, false, CMSContext.CurrentSiteName, datetime); switch (result) { // Approving subscription was successful case SubscriberInfoProvider.ApprovalResult.Success: if (!String.IsNullOrEmpty(SuccessfulApprovalText)) { lblInfo.Text = SuccessfulApprovalText; } else { lblInfo.Text = ResHelper.GetString("newsletter.successful_approval"); } // Log newsletter subscription activity SubscriberNewsletterInfo sni = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriptionHash); if ((sni != null) && sni.SubscriptionEnabled) { NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(sni.NewsletterID); SubscriberInfo sb = SubscriberInfoProvider.GetSubscriberInfo(sni.SubscriberID); if (sb != null) { // Under what contacs this subscriber belogs to? int contactId = ActivityTrackingHelper.GetContactID(sb); if (contactId > 0) { Activity activity = new ActivityNewsletterSubscribing(sb, news, CMSContext.ActivityEnvironmentVariables); if (activity.Data != null) { activity.Data.ContactID = contactId; activity.Log(); } } } } break; // Subscription was already approved case SubscriberInfoProvider.ApprovalResult.Failed: if (!String.IsNullOrEmpty(UnsuccessfulApprovalText)) { lblInfo.Text = UnsuccessfulApprovalText; } else { lblInfo.Text = ResHelper.GetString("newsletter.approval_failed"); } break; case SubscriberInfoProvider.ApprovalResult.TimeExceeded: if (!String.IsNullOrEmpty(UnsuccessfulApprovalText)) { lblInfo.Text = UnsuccessfulApprovalText; } else { lblInfo.Text = ResHelper.GetString("newsletter.approval_timeexceeded"); } break; // Subscription not found default: case SubscriberInfoProvider.ApprovalResult.NotFound: if (!String.IsNullOrEmpty(UnsuccessfulApprovalText)) { lblInfo.Text = UnsuccessfulApprovalText; } else { lblInfo.Text = ResHelper.GetString("newsletter.approval_invalid"); } break; } }
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; } }
/// <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); } } }