Added: presence broadcast
[prosody.git] / core / rostermanager.lua
1
2 local mainlog = log;
3 local function log(type, message)
4         mainlog(type, "rostermanager", message);
5 end
6
7 local setmetatable = setmetatable;
8 local format = string.format;
9 local loadfile, setfenv, pcall = loadfile, setfenv, pcall;
10
11 local hosts = hosts;
12
13 require "util.datamanager"
14
15 local datamanager = datamanager;
16
17 module "rostermanager"
18
19 --[[function getroster(username, host)
20         return { 
21                         ["mattj@localhost"] = true,
22                         ["tobias@getjabber.ath.cx"] = true,
23                         ["waqas@getjabber.ath.cx"] = true,
24                         ["thorns@getjabber.ath.cx"] = true, 
25                         ["idw@getjabber.ath.cx"] = true, 
26                 }
27         --return datamanager.load(username, host, "roster") or {};
28 end]]
29
30 function add_to_roster(roster, jid, item)
31         roster[jid] = item;
32         -- TODO implement
33 end
34
35 function remove_from_roster(roster, jid)
36         roster[jid] = nil;
37         -- TODO implement
38 end
39
40 function load_roster(username, host)
41         if hosts[host] and hosts[host].sessions[username] then
42                 local roster = hosts[host].sessions[username].roster;
43                 if not roster then
44                         roster = datamanager.load(username, host, "roster") or {};
45                         hosts[host].sessions[username].roster = roster;
46                 end
47                 return roster;
48         end
49         error("Attempt to load roster for non-loaded user"); --return nil;
50 end
51
52 function save_roster(username, host)
53         if hosts[host] and hosts[host].sessions[username] and hosts[host].sessions[username].roster then
54                 return datamanager.save(username, host, "roster", hosts[host].sessions[username].roster);
55         end
56         return nil;
57 end
58
59 return _M;