mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-02 21:17:12 +02:00
parent
76e9555d55
commit
11829906ac
|
@ -715,7 +715,7 @@ get_room_info(RoomJID, Opts) ->
|
||||||
false -> <<"">>
|
false -> <<"">>
|
||||||
end,
|
end,
|
||||||
Subject = case lists:keysearch(subject, 1, Opts) of
|
Subject = case lists:keysearch(subject, 1, Opts) of
|
||||||
{value, {_, S}} -> S;
|
{value, {_, S}} -> xmpp:get_text(S);
|
||||||
false -> <<"">>
|
false -> <<"">>
|
||||||
end,
|
end,
|
||||||
SubjectAuthor = case lists:keysearch(subject_author, 1,
|
SubjectAuthor = case lists:keysearch(subject_author, 1,
|
||||||
|
|
|
@ -733,7 +733,7 @@ process_groupchat_message(#message{from = From, lang = Lang} = Packet, StateData
|
||||||
((StateData#state.config)#config.moderated == false) ->
|
((StateData#state.config)#config.moderated == false) ->
|
||||||
Subject = check_subject(Packet),
|
Subject = check_subject(Packet),
|
||||||
{NewStateData1, IsAllowed} = case Subject of
|
{NewStateData1, IsAllowed} = case Subject of
|
||||||
false -> {StateData, true};
|
[] -> {StateData, true};
|
||||||
_ ->
|
_ ->
|
||||||
case
|
case
|
||||||
can_change_subject(Role,
|
can_change_subject(Role,
|
||||||
|
@ -765,7 +765,7 @@ process_groupchat_message(#message{from = From, lang = Lang} = Packet, StateData
|
||||||
{next_state, normal_state, StateData};
|
{next_state, normal_state, StateData};
|
||||||
NewPacket1 ->
|
NewPacket1 ->
|
||||||
NewPacket = xmpp:remove_subtag(NewPacket1, #nick{}),
|
NewPacket = xmpp:remove_subtag(NewPacket1, #nick{}),
|
||||||
Node = if Subject == false -> ?NS_MUCSUB_NODES_MESSAGES;
|
Node = if Subject == [] -> ?NS_MUCSUB_NODES_MESSAGES;
|
||||||
true -> ?NS_MUCSUB_NODES_SUBJECT
|
true -> ?NS_MUCSUB_NODES_SUBJECT
|
||||||
end,
|
end,
|
||||||
send_wrapped_multiple(
|
send_wrapped_multiple(
|
||||||
|
@ -2428,7 +2428,7 @@ lqueue_cut(Q, N) ->
|
||||||
add_message_to_history(FromNick, FromJID, Packet, StateData) ->
|
add_message_to_history(FromNick, FromJID, Packet, StateData) ->
|
||||||
add_to_log(text, {FromNick, Packet}, StateData),
|
add_to_log(text, {FromNick, Packet}, StateData),
|
||||||
case check_subject(Packet) of
|
case check_subject(Packet) of
|
||||||
false ->
|
[] ->
|
||||||
TimeStamp = p1_time_compat:timestamp(),
|
TimeStamp = p1_time_compat:timestamp(),
|
||||||
AddrPacket = case (StateData#state.config)#config.anonymous of
|
AddrPacket = case (StateData#state.config)#config.anonymous of
|
||||||
true -> Packet;
|
true -> Packet;
|
||||||
|
@ -2467,19 +2467,19 @@ send_history(JID, History, StateData) ->
|
||||||
-spec send_subject(jid(), state()) -> ok.
|
-spec send_subject(jid(), state()) -> ok.
|
||||||
send_subject(JID, #state{subject_author = Nick} = StateData) ->
|
send_subject(JID, #state{subject_author = Nick} = StateData) ->
|
||||||
Subject = case StateData#state.subject of
|
Subject = case StateData#state.subject of
|
||||||
<<"">> -> [#text{}];
|
[] -> [#text{}];
|
||||||
Subj -> xmpp:mk_text(Subj)
|
[_|_] = S -> S
|
||||||
end,
|
end,
|
||||||
Packet = #message{from = jid:replace_resource(StateData#state.jid, Nick),
|
Packet = #message{from = jid:replace_resource(StateData#state.jid, Nick),
|
||||||
to = JID, type = groupchat, subject = Subject},
|
to = JID, type = groupchat, subject = Subject},
|
||||||
ejabberd_router:route(Packet).
|
ejabberd_router:route(Packet).
|
||||||
|
|
||||||
-spec check_subject(message()) -> false | binary().
|
-spec check_subject(message()) -> [text()].
|
||||||
check_subject(#message{subject = [_|_] = Subj, body = [],
|
check_subject(#message{subject = [_|_] = Subj, body = [],
|
||||||
thread = undefined}) ->
|
thread = undefined}) ->
|
||||||
xmpp:get_text(Subj);
|
Subj;
|
||||||
check_subject(_) ->
|
check_subject(_) ->
|
||||||
false.
|
[].
|
||||||
|
|
||||||
-spec can_change_subject(role(), boolean(), state()) -> boolean().
|
-spec can_change_subject(role(), boolean(), state()) -> boolean().
|
||||||
can_change_subject(Role, IsSubscriber, StateData) ->
|
can_change_subject(Role, IsSubscriber, StateData) ->
|
||||||
|
@ -3502,7 +3502,12 @@ set_opts([{Opt, Val} | Opts], StateData) ->
|
||||||
subscriber_nicks = Nicks};
|
subscriber_nicks = Nicks};
|
||||||
affiliations ->
|
affiliations ->
|
||||||
StateData#state{affiliations = (?DICT):from_list(Val)};
|
StateData#state{affiliations = (?DICT):from_list(Val)};
|
||||||
subject -> StateData#state{subject = Val};
|
subject ->
|
||||||
|
Subj = if Val == <<"">> -> [];
|
||||||
|
is_binary(Val) -> [#text{data = Val}];
|
||||||
|
is_list(Val) -> Val
|
||||||
|
end,
|
||||||
|
StateData#state{subject = Subj};
|
||||||
subject_author -> StateData#state{subject_author = Val};
|
subject_author -> StateData#state{subject_author = Val};
|
||||||
_ -> StateData
|
_ -> StateData
|
||||||
end,
|
end,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user