plugins/muc/muc.lib.lua
changeset 6139 544f75256883
parent 6138 fa746d834424
child 6140 e4cdb3e5d7d0
--- a/plugins/muc/muc.lib.lua	Mon Mar 24 13:34:06 2014 -0400
+++ b/plugins/muc/muc.lib.lua	Mon Mar 24 13:36:43 2014 -0400
@@ -246,11 +246,6 @@
 		self:_route_stanza(msg);
 	end
 end
-function room_mt:send_subject(to)
-	if self._data['subject'] then
-		self:_route_stanza(st.message({type='groupchat', from=self._data['subject_from'] or self.jid, to=to}):tag("subject"):text(self._data['subject']));
-	end
-end
 
 function room_mt:get_disco_info(stanza)
 	local count = 0; for _ in pairs(self._occupants) do count = count + 1; end
@@ -277,13 +272,30 @@
 	end
 	return reply;
 end
+
+function room_mt:get_subject()
+	return self._data['subject'], self._data['subject_from']
+end
+local function create_subject_message(subject)
+	return st.message({type='groupchat'})
+		:tag('subject'):text(subject):up();
+end
+function room_mt:send_subject(to)
+	local from, subject = self:get_subject()
+	if subject then
+		local msg = create_subject_message(subject)
+		msg.attr.from = from
+		msg.attr.to = to
+		self:_route_stanza(msg);
+	end
+end
 function room_mt:set_subject(current_nick, subject)
 	if subject == "" then subject = nil; end
 	self._data['subject'] = subject;
 	self._data['subject_from'] = current_nick;
 	if self.save then self:save(); end
-	local msg = st.message({type='groupchat', from=current_nick})
-		:tag('subject'):text(subject):up();
+	local msg = create_subject_message(subject)
+	msg.attr.from = current_nick
 	self:broadcast_message(msg, false);
 	return true;
 end