/// <summary> /// Create redirects table and SP for version number /// </summary> private static void Create() { bool create = true; var dba = DataAccessBaseEx.GetWorker(); _log.Info("Create 404 handler redirects table START"); string createTableScript = @"CREATE TABLE [dbo].[BVN.NotFoundRequests]( [ID] [int] IDENTITY(1,1) NOT NULL, [OldUrl] [nvarchar](2000) NOT NULL, [Requested] [datetime] NULL, [Referer] [nvarchar](2000) NULL ) ON [PRIMARY]"; create = dba.ExecuteNonQuery(createTableScript); _log.Info("Create 404 handler redirects table END"); if (create) { _log.Info("Create 404 handler version SP START"); string versionSP = @"CREATE PROCEDURE [dbo].[bvn_notfoundversion] AS RETURN " + Configuration.Configuration.CURRENT_VERSION; if (!dba.ExecuteNonQuery(versionSP)) { create = false; _log.Error("An error occured during the creation of the 404 handler version stored procedure. Canceling."); _log.Info("Create 404 handler version SP END"); } } Valid = create; // copy dds items, if there are any. try { // the old redirect class is obsolete, and should only be used for this upgrade var oldCustomrRedirectStore = DataStoreFactory.GetStore(typeof(FileNotFound.CustomRedirects.CustomRedirect)); var oldCustomRedirects = oldCustomrRedirectStore.Items<FileNotFound.CustomRedirects.CustomRedirect>().ToList(); if (oldCustomRedirects.Count > 0) { var newCustomrRedirectStore = DataStoreFactory.GetStore(typeof(CustomRedirect)); DataStoreHandler dsHandler = new DataStoreHandler(); foreach (var oldCustomRedirect in oldCustomRedirects) { var newRedirect = new CustomRedirect(oldCustomRedirect.OldUrl, oldCustomRedirect.NewUrl, oldCustomRedirect.WildCardSkipAppend); dsHandler.SaveCustomRedirect(newRedirect); } // oldCustomrRedirectStore.DeleteAll(); } } catch (Exception ex) { _log.Error("Error during DDS upgrade: " + ex); } }
/// <summary> /// Save a collection of redirects, and call method to raise an event in order to clear cache on all servers. /// </summary> /// <param name="redirects"></param> public void SaveCustomRedirects(CustomRedirectCollection redirects) { DataStoreHandler dynamicHandler = new DataStoreHandler(); foreach (CustomRedirect redirect in redirects) { // Add redirect dynamicHandler.SaveCustomRedirect(redirect); } DataStoreEventHandlerHook.DataStoreUpdated(); }
public ActionResult AddDeletedUrl(string oldUrl) { CheckAccess(); // add redirect to dds with state "deleted" var redirect = new CustomRedirect(); redirect.OldUrl = oldUrl; redirect.State = Convert.ToInt32(DataStoreHandler.State.Deleted); DataStoreHandler dsHandler = new DataStoreHandler(); dsHandler.SaveCustomRedirect(redirect); DataStoreEventHandlerHook.DataStoreUpdated(); // delete rows from DB var dbAccess = DataAccessBaseEx.GetWorker(); dbAccess.DeleteRowsForRequest(oldUrl); // List<CustomRedirect> customRedirectList = GetDeletedUrls(); DataStoreEventHandlerHook.DataStoreUpdated(); return Deleted(); }
public void SaveRedirect(string oldUrl, string newUrl, string skipWildCardAppend) { Logger.Debug("Adding redirect: '{0}' -> '{1}'", oldUrl, newUrl); // Get hold of the datastore DataStoreHandler dsHandler = new DataStoreHandler(); dsHandler.SaveCustomRedirect(new CustomRedirect(oldUrl.Trim(), newUrl.Trim(), skipWildCardAppend == null ? false : true)); DataStoreEventHandlerHook.DataStoreUpdated(); }
public ActionResult IgnoreRedirect(string oldUrl, int pageNumber, string searchWord, int pageSize) { CheckAccess(); // delete rows from DB var dbAccess = DataAccessBaseEx.GetWorker(); dbAccess.DeleteRowsForRequest(oldUrl); // add redirect to dds with state "ignored" var redirect = new CustomRedirect(); redirect.OldUrl = oldUrl; redirect.State = Convert.ToInt32(DataStoreHandler.State.Ignored); DataStoreHandler dsHandler = new DataStoreHandler(); dsHandler.SaveCustomRedirect(redirect); DataStoreEventHandlerHook.DataStoreUpdated(); List<CustomRedirect> customRedirectList = GetSuggestions(searchWord); string actionInfo = string.Format(LocalizationService.Current.GetString("/gadget/redirects/ignoreredirect"), oldUrl); RedirectIndexViewData viewData = GetRedirectIndexViewData(pageNumber, customRedirectList, actionInfo, searchWord, pageSize, true, true); viewData.HighestSuggestionValue = customRedirectList.First().NotfoundErrorCount; viewData.LowestSuggestionValue = customRedirectList.Last().NotfoundErrorCount; return View("Index", viewData); }