public override void OnActionExecuting(ActionExecutingContext filterContext) { var shopContext = filterContext.HttpContext.Request.Params[ShopContextParam]; if (string.IsNullOrEmpty(shopContext)) { return; } var siteContext = Sitecore.Sites.SiteContextFactory.GetSiteContext(shopContext); var database = Sitecore.Data.Database.GetDatabase("master"); var switcher = new ShopContextSwitcher(siteContext, database); filterContext.RequestContext.HttpContext.Items[SwitcherKey] = switcher; }
/// <summary> /// Runs the processor. /// </summary> /// <param name="args">The arguments.</param> public void Process(PipelineArgs args) { this.ResetHttpContext(); SiteContext site = Sitecore.Context.Site; if (site == null || string.Compare(this.ShellSiteName, site.Name, StringComparison.OrdinalIgnoreCase) != 0) { return; } var queryString = this.HttpContext.Request.QueryString; string itemId = queryString["id"] ?? queryString["sc_itemid"]; if (string.IsNullOrEmpty(itemId) || !ID.IsID(itemId)) { return; } string databaseOverrideName = queryString["database"] ?? queryString["db"] ?? queryString["sc_database"]; Database databaseOverride = null; if (!string.IsNullOrEmpty(databaseOverrideName)) { databaseOverride = Database.GetDatabase(databaseOverrideName); } var shop = this.ShopContextFactory.GetWebShops().FirstOrDefault(sh => this.CheckIfCurrentShopContext(sh, databaseOverride, ID.Parse(itemId))); if (shop == null) { return; } shop.GeneralSettings = this.ShopConfiguration.GetGeneralSettings(shop.InnerSite, shop.Database); shop.BusinessCatalogSettings = this.ShopConfiguration.GetBusinesCatalogSettings(shop.InnerSite, shop.Database); // INFO: looks like using factories here is an overdesign. Simple instantiation is used instead. this.shopContextSwitcher = new ShopContextSwitcher(shop); }
/// <summary> /// Runs the processor. /// </summary> /// <param name="args">The arguments.</param> public void Process(PipelineArgs args) { this.ResetHttpContext(); SiteContext site = Sitecore.Context.Site; if (site == null || string.Compare(this.ShellSiteName, site.Name, StringComparison.OrdinalIgnoreCase) != 0) { return; } var queryString = this.HttpContext.Request.QueryString; string itemId = queryString["id"] ?? queryString["sc_itemid"]; if (string.IsNullOrEmpty(itemId) || !ID.IsID(itemId)) { return; } string databaseOverrideName = queryString["database"] ?? queryString["db"] ?? queryString["sc_database"]; Database databaseOverride = null; if (!string.IsNullOrEmpty(databaseOverrideName)) { databaseOverride = Database.GetDatabase(databaseOverrideName); } var shop = this.ShopContextFactory.GetWebShops().FirstOrDefault(sh => this.CheckIfCurrentShopContext(sh, databaseOverride, ID.Parse(itemId))); if (shop == null) { return; } shop.GeneralSettings = this.ShopConfiguration.GetGeneralSettings(shop.InnerSite, shop.Database); shop.BusinessCatalogSettings = this.ShopConfiguration.GetBusinesCatalogSettings(shop.InnerSite, shop.Database); // INFO: looks like using factories here is an overdesign. Simple instantiation is used instead. this.shopContextSwitcher = new ShopContextSwitcher(shop); }