aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2016-12-09 17:07:57 +0100
committerKim Alvefur <zash@zash.se>2016-12-09 17:07:57 +0100
commitae46d59b51d61f816e70c128717e9fd1b9b02baf (patch)
treeff719b97c8a64a18aa5c5ecd81350e8971332707 /core
parentfb10ce60d0064ab896125a620e7e672867678a3b (diff)
parenta3fb1984dfa8e773fed83df3be927741454da790 (diff)
downloadprosody-ae46d59b51d61f816e70c128717e9fd1b9b02baf.tar.gz
prosody-ae46d59b51d61f816e70c128717e9fd1b9b02baf.zip
Merge 0.9->0.10
Diffstat (limited to 'core')
-rw-r--r--core/rostermanager.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/core/rostermanager.lua b/core/rostermanager.lua
index 58d1f16e..88bd1e66 100644
--- a/core/rostermanager.lua
+++ b/core/rostermanager.lua
@@ -234,6 +234,18 @@ local function is_contact_subscribed(username, host, jid)
local item = roster[jid];
return item and (item.subscription == "from" or item.subscription == "both"), err;
end
+local function is_user_subscribed(username, host, jid)
+ do
+ local selfjid = username.."@"..host;
+ local user_subscription = _get_online_roster_subscription(selfjid, jid);
+ if user_subscription then return (user_subscription == "both" or user_subscription == "to"); end
+ local contact_subscription = _get_online_roster_subscription(jid, selfjid);
+ if contact_subscription then return (contact_subscription == "both" or contact_subscription == "from"); end
+ end
+ local roster, err = load_roster(username, host);
+ local item = roster[jid];
+ return item and (item.subscription == "to" or item.subscription == "both"), err;
+end
function is_contact_pending_in(username, host, jid)
local roster = load_roster(username, host);
@@ -350,6 +362,7 @@ return {
process_inbound_subscription_cancellation = process_inbound_subscription_cancellation;
process_inbound_unsubscribe = process_inbound_unsubscribe;
is_contact_subscribed = is_contact_subscribed;
+ is_user_subscribed = is_user_subscribed;
is_contact_pending_in = is_contact_pending_in;
set_contact_pending_in = set_contact_pending_in;
is_contact_pending_out = is_contact_pending_out;