204 msg.attr.to = to; |
204 msg.attr.to = to; |
205 self:_route_stanza(msg); |
205 self:_route_stanza(msg); |
206 end |
206 end |
207 end |
207 end |
208 if self._data['subject'] then |
208 if self._data['subject'] then |
209 self:_route_stanza(st.message({type='groupchat', from=self.jid, to=to}):tag("subject"):text(self._data['subject'])); |
209 self:_route_stanza(st.message({type='groupchat', from=self._data['subject_from'] or self.jid, to=to}):tag("subject"):text(self._data['subject'])); |
210 end |
210 end |
211 end |
211 end |
212 |
212 |
213 function room_mt:get_disco_info(stanza) |
213 function room_mt:get_disco_info(stanza) |
214 return st.reply(stanza):query("http://jabber.org/protocol/disco#info") |
214 return st.reply(stanza):query("http://jabber.org/protocol/disco#info") |
231 end |
231 end |
232 function room_mt:set_subject(current_nick, subject) |
232 function room_mt:set_subject(current_nick, subject) |
233 -- TODO check nick's authority |
233 -- TODO check nick's authority |
234 if subject == "" then subject = nil; end |
234 if subject == "" then subject = nil; end |
235 self._data['subject'] = subject; |
235 self._data['subject'] = subject; |
|
236 self._data['subject_from'] = current_nick; |
236 if self.save then self:save(); end |
237 if self.save then self:save(); end |
237 local msg = st.message({type='groupchat', from=current_nick}) |
238 local msg = st.message({type='groupchat', from=current_nick}) |
238 :tag('subject'):text(subject):up(); |
239 :tag('subject'):text(subject):up(); |
239 self:broadcast_message(msg, false); |
240 self:broadcast_message(msg, false); |
240 return true; |
241 return true; |