summaryrefslogtreecommitdiff
path: root/src/mod_muc/mod_muc_room.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2005-05-02 21:59:39 +0000
committerAlexey Shchepin <alexey@process-one.net>2005-05-02 21:59:39 +0000
commitfd118302bcfecf837d87f49e6b81ee59de81fb4f (patch)
tree69d0f446c9ee060f0dd74e97504d8123f1ec76fd /src/mod_muc/mod_muc_room.erl
parent* src/msgs/sw.msg: Renamed to sv.msg (diff)
* src/mod_muc/mod_muc_room.erl: Updated changing roles and
affiliations tables to latest JEP-0045 SVN Revision: 338
Diffstat (limited to 'src/mod_muc/mod_muc_room.erl')
-rw-r--r--src/mod_muc/mod_muc_room.erl37
1 files changed, 31 insertions, 6 deletions
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index 355ada52..24e82c94 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -1677,6 +1677,19 @@ can_change_ra(FAffiliation, FRole,
when (FAffiliation == owner) or (FAffiliation == admin) ->
true;
can_change_ra(FAffiliation, FRole,
+ outcast, TRole,
+ affiliation, member)
+ when (FAffiliation == owner) or (FAffiliation == admin) ->
+ true;
+can_change_ra(owner, FRole,
+ outcast, TRole,
+ affiliation, admin) ->
+ true;
+can_change_ra(owner, FRole,
+ outcast, TRole,
+ affiliation, owner) ->
+ true;
+can_change_ra(FAffiliation, FRole,
none, TRole,
affiliation, outcast)
when (FAffiliation == owner) or (FAffiliation == admin) ->
@@ -1714,15 +1727,11 @@ can_change_ra(owner, FRole,
true;
can_change_ra(owner, FRole,
admin, TRole,
- affiliation, member) ->
- true;
-can_change_ra(owner, FRole,
- admin, TRole,
- affiliation, owner) ->
+ affiliation, _Affiliation) ->
true;
can_change_ra(owner, FRole,
owner, TRole,
- affiliation, admin) ->
+ affiliation, _Affiliation) ->
true;
can_change_ra(FAffiliation, FRole,
TAffiliation, TRole,
@@ -1756,6 +1765,22 @@ can_change_ra(FAffiliation, FRole,
true;
can_change_ra(FAffiliation, FRole,
owner, moderator,
+ role, visitor) ->
+ false;
+can_change_ra(owner, FRole,
+ TAffiliation, moderator,
+ role, visitor) ->
+ true;
+can_change_ra(FAffiliation, FRole,
+ admin, moderator,
+ role, visitor) ->
+ false;
+can_change_ra(admin, FRole,
+ TAffiliation, moderator,
+ role, visitor) ->
+ true;
+can_change_ra(FAffiliation, FRole,
+ owner, moderator,
role, participant) ->
false;
can_change_ra(owner, FRole,