using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.UIControls; using CMS.WebAnalytics; using CMS.SiteProvider; public partial class CMSModules_WebAnalytics_Pages_Tools_Conversion_Tab_Campaigns : CMSCampaignAndConversionPage { #region "Variables" private string currentValues = string.Empty; private int conversionID = 0; #endregion #region "Methods" protected void Page_Load(object sender, EventArgs e) { lblAvialable.Text = GetString("conversion.avaiblecampaign"); conversionID = QueryHelper.GetInteger("campaignid", 0); ConversionInfo ci = ConversionInfoProvider.GetConversionInfo(conversionID); if (ci != null) { int siteID = CMSContext.CurrentSiteID; if (ci.ConversionSiteID != siteID) { if (!CMSContext.CurrentUser.IsInSite(SiteInfoProvider.GetSiteName(ci.ConversionSiteID))) { RedirectToAccessDenied(GetString("conversion.currentsite")); return; } } } // Get the conversions currentValues = GetConversions(); if (!RequestHelper.IsPostBack()) { usCampaigns.Value = currentValues; } usCampaigns.WhereCondition = "CampaignSiteID = " + CMSContext.CurrentSiteID; usCampaigns.OnSelectionChanged += usConversions_OnSelectionChanged; } /// /// Returns string with campaign ids. /// private string GetConversions() { DataSet ds = ConversionCampaignInfoProvider.GetConversionCampaigns("ConversionID = " + conversionID, null, 0, "CampaignID"); if (!DataHelper.DataSourceIsEmpty(ds)) { return TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "CampaignID")); } return String.Empty; } protected void usConversions_OnSelectionChanged(object sender, EventArgs e) { SaveCampaigns(); } /// /// Saves the selected (removed) campaigns /// protected void SaveCampaigns() { // Check permissions if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.WebAnalytics", "ManageConversions")) { RedirectToAccessDenied("CMS.WebAnalytics", "Manage conversions"); } if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.WebAnalytics", "ManageCampaigns")) { RedirectToAccessDenied("CMS.WebAnalytics", "Manage campaigns"); } // Remove old items string newValues = ValidationHelper.GetString(usCampaigns.Value, null); string items = DataHelper.GetNewItemsInList(newValues, currentValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { // Add all new items to site foreach (string item in newItems) { int campaignID = ValidationHelper.GetInteger(item, 0); // remove conversion ConversionCampaignInfoProvider.RemoveConversionFromCampaign(conversionID, campaignID); } } } // Add new items items = DataHelper.GetNewItemsInList(currentValues, newValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { bool falseValues = false; // Add all new items to site foreach (string item in newItems) { int campaignID = ValidationHelper.GetInteger(item, 0); ConversionCampaignInfoProvider.AddConversionToCampaign(conversionID, campaignID); } // If some of sites could not be assigned reload selector value if (falseValues) { usCampaigns.Value = GetConversions(); usCampaigns.Reload(true); } } } ShowChangesSaved(); } #endregion }