vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- GuildSeen by Altariel

local VERSION = "1.8.0";
local RELEASEDATE = "October 13, 2005";

-- myAddons support variables
GuildSeenDetails = {
        name = "GuildSeen",
        description = "Adds a /seen command for looking up last online times of guild members.",
        version = VERSION,
        releaseDate = RELEASEDATE,
        author = "Altariel",
        email = "altariel@subpop.net",
        website = "http://wow.subpop.net/",
        category = MYADDONS_CATEGORY_GUILD,
        frame = "GuildSeenFrame",
};

function GuildSeen_OnLoad()
        SLASH_GUILDSEEN1 = "/seen";
        SLASH_GUILDSEEN2 = "/gseen";
        SlashCmdList["GUILDSEEN"] = GuildSeen_SlashCmd;

        this:RegisterEvent("VARIABLES_LOADED");

        if ( DEFAULT_CHAT_FRAME ) then
                DEFAULT_CHAT_FRAME:AddMessage("GuildSeen " .. VERSION .. " loaded.");
        end
        GuildRoster();
end

function GuildSeen_OnEvent()
        if(event == "VARIABLES_LOADED") then
                -- Register the addon in myAddOns
                if(myAddOnsFrame_Register) then
                        myAddOnsFrame_Register(GuildSeenDetails, nil);
                end
        end
end

function GuildSeen_SlashCmd(player)
        if(player == "") then
                DEFAULT_CHAT_FRAME:AddMessage("GuildSeen version " .. VERSION);
                return;
        end
        
        -- Much of this code is inspired by CT_MailMod's Guild Roster parsing
        local oldOffline = GuildFrameLFGButton:GetChecked();
        SetGuildRosterShowOffline(1);

        local numGuildMembers = GetNumGuildMembers();
        if ( numGuildMembers > 0 ) then
                for i=1, numGuildMembers do
                        name, rank, rankIndex, level, class, zone, group, note, officernote, online = GetGuildRosterInfo(i);
                        if ( strfind(strupper(name), strupper(player)) ) then
                                if ( online ) then
                                        DEFAULT_CHAT_FRAME:AddMessage(name .. " is currently online.");
                                else
                                        yearsOffline, monthsOffline, daysOffline, hoursOffline = GetGuildRosterLastOnline(i);
                                        DEFAULT_CHAT_FRAME:AddMessage("Last seen " .. name .. ": " .. monthsOffline .. " months, " .. daysOffline .. " days, " .. hoursOffline .. " hours ago.");
                                end
                        end
                end
        end

        -- Revert to old scanning
        SetGuildRosterShowOffline(oldOffline);
end