aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2009-02-16 15:24:40 +0000
committerBadlop <badlop@process-one.net>2009-02-16 15:24:40 +0000
commit2bd54854ecda5c7e7f3aeb1f48f9d6bc61ef0f14 (patch)
tree1e94dfa9f8a3d21f94478fb73fffb5b01a19e5b5 /src
parent* src/mod_roster.erl: When account is deleted, cancel presence (diff)
* src/mod_muc/mod_muc.erl: Export function to create MUC
room (thanks to Eric Cestari) (EJAB-729) SVN Revision: 1878
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc/mod_muc.erl31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/mod_muc/mod_muc.erl b/src/mod_muc/mod_muc.erl
index d5a5ca721..831481684 100644
--- a/src/mod_muc/mod_muc.erl
+++ b/src/mod_muc/mod_muc.erl
@@ -38,6 +38,7 @@
store_room/3,
restore_room/2,
forget_room/2,
+ create_room/5,
process_iq_disco_items/4,
can_use_nick/3]).
@@ -102,6 +103,13 @@ room_destroyed(Host, Room, Pid, ServerHost) ->
{room_destroyed, {Room, Host}, Pid},
ok.
+%% @doc Create a room.
+%% If Opts = default, the default room options are used.
+%% Else use the passed options as defined in mod_muc_room.
+create_room(Host, Name, From, Nick, Opts) ->
+ Proc = gen_mod:get_module_proc(Host, ?PROCNAME),
+ gen_server:call(Proc, {create, Name, From, Nick, Opts}).
+
store_room(Host, Name, Opts) ->
F = fun() ->
mnesia:write(#muc_room{name_host = {Name, Host},
@@ -210,7 +218,28 @@ init([Host, Opts]) ->
%% Description: Handling call messages
%%--------------------------------------------------------------------
handle_call(stop, _From, State) ->
- {stop, normal, ok, State}.
+ {stop, normal, ok, State};
+
+handle_call({create, Room, From, Nick, Opts},
+ _From,
+ #state{host = Host,
+ server_host = ServerHost,
+ access = Access,
+ default_room_opts = DefOpts,
+ history_size = HistorySize,
+ room_shaper = RoomShaper} = State) ->
+ ?DEBUG("MUC: create new room '~s'~n", [Room]),
+ NewOpts = case Opts of
+ default -> DefOpts;
+ _ -> Opts
+ end,
+ {ok, Pid} = mod_muc_room:start(
+ Host, ServerHost, Access,
+ Room, HistorySize,
+ RoomShaper, From,
+ Nick, NewOpts),
+ register_room(Host, Room, Pid),
+ {reply, ok, State}.
%%--------------------------------------------------------------------
%% Function: handle_cast(Msg, State) -> {noreply, State} |