]> granicus.if.org Git - ejabberd/commitdiff
Add support for @online@ to add_user_to_group
authorBadlop <badlop@process-one.net>
Tue, 20 Sep 2011 14:44:51 +0000 (16:44 +0200)
committerBadlop <badlop@process-one.net>
Tue, 20 Sep 2011 14:44:51 +0000 (16:44 +0200)
src/mod_shared_roster.erl

index 4b2bd75e2628990842e9b2e07a759fd037ab7303..1043e86e3f142a3fa0438a87e2185d499cd5b18b 100644 (file)
@@ -617,14 +617,15 @@ add_user_to_group(Host, US, Group) ->
     case regexp:match(LUser, "^@.+@$") of
        {match,_,_} ->
            GroupOpts = mod_shared_roster:get_group_opts(Host, Group),
-           AllUsersOpt =
-               case LUser == "@all@" of
-                   true -> [{all_users, true}];
-                   false -> []
+           MoreGroupOpts =
+               case LUser of
+                   "@all@" -> [{all_users, true}];
+                   "@online@" -> [{online_users, true}];
+                   _ -> []
                end,
             mod_shared_roster:set_group_opts(
              Host, Group,
-             GroupOpts ++ AllUsersOpt);
+             GroupOpts ++ MoreGroupOpts);
        nomatch ->
            %% Push this new user to members of groups where this group is displayed
            push_user_to_displayed(LUser, LServer, Group, both),
@@ -652,7 +653,9 @@ remove_user_from_group(Host, US, Group) ->
            NewGroupOpts =
                case LUser of
                    "@all@" ->
-                       lists:filter(fun(X) -> X/={all_users,true} end, GroupOpts)
+                       lists:filter(fun(X) -> X/={all_users,true} end, GroupOpts);
+                   "@online@" ->
+                       lists:filter(fun(X) -> X/={online_users,true} end, GroupOpts)
                end,
            mod_shared_roster:set_group_opts(Host, Group, NewGroupOpts);
        nomatch ->