-function sendUnavailable(origin, to, from)
---[[ example unavailable presence stanza
-<presence from="node@host/resource" type="unavailable" to="node@host" >
- <status>Logged out</status>
-</presence>
-]]--
- local presence = st.presence({from=from, type="unavailable"});
- presence:tag("status"):text("Logged out");
-
- local node, host = jid_bare(to);
- local bare = node .. "@" .. host;
-
- local user = bare_sessions[bare];
- if user then
- for resource, session in pairs(user.sessions) do
- presence.attr.to = session.full_jid;
- module:log("debug", "send unavailable to: %s; from: %s", tostring(presence.attr.to), tostring(presence.attr.from));
- origin.send(presence);
- end
- end
-end
-
-function sendNeededUnavailablePersences(origin, listnameOrItem) -- TODO implement it correctly!
- if type(listnameOrItem) == "string" then
- local listname = listnameOrItem;
- for _,list in ipairs(privacy_lists.lists) do
- if list.name == listname then
- for _,item in ipairs(list.items) do
- sendNeededUnavailablePersences(origin, item);
- end
- end
- end
- elseif type(listnameOrItem) == "table" then
- module:log("debug", "got an item, check wether to send unavailable presence stanza or not");
- local item = listnameOrItem;
-
- if item["presence-out"] == true then
- if item.type == "jid" then
- sendUnavailable(origin, item.value, origin.full_jid);
- elseif item.type == "group" then
- elseif item.type == "subscription" then
- elseif item.type == nil then
- end
- elseif item["presence-in"] == true then
- if item.type == "jid" then
- sendUnavailable(origin, origin.full_jid, item.value);
- elseif item.type == "group" then
- elseif item.type == "subscription" then
- elseif item.type == nil then
- end
- end
- else
- module:log("debug", "got unknown type: %s", type(listnameOrItem));
- end
-end
-