Comparison

util/pubsub.lua @ 4100:69e3f1e7111e

util.pubsub: Pass true instead of nil as the actor in a bunch of places, and fix a bunch of methods to not traceback on this (those with *_other capability checking).
author Matthew Wild <mwild1@gmail.com>
date Sat, 08 Jan 2011 23:17:17 +0000
parent 4099:5c0b7947f0ef
child 4364:af40cf682eba
comparison
equal deleted inserted replaced
4099:5c0b7947f0ef 4100:69e3f1e7111e
67 local node_obj = self.nodes[node]; 67 local node_obj = self.nodes[node];
68 if not node_obj then 68 if not node_obj then
69 return false, "item-not-found"; 69 return false, "item-not-found";
70 end 70 end
71 node_obj.affiliations[jid] = affiliation; 71 node_obj.affiliations[jid] = affiliation;
72 local _, jid_sub = self:get_subscription(node, nil, jid); 72 local _, jid_sub = self:get_subscription(node, true, jid);
73 if not jid_sub and not self:may(node, jid, "be_unsubscribed") then 73 if not jid_sub and not self:may(node, jid, "be_unsubscribed") then
74 local ok, err = self:add_subscription(node, nil, jid); 74 local ok, err = self:add_subscription(node, true, jid);
75 if not ok then 75 if not ok then
76 return ok, err; 76 return ok, err;
77 end 77 end
78 elseif jid_sub and not self:may(node, jid, "be_subscribed") then 78 elseif jid_sub and not self:may(node, jid, "be_subscribed") then
79 local ok, err = self:add_subscription(node, nil, jid); 79 local ok, err = self:add_subscription(node, true, jid);
80 if not ok then 80 if not ok then
81 return ok, err; 81 return ok, err;
82 end 82 end
83 end 83 end
84 return true; 84 return true;
85 end 85 end
86 86
87 function service:add_subscription(node, actor, jid, options) 87 function service:add_subscription(node, actor, jid, options)
88 -- Access checking 88 -- Access checking
89 local cap; 89 local cap;
90 if jid == actor or self:jids_equal(actor, jid) then 90 if actor == true or jid == actor or self:jids_equal(actor, jid) then
91 cap = "subscribe"; 91 cap = "subscribe";
92 else 92 else
93 cap = "subscribe_other"; 93 cap = "subscribe_other";
94 end 94 end
95 if not self:may(node, actor, cap) then 95 if not self:may(node, actor, cap) then
127 end 127 end
128 128
129 function service:remove_subscription(node, actor, jid) 129 function service:remove_subscription(node, actor, jid)
130 -- Access checking 130 -- Access checking
131 local cap; 131 local cap;
132 if jid == actor or self:jids_equal(actor, jid) then 132 if actor == true or jid == actor or self:jids_equal(actor, jid) then
133 cap = "unsubscribe"; 133 cap = "unsubscribe";
134 else 134 else
135 cap = "unsubscribe_other"; 135 cap = "unsubscribe_other";
136 end 136 end
137 if not self:may(node, actor, cap) then 137 if not self:may(node, actor, cap) then
167 end 167 end
168 168
169 function service:get_subscription(node, actor, jid) 169 function service:get_subscription(node, actor, jid)
170 -- Access checking 170 -- Access checking
171 local cap; 171 local cap;
172 if jid == actor or self:jids_equal(actor, jid) then 172 if actor == true or jid == actor or self:jids_equal(actor, jid) then
173 cap = "get_subscription"; 173 cap = "get_subscription";
174 else 174 else
175 cap = "get_subscription_other"; 175 cap = "get_subscription_other";
176 end 176 end
177 if not self:may(node, actor, cap) then 177 if not self:may(node, actor, cap) then
275 end 275 end
276 276
277 function service:get_subscriptions(node, actor, jid) 277 function service:get_subscriptions(node, actor, jid)
278 -- Access checking 278 -- Access checking
279 local cap; 279 local cap;
280 if jid == actor or self:jids_equal(actor, jid) then 280 if actor == true or jid == actor or self:jids_equal(actor, jid) then
281 cap = "get_subscriptions"; 281 cap = "get_subscriptions";
282 else 282 else
283 cap = "get_subscriptions_other"; 283 cap = "get_subscriptions_other";
284 end 284 end
285 if not self:may(node, actor, cap) then 285 if not self:may(node, actor, cap) then