Quantcast

TradeFilter v1.1r11

Erik L. Vonderscheer [11-22-08 - 06:24]
TradeFilter v1.1r11
Filename
TradeFilter.lua
diff --git a/TradeFilter.lua b/TradeFilter.lua
index 02a850c..f0dde03 100644
--- a/TradeFilter.lua
+++ b/TradeFilter.lua
@@ -43,8 +43,8 @@ local L = Rock("LibRockLocale-1.0"):GetTranslationNamespace("TradeFilter")

 TradeFilter = Rock:NewAddon("TradeFilter", "LibRockDB-1.0", "LibRockConfig-1.0", "LibRockEvent-1.0", "LibRockHook-1.0", "LibRockTimer-1.0", "LibRockConsole-1.0")

-local MAJOR_VERSION = "1.0"
-local MINOR_VERSION = 000 + tonumber(("$Revision: 8 $"):match("%d+"))
+local MAJOR_VERSION = "1.1b"
+local MINOR_VERSION = 000 + tonumber(("$Revision: 11 $"):match("%d+"))
 TradeFilter.version = MAJOR_VERSION .. "r" .. MINOR_VERSION
 TradeFilter.date = string.sub("$Date: 2008-11-21 12:00:00 -0800 (Fri, 21 Nov 2008) $", 8, 17)

@@ -53,6 +53,9 @@ TradeFilter:SetDatabaseDefaults('profile', {
 	turnOn = true,
 	redirect = false,
 	debug = false,
+	filterLFG = false,
+	filterGeneral = false,
+	filterTrade = true,
 	addfilter = false,
 	addfilter1 = "Add Custom Filter 1",
 	addfilter2 = "Add Custom Filter 2",
@@ -106,6 +109,14 @@ function TradeFilter:SetAddFilter3(v)
 	self.db.profile.addfilter3 = ""..v..""
 end

+function TradeFilter:IsFilterLFG()
+	return self.db.profile.filterLFG
+end
+
+function TradeFilter:ToggleFilterLFG()
+	self.db.profile.filterLFG = not self.db.profile.filterLFG
+end
+
 function TradeFilter:IsFilterGeneral()
 	return self.db.profile.filtergeneral
 end
@@ -228,6 +239,15 @@ local optionsTable = {
 						get = "IsFilterGeneral",
 						set = "ToggleFilterGeneral",
 					},
+					LFGChannel = {
+						type = 'boolean',
+						order = 3,
+						disabled = false,
+						name = "LFG Chat",
+						desc = "LFG Chat",
+						get = "IsFilterLFG",
+						set = "ToggleFilterLFG",
+					},
 				},
 			},
 			addFilterGroup = {
@@ -291,6 +311,7 @@ end

 --[[ Locals ]]--
 local _G = getfenv()
+local filtered = false
 local redirectFrame = nil
 local debugFrame = nil
 local lastArg1
@@ -347,7 +368,7 @@ function TradeFilter:SendMessageToChat(frame, message)
 	end
 end

-local function TradeFilter_OnEvent(...)
+local function PreFilter_OnEvent(...)
 	--[[ Taken from SpamMeNot
 		arg1:	chat message
 		arg2:	author
@@ -368,14 +389,30 @@ local function TradeFilter_OnEvent(...)
 				zone is always current zone even if not the same as the
 				channel name
 		arg11:	spam id
-	]]--
-	local event = select(1, ...)
-	local msg = select(2, ...)
-	local author = select(3, ...)
-	local status = select(7, ...)
+	]]
 	local zoneID = select(8, ...)
-	local lineID = select(12, ...)
-	local showIt = true
+	if (zoneID == 2 and TradeFilter:IsFilterTrade()) then
+		TradeFilter:TradeFilter_OnEvent()
+	elseif (zoneID == 2 and not TradeFilter:IsFilterTrade()) then
+		filtered = false
+	end
+
+	if (zoneID == 1 and TradeFilter:IsFilterGeneral()) then
+		TradeFilter:TradeFilter_OnEvent()
+	elseif (zoneID == 1 and not TradeFilter:IsFilterGeneral()) then
+		filtered = false
+	end
+
+	if (zoneID == 4 and TradeFilter:IsFilterLFG()) then
+		TradeFilter:TradeFilter_OnEvent()
+	elseif (zoneID == 1 and not TradeFilter:IsFilterLFG()) then
+		filtered = false
+	end
+
+	return filtered
+end
+
+function TradeFilter:TradeFilter_OnEvent(...)
 	local filterFuncList = ChatFrame_GetMessageEventFilters("CHAT_MSG_CHANNEL")
 	if (TradeFilter:IsDebug() and debugFrame == nil) then
 		debugFrame = TradeFilter:FindOrCreateChatWindow("DEBUG", true)
@@ -386,22 +423,7 @@ local function TradeFilter_OnEvent(...)
 		TradeFilter:SendMessageToChat(redirectFrame,"*** Redirect is ON ***")
 	end
 	if (filterFuncList and TradeFilter:IsTurnOn()) then
-		--[[
-		if (TradeFilter:IsFilterGeneral()) then
-			if (zoneID == 2) then
-				showIt = false
-			end
-		elseif (TradeFilter:IsFilterTrade()) then
-			if (zoneID == 1) then
-				showIt = false
-			end
-		elseif (TradeFilter:IsFilterTrade() and TradeFilter:IsFilterGeneral()) then
-			if (zoneID == 1) or (zoneID == 2) then
-				showIt = false
-			end
-			]]--
-			if (zoneID == 2) then
-				showIt = false
+				filtered = true
 			if (TradeFilter:IsDebug()) then
 				TradeFilter:SendMessageToChat(debugFrame, "arg1: " .. arg1 .. " arg2: " .. arg2)
 			end
@@ -419,18 +441,18 @@ local function TradeFilter_OnEvent(...)
 						if (TradeFilter:IsDebug()) then
 							TradeFilter:SendMessageToChat(debugFrame, "|cff00ff00**** Matched ***|r")
 						end
-						showIt = true
+						filtered = false
 					end
 				elseif(TradeFilter:GetAddFilter()) then
 					if matchIt[2] and string.find(arg1, matchIt[1]) or string.find(arg1, TradeFilter.db.profile.addfilter1) or string.find(arg1, TradeFilter.db.profile.addfilter2) or string.find(arg1, TradeFilter.db.profile.addfilter3) then
 						if (TradeFilter:IsDebug()) then
 							TradeFilter:SendMessageToChat(debugFrame, "|cff00ff00**** Matched ***|r")
 						end
-						showIt = true
+						filtered = false
 					end
 				end
 			end
-			if showIt == false then
+			if filtered == true then
 				if lastArg1 ~= arg1 or lastArg2 ~= arg2 then
 					if (TradeFilter:IsDebug()) then
 						TradeFilter:SendMessageToChat(debugFrame, "|cff00ff00*** NO Match - Redirected ***|r")
@@ -439,11 +461,11 @@ local function TradeFilter_OnEvent(...)
 						TradeFilter:SendMessageToChat(redirectFrame, string.format(CHAT_CHANNEL_GET, arg8) .. string.format(CHAT_CHANNEL_GET, arg2) .. arg1)
 					end
 					lastArg1, lastArg2 = arg1, arg2
-					return true
+					return
 				end
 			end
 		end
-	end
+	return filtered
 end

-ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", TradeFilter_OnEvent)
+ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", PreFilter_OnEvent)