vanilla-wow-addons – Rev 1
?pathlinks?
--[[--------------------------------------------------------------------------------
ItemSync Filters Framework
Author: Derkyle
Website: http://www.manaflux.com
-----------------------------------------------------------------------------------]]
---------------------------------------------------
-- ISync:Filter_DD_SetSelectedID
---------------------------------------------------
function ISync:Filter_DD_SetSelectedID(frame, id, names)
UIDropDownMenu_SetSelectedID(frame, id);
if( not frame ) then
frame = this;
end
UIDropDownMenu_SetText(names[id].name, frame);
end
---------------------------------------------------
-- ISync:Filter_DD_Load
---------------------------------------------------
function ISync:Filter_DD_Load()
--rarity
UIDropDownMenu_Initialize(ISync_FilterPurgeRare_DropDown, ISync.Filter_DD_Initialize);
ISync:Filter_DD_SetSelectedID(ISync_FilterPurgeRare_DropDown, 1, ISYNC_DD_RARITY);
UIDropDownMenu_JustifyText("LEFT", ISync_FilterPurgeRare_DropDown)
end
---------------------------------------------------
-- ISync:Filter_DD_Initialize
---------------------------------------------------
function ISync:Filter_DD_Initialize()
local info;
for i = 1, getn(ISYNC_DD_RARITY), 1 do
info = { };
info.text = ISYNC_DD_RARITY[i].name;
info.func = ISync.Filter_DD_OnClick;
UIDropDownMenu_AddButton(info);
end
info = nil;
end
---------------------------------------------------
-- ISync:Filter_DD_OnClick
---------------------------------------------------
function ISync:Filter_DD_OnClick()
UIDropDownMenu_SetSelectedID(ISync_FilterPurgeRare_DropDown, this:GetID());
end
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------
--ISync:FilterPurgeInvalid
---------------------------------------------------
function ISync:FilterPurgeInvalid()
--make sure we have stuff to work with duh
if(not ISyncDB or not ISYNC_REALM_NUM) then return nil; end
if(not ISyncDB[ISYNC_REALM_NUM]) then return nil; end
local index, value;
--do the loop
for index, value in ISyncDB[ISYNC_REALM_NUM] do
sParseLink = ISync:FetchDB(index, "subitem");
if(not sParseLink) then --this item has no subitems, cause it's subitem value = 0
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:0:0");
if(not name_X) then
ISyncDB[ISYNC_REALM_NUM][index] = nil;
end
else --it has subitems
--make sure it's a table
if(type(sParseLink) == "table") then
for qindex, qvalue in sParseLink do
--check
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:"..qvalue..":0");
--do we have a valid item?
if(not name_X) then
ISync:SetDB(index, "subitem", qvalue, "TRUE"); --remove it from array
end
end--for qindex, qvalue in sParseLink do
--check again if we removed all of the subitems
sParseLink = ISync:FetchDB(index, "subitem");
if(not sParseLink) then --this item has no subitems, cause it's subitem value = 0
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:0:0");
if(not name_X) then
ISyncDB[ISYNC_REALM_NUM][index] = nil;
end
end
end--if(type(sParseLink) == "table") then
end--if(not sParseLink) then
end--for index, value in ISyncDB[ISync_RealmNum] do
--call a refresh
ISync:Main_Refresh();
DEFAULT_CHAT_FRAME:AddMessage("|c00A2D96FItemSync: "..ISYNC_INVALIDPURGESUCCESS..".|r");
end
---------------------------------------------------
-- ISync:FilterPurge
---------------------------------------------------
function ISync:FilterPurge()
local storeRarity, sParseLink;
--make sure we have stuff to work with duh
if(not ISyncDB or not ISYNC_REALM_NUM) then return nil; end
if(not ISyncDB[ISYNC_REALM_NUM]) then return nil; end
local index, value;
--grab rarity
if( ISYNC_DD_RARITY[UIDropDownMenu_GetSelectedID(ISync_FilterPurgeRare_DropDown)].sortType ) then
local sortType = ISYNC_DD_RARITY[UIDropDownMenu_GetSelectedID(ISync_FilterPurgeRare_DropDown)].sortType;
if( sortType == "NONE" ) then
storeRarity = nil;
else
storeRarity = sortType;
end
end
storeRarity = tonumber(storeRarity);
if(not storeRarity) then
DEFAULT_CHAT_FRAME:AddMessage("|c00A2D96FItemSync: "..ISYNC_FILTERINVALIDSELECTION..".|r");
return nil;
end
--do the loop
for index, value in ISyncDB[ISYNC_REALM_NUM] do
sParseLink = ISync:FetchDB(index, "subitem");
if(not sParseLink) then --this item has no subitems, cause it's subitem value = 0
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:0:0");
if(quality_X and quality_X == storeRarity) then
ISyncDB[ISYNC_REALM_NUM][index] = nil;
end
else --it has subitems
--make sure it's a table
if(type(sParseLink) == "table") then
for qindex, qvalue in sParseLink do
--check
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:"..qvalue..":0");
--do we have a valid item?
if(quality_X and quality_X == storeRarity) then
ISync:SetDB(index, "subitem", qvalue, "TRUE"); --remove it from array
end
end--for qindex, qvalue in sParseLink do
--check again if we removed all of the subitems
sParseLink = ISync:FetchDB(index, "subitem");
if(not sParseLink) then --this item has no subitems, cause it's subitem value = 0
local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X = GetItemInfo("item:"..index..":0:0:0");
if(quality_X and quality_X == storeRarity) then
ISyncDB[ISYNC_REALM_NUM][index] = nil;
end
end
end--if(type(sParseLink) == "table") then
end--if(not sParseLink) then
end--for index, value in ISyncDB[ISync_RealmNum] do
--call a refresh
ISync:Main_Refresh();
DEFAULT_CHAT_FRAME:AddMessage("|c00A2D96FItemSync: "..ISYNC_FILTERPURGESUCCESS..".|r");
end
---------------------------------------------------
--ISync:Filter_MergeDB
---------------------------------------------------
function ISync:Filter_MergeDB()
local ICountServ = 0;
for ICountServ=0, tonumber(ISync:SetVar({"REALMS","REALMCOUNT"}, 0)) do
--make sure it's not zero because zero is used a universal database number
if(ICountServ ~= 0) then
--make sure we have a database to work with
if(ISyncDB and ISyncDB[ICountServ] and ISyncDB[0]) then
for index, value in ISyncDB[ICountServ] do
--now check to see if we have in the universal database, if we don't add it
--if we do then delete from other server
if(not ISyncDB[0][index]) then
--add it to universal zero
ISyncDB[0][index] = value;
end
end
--now delete it
ISyncDB[ICountServ] = nil;
end
end
end
DEFAULT_CHAT_FRAME:AddMessage("|c00A2D96FItemSync: "..ISYNC_OPTIONS_SERVER_MERGECOMPLETE.."|r");
end