//============================================================ // Static Methods //============================================================ internal static SwearFilterConfiguration LoadConfiguration(string configFilename) { SwearFilterConfiguration blockedWords = null; FileStream blockedList = null; try { blockedList = File.Open(configFilename, FileMode.Open, FileAccess.Read); var configDoc = new XmlDocument(); configDoc.Load(blockedList); XmlElement configuration = configDoc [MainEncosingTagName]; if (configuration != null) { XmlElement blockedWordsElement = configuration [BlockedWordsEnclosingTagName]; if (blockedWordsElement != null) { var allBlockedWords = new Collection <BlockedWord> (); foreach (XmlElement blockedWordElement in blockedWordsElement.ChildNodes) { string word = null; var blockedWordTag = blockedWordElement [BlockedWordTagName]; if (blockedWordTag != null) { word = blockedWordTag.InnerText; } string replacement = null; var blockedWordReplacement = blockedWordElement [ReplacementTagName]; if (blockedWordReplacement != null) { replacement = blockedWordReplacement.InnerText; } var blockedWord = new BlockedWord { Word = word, Replacement = replacement }; if (blockedWord.Word != null) { allBlockedWords.Add(blockedWord); } } blockedWords = new SwearFilterConfiguration { _blockedWords = allBlockedWords }; blockedWords.Validate(); } } } finally { if (blockedList != null) { blockedList.Close(); } } return(blockedWords); }
private static SwearFilterConfiguration GetConfiguration(string configFile) { string filename = HttpContext.Current.Server.MapPath(configFile); var blockedWords = (SwearFilterConfiguration)_allConfigurations [NormaliseKey(filename)]; if ((blockedWords == null) && (File.Exists(filename))) { blockedWords = SwearFilterConfiguration.LoadConfiguration(filename); _allConfigurations [NormaliseKey(filename)] = blockedWords; WatchConfigFile(filename); } return(blockedWords); }
/// /// <summary> /// Render this control to the writer parameter specified. /// </summary> /// <remarks> /// Note for inheritors - for this control to function properly, any derived controls that override /// this method should ensure that they call this base method as part of their Render. /// </remarks> /// <param name="writer">The <see cref="HtmlTextWriter"/> object that receives the server control content.</param> /// protected override void Render(HtmlTextWriter writer) { HtmlTextWriter realWriter = HtmlTextWriterFactory.CreateCorrectHtmlTextWriter(writer); PowerPack.Announce(realWriter, ProductName); string innerHtml = GetInnerHtml(); _blockedWords = GetConfiguration(_configFile); string filteredInnerHtml = FilterHtml(innerHtml); realWriter.Write(filteredInnerHtml); return; }