aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2016-03-14 17:38:50 +0100
committerKim Alvefur <zash@zash.se>2016-03-14 17:38:50 +0100
commitef3eaa5cc59ab7ec848e19fb95ffba8ef585f6d2 (patch)
treeb5a38a6a817aa63528bdc225aa207006faf12f5e
parente591ea6908d04c3732968a039c848c2e19c496aa (diff)
parentcedbb60261a7debbc7e2ebc2fbfcc88025ca58b7 (diff)
downloadprosody-ef3eaa5cc59ab7ec848e19fb95ffba8ef585f6d2.tar.gz
prosody-ef3eaa5cc59ab7ec848e19fb95ffba8ef585f6d2.zip
Merge 0.10->trunk
-rw-r--r--plugins/mod_presence.lua26
-rw-r--r--util/presence.lua38
2 files changed, 40 insertions, 24 deletions
diff --git a/plugins/mod_presence.lua b/plugins/mod_presence.lua
index 76394baf..4ac017ba 100644
--- a/plugins/mod_presence.lua
+++ b/plugins/mod_presence.lua
@@ -10,7 +10,7 @@ local log = module._log;
local require = require;
local pairs = pairs;
-local t_concat, t_insert = table.concat, table.insert;
+local t_concat = table.concat;
local s_find = string.find;
local tonumber = tonumber;
@@ -27,29 +27,7 @@ local NULL = {};
local rostermanager = require "core.rostermanager";
local sessionmanager = require "core.sessionmanager";
-local function select_top_resources(user)
- local priority = 0;
- local recipients = {};
- for _, session in pairs(user.sessions) do -- find resource with greatest priority
- if session.presence then
- -- TODO check active privacy list for session
- local p = session.priority;
- if p > priority then
- priority = p;
- recipients = {session};
- elseif p == priority then
- t_insert(recipients, session);
- end
- end
- end
- return recipients;
-end
-local function recalc_resource_map(user)
- if user then
- user.top_resources = select_top_resources(user);
- if #user.top_resources == 0 then user.top_resources = nil; end
- end
-end
+local recalc_resource_map = require "util.presencepriority".recalc_resource_map;
local ignore_presence_priority = module:get_option_boolean("ignore_presence_priority", false);
diff --git a/util/presence.lua b/util/presence.lua
new file mode 100644
index 00000000..f6370354
--- /dev/null
+++ b/util/presence.lua
@@ -0,0 +1,38 @@
+-- Prosody IM
+-- Copyright (C) 2008-2010 Matthew Wild
+-- Copyright (C) 2008-2010 Waqas Hussain
+--
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
+local t_insert = table.insert;
+
+local function select_top_resources(user)
+ local priority = 0;
+ local recipients = {};
+ for _, session in pairs(user.sessions) do -- find resource with greatest priority
+ if session.presence then
+ -- TODO check active privacy list for session
+ local p = session.priority;
+ if p > priority then
+ priority = p;
+ recipients = {session};
+ elseif p == priority then
+ t_insert(recipients, session);
+ end
+ end
+ end
+ return recipients;
+end
+local function recalc_resource_map(user)
+ if user then
+ user.top_resources = select_top_resources(user);
+ if #user.top_resources == 0 then user.top_resources = nil; end
+ end
+end
+
+return {
+ select_top_resources = select_top_resources;
+ recalc_resource_map = recalc_resource_map;
+}