]> granicus.if.org Git - ejabberd/commitdiff
Provide new, not old, affiliation in kick/ban presence with codes 321 and 301
authorBadlop <badlop@process-one.net>
Mon, 15 Nov 2010 23:03:09 +0000 (00:03 +0100)
committerBadlop <badlop@process-one.net>
Mon, 15 Nov 2010 23:03:09 +0000 (00:03 +0100)
src/mod_muc/mod_muc_room.erl

index 570df08323eccc5731c4c5bcf8ff2e2d56c938ff..4a89ca1478c61f5a782ea54539f11066ed4a7465 100644 (file)
@@ -2265,7 +2265,7 @@ process_admin_items_set(UJID, Items, Lang, StateData) ->
                                         case (SD#state.config)#config.members_only of
                                             true ->
                                                 catch send_kickban_presence(
-                                                        JID, Reason, "321", SD),
+                                                        JID, Reason, "321", none, SD),
                                                 SD1 = set_affiliation(JID, none, SD),
                                                 set_role(JID, none, SD1);
                                             _ ->
@@ -2275,7 +2275,7 @@ process_admin_items_set(UJID, Items, Lang, StateData) ->
                                         end;
                                     {JID, affiliation, outcast, Reason} ->
                                         catch send_kickban_presence(
-                                                JID, Reason, "301", SD),
+                                                JID, Reason, "301", outcast, SD),
                                         set_affiliation_and_reason(
                                           JID, outcast, Reason,
                                           set_role(JID, none, SD));
@@ -2637,6 +2637,10 @@ can_change_ra(_FAffiliation, _FRole,
 
 
 send_kickban_presence(JID, Reason, Code, StateData) ->
+    NewAffiliation = get_affiliation(JID, StateData),
+    send_kickban_presence(JID, Reason, Code, NewAffiliation, StateData).
+
+send_kickban_presence(JID, Reason, Code, NewAffiliation, StateData) ->
     LJID = jlib:jid_tolower(JID),
     LJIDs = case LJID of
                {U, S, ""} ->
@@ -2662,14 +2666,13 @@ send_kickban_presence(JID, Reason, Code, StateData) ->
                              ?DICT:find(J, StateData#state.users),
                          add_to_log(kickban, {Nick, Reason, Code}, StateData),
                          tab_remove_online_user(J, StateData),
-                         send_kickban_presence1(J, Reason, Code, StateData)
+                         send_kickban_presence1(J, Reason, Code, NewAffiliation, StateData)
                  end, LJIDs).
 
-send_kickban_presence1(UJID, Reason, Code, StateData) ->
+send_kickban_presence1(UJID, Reason, Code, Affiliation, StateData) ->
     {ok, #user{jid = _RealJID,
               nick = Nick}} =
        ?DICT:find(jlib:jid_tolower(UJID), StateData#state.users),
-    Affiliation = get_affiliation(UJID, StateData),
     SAffiliation = affiliation_to_list(Affiliation),
     lists:foreach(
       fun({_LJID, Info}) ->