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 addon = CreateFrame('Frame', 'pError')
local orig = UIErrorsFrame:GetScript('OnEvent')

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

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

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

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

addon:RegisterEvent('ADDON_LOADED')
addon:SetScript('OnEvent', function(self, event, name)
	if(name ~= self:GetName()) then return end

	self:UnregisterEvent(event)
	self.db = pErrorDB or {}

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

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