Untitled


SUBMITTED BY: Guest

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

FORMAT: Text only

SIZE: 4.3 kB

HITS: 732

  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. DataTable Data = null;
  38. using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
  39. {
  40. dbClient.SetQuery("SELECT * FROM wordfilter_blackwords");
  41. Data = dbClient.getTable();
  42. if(Data != null)
  43. {
  44. foreach(DataRow Row in Data.Rows)
  45. {
  46. this._adWords.Add(new AdWords(Convert.ToString(Row["word"])));
  47. }
  48. }
  49. }
  50. }
  51. public string CheckMessage(string Message)
  52. {
  53. foreach (WordFilter Filter in this._filteredWords.ToList())
  54. {
  55. if (Message.ToLower().Contains(Filter.Word) && Filter.IsStrict || Message == Filter.Word)
  56. {
  57. Message = Regex.Replace(Message, Filter.Word, Filter.Replacement, RegexOptions.IgnoreCase);
  58. }
  59. else if (Message.ToLower().Contains(Filter.Word) && !Filter.IsStrict || Message == Filter.Word)
  60. {
  61. string[] Words = Message.Split(' ');
  62. Message = "";
  63. foreach (string Word in Words.ToList())
  64. {
  65. if (Word.ToLower() == Filter.Word)
  66. Message += Filter.Replacement + " ";
  67. else
  68. Message += Word + " ";
  69. }
  70. }
  71. }
  72. return Message.TrimEnd(' ');
  73. }
  74. public bool CheckReclame(string Message)
  75. {
  76. foreach (AdWords Ad in this._adWords.ToList())
  77. {
  78. if (Message.ToLower().Contains(Ad.Word) || Message == Ad.Word)
  79. {
  80. Message = Regex.Replace(Message, Ad.Word, "Reclame", RegexOptions.IgnoreCase);
  81. return true;
  82. }
  83. }
  84. return false;
  85. }
  86. public bool CheckBannedWords(string Message)
  87. {
  88. Message = Message.Replace(" ", "").Replace(".", "").Replace("_", "").ToLower();
  89. foreach (WordFilter Filter in this._filteredWords.ToList())
  90. {
  91. if (!Filter.IsBannable)
  92. continue;
  93. if (Message.Contains(Filter.Word))
  94. return true;
  95. }
  96. return false;
  97. }
  98. public bool IsFiltered(string Message)
  99. {
  100. foreach (WordFilter Filter in this._filteredWords.ToList())
  101. {
  102. if (Message.Contains(Filter.Word))
  103. return true;
  104. }
  105. return false;
  106. }
  107. }
  108. }

comments powered by Disqus