Quantcast
--[[

 Copyright (c) 2009, Adrian L Lange
 All rights reserved.

 You're allowed to use this addon, free of monetary charge,
 but you are not allowed to modify, alter, or redistribute
 this addon without express, written permission of the author.

--]]

local next = next
local find, lower = string.find, string.lower

local pError = CreateFrame('Frame')
local orig = UIErrorsFrame:GetScript('OnEvent')

local function slashCommand(str)
	if(str == 'reset') then
		pErrorDB = {}
		print('|cffff8080pError:|r Database is now reset to default')
	elseif(str == 'list') then
		if(pErrorDB[1]) then
			print('|cffff8080pError:|r Listing database:')
			for _, v in next, pErrorDB do
				print('            |cff95ff95', v, '|r')
			end
		else
			print('|cffff8080pError:|r Database is empty')
		end
	elseif(#str > 0) then
		for k, v in next, pErrorDB do
			if(find(str, v)) then
				tremove(pErrorDB, k)
				return print('|cffff8080pError:|r Removed|cff95ff95', v, '|rfrom database')
			end
		end

		tinsert(pErrorDB, str)
		print('|cffff8080pError:|r Added|cff95ff95', str, '|rto database')
	end
end

local function onEvent(self, event, str, ...)
	if(event == 'UI_ERROR_MESSAGE' and pErrorDB[1]) then
		for k, v in next, pErrorDB do
			if(find(lower(str), v)) then
				return
			end
		end
	end

	return orig(self, event, str, ...)
end

pError:RegisterEvent('ADDON_LOADED')
pError:SetScript('OnEvent', function(self, event, name)
	if(name == 'pError') then
		self:SetScript('OnEvent', nil)

		if(not pErrorUpdated) then
			print('|cffff8080pError:|r Converted database into new format, thanks for updating!')
			pErrorDB = pErrorDB and pErrorDB.blacklist
			pErrorUpdated = true
		end

		pErrorDB = pErrorDB or {}

		SLASH_pError1 = '/perror'
		SlashCmdList[name] = function(str) slashCommand(lower(str)) end

		UIErrorsFrame:SetScript('OnEvent', onEvent)
	end
end)