Untitled


SUBMITTED BY: Guest

DATE: July 29, 2016, 12:54 p.m.

FORMAT: Text only

SIZE: 4.2 kB

HITS: 798

  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Data;
  5. using System.Collections.Generic;
  6. using System.Text.RegularExpressions;
  7. using Plus.Database.Interfaces;
  8. using Plus.Communication.Packets.Outgoing.Moderation;
  9. namespace Plus.HabboHotel.Rooms.Chat.Filter
  10. {
  11. public sealed class WordFilterManager
  12. {
  13. private List<WordFilter> _filteredWords;
  14. private List<AdWords> _adWords;
  15. public WordFilterManager()
  16. {
  17. this._filteredWords = new List<WordFilter>();
  18. this._adWords = new List<AdWords>();
  19. }
  20. public void Init()
  21. {
  22. if (this._filteredWords.Count > 0)
  23. this._filteredWords.Clear();
  24. DataTable Data = null;
  25. using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
  26. {
  27. dbClient.SetQuery("SELECT * FROM `wordfilter`");
  28. Data = dbClient.getTable();
  29. if (Data != null)
  30. {
  31. foreach (DataRow Row in Data.Rows)
  32. {
  33. this._filteredWords.Add(new WordFilter(Convert.ToString(Row["word"]), Convert.ToString(Row["replacement"]), PlusEnvironment.EnumToBool(Row["strict"].ToString()), PlusEnvironment.EnumToBool(Row["bannable"].ToString())));
  34. }
  35. }
  36. }
  37. using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
  38. {
  39. dbClient.SetQuery("SELECT * FROM wordfilter_blackwords");
  40. Data = dbClient.getTable();
  41. if (Data != null)
  42. {
  43. foreach (DataRow Row in Data.Rows)
  44. {
  45. this._adWords.Add(new AdWords(Convert.ToString(Row["word"])));
  46. }
  47. }
  48. }
  49. }
  50. public string CheckMessage(string Message)
  51. {
  52. foreach (WordFilter Filter in this._filteredWords.ToList())
  53. {
  54. if (Message.ToLower().Contains(Filter.Word) && Filter.IsStrict || Message == Filter.Word)
  55. {
  56. Message = Regex.Replace(Message, Filter.Word, Filter.Replacement, RegexOptions.IgnoreCase);
  57. }
  58. else if (Message.ToLower().Contains(Filter.Word) && !Filter.IsStrict || Message == Filter.Word)
  59. {
  60. string[] Words = Message.Split(' ');
  61. Message = "";
  62. foreach (string Word in Words.ToList())
  63. {
  64. if (Word.ToLower() == Filter.Word)
  65. Message += Filter.Replacement + " ";
  66. else
  67. Message += Word + " ";
  68. }
  69. }
  70. }
  71. return Message.TrimEnd(' ');
  72. }
  73. public bool CheckReclame(string Message)
  74. {
  75. foreach (AdWords Ad in this._adWords.ToList())
  76. {
  77. if (Message.ToLower().Contains(Ad.Word) || Message == Ad.Word)
  78. {
  79. Message = Regex.Replace(Message, Ad.Word, "Reclame", RegexOptions.IgnoreCase);
  80. return true;
  81. }
  82. }
  83. return false;
  84. }
  85. public bool CheckBannedWords(string Message)
  86. {
  87. Message = Message.Replace(" ", "").Replace(".", "").Replace("_", "").ToLower();
  88. foreach (WordFilter Filter in this._filteredWords.ToList())
  89. {
  90. if (!Filter.IsBannable)
  91. continue;
  92. if (Message.Contains(Filter.Word))
  93. return true;
  94. }
  95. return false;
  96. }
  97. public bool IsFiltered(string Message)
  98. {
  99. foreach (WordFilter Filter in this._filteredWords.ToList())
  100. {
  101. if (Message.Contains(Filter.Word))
  102. return true;
  103. }
  104. return false;
  105. }
  106. }
  107. }

comments powered by Disqus