diff options
author | Badlop <badlop@process-one.net> | 2009-02-16 15:24:40 +0000 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2009-02-16 15:24:40 +0000 |
commit | 2bd54854ecda5c7e7f3aeb1f48f9d6bc61ef0f14 (patch) | |
tree | 1e94dfa9f8a3d21f94478fb73fffb5b01a19e5b5 /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.erl | 31 |
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} | |