plugins/muc/muc.lib.lua
changeset 6209 cc00e78e6a31
parent 6208 d724289a5226
child 6211 a4d26656df04
equal deleted inserted replaced
6208:d724289a5226 6209:cc00e78e6a31
   392 	module:fire_event("muc-disco#info", {room = self; reply = reply; form = form;});
   392 	module:fire_event("muc-disco#info", {room = self; reply = reply; form = form;});
   393 	reply:add_child(form:form(nil, "result"));
   393 	reply:add_child(form:form(nil, "result"));
   394 	return reply;
   394 	return reply;
   395 end
   395 end
   396 module:hook("muc-disco#info", function(event)
   396 module:hook("muc-disco#info", function(event)
   397 	event.reply:tag("identity", {category="conference", type="text", name=event.room:get_name()}):up();
       
   398 end);
       
   399 module:hook("muc-disco#info", function(event)
       
   400 	event.reply:tag("feature", {var = "http://jabber.org/protocol/muc"}):up();
   397 	event.reply:tag("feature", {var = "http://jabber.org/protocol/muc"}):up();
   401 end);
   398 end);
   402 module:hook("muc-disco#info", function(event)
   399 module:hook("muc-disco#info", function(event)
   403 	event.reply:tag("feature", {var = event.room:get_moderated() and "muc_moderated" or "muc_unmoderated"}):up();
   400 	event.reply:tag("feature", {var = event.room:get_moderated() and "muc_moderated" or "muc_unmoderated"}):up();
   404 end);
   401 end);
   465 		:tag("status", {code = "307"})
   462 		:tag("status", {code = "307"})
   466 	self:publicise_occupant_status(occupant, x);
   463 	self:publicise_occupant_status(occupant, x);
   467 	return true;
   464 	return true;
   468 end
   465 end
   469 
   466 
   470 function room_mt:set_name(name)
       
   471 	if name == "" or type(name) ~= "string" or name == (jid_split(self.jid)) then name = nil; end
       
   472 	if self._data.name ~= name then
       
   473 		self._data.name = name;
       
   474 		if self.save then self:save(true); end
       
   475 	end
       
   476 end
       
   477 function room_mt:get_name()
       
   478 	return self._data.name or jid_split(self.jid);
       
   479 end
       
   480 function room_mt:set_moderated(moderated)
   467 function room_mt:set_moderated(moderated)
   481 	moderated = moderated and true or nil;
   468 	moderated = moderated and true or nil;
   482 	if self._data.moderated ~= moderated then
   469 	if self._data.moderated ~= moderated then
   483 		self._data.moderated = moderated;
   470 		self._data.moderated = moderated;
   484 		if self.save then self:save(true); end
   471 		if self.save then self:save(true); end
   851 	});
   838 	});
   852 	return module:fire_event("muc-config-form", { room = self, actor = actor, form = form }) or form;
   839 	return module:fire_event("muc-config-form", { room = self, actor = actor, form = form }) or form;
   853 end
   840 end
   854 module:hook("muc-config-form", function(event)
   841 module:hook("muc-config-form", function(event)
   855 	table.insert(event.form, {
   842 	table.insert(event.form, {
   856 		name = 'muc#roomconfig_roomname',
       
   857 		type = 'text-single',
       
   858 		label = 'Name',
       
   859 		value = event.room:get_name() or "",
       
   860 	});
       
   861 end);
       
   862 module:hook("muc-config-form", function(event)
       
   863 	table.insert(event.form, {
       
   864 		name = 'muc#roomconfig_persistentroom',
   843 		name = 'muc#roomconfig_persistentroom',
   865 		type = 'boolean',
   844 		type = 'boolean',
   866 		label = 'Make Room Persistent?',
   845 		label = 'Make Room Persistent?',
   867 		value = event.room:get_persistent()
   846 		value = event.room:get_persistent()
   868 	});
   847 	});
   958 	else
   937 	else
   959 		origin.send(st.error_reply(stanza, "cancel", "bad-request", "Not a submitted form"));
   938 		origin.send(st.error_reply(stanza, "cancel", "bad-request", "Not a submitted form"));
   960 	end
   939 	end
   961 	return true;
   940 	return true;
   962 end
   941 end
   963 module:hook("muc-config-submitted", function(event)
       
   964 	event.update_option("name", "muc#roomconfig_roomname");
       
   965 end);
       
   966 module:hook("muc-config-submitted", function(event)
   942 module:hook("muc-config-submitted", function(event)
   967 	event.update_option("persistent", "muc#roomconfig_persistentroom");
   943 	event.update_option("persistent", "muc#roomconfig_persistentroom");
   968 end);
   944 end);
   969 module:hook("muc-config-submitted", function(event)
   945 module:hook("muc-config-submitted", function(event)
   970 	event.update_option("moderated", "muc#roomconfig_moderatedroom");
   946 	event.update_option("moderated", "muc#roomconfig_moderatedroom");
  1455 	self:save_occupant(occupant);
  1431 	self:save_occupant(occupant);
  1456 	self:publicise_occupant_status(occupant, x, actor, reason);
  1432 	self:publicise_occupant_status(occupant, x, actor, reason);
  1457 	return true;
  1433 	return true;
  1458 end
  1434 end
  1459 
  1435 
       
  1436 local name = module:require "muc/name";
       
  1437 room_mt.get_name = name.get;
       
  1438 room_mt.set_name = name.set;
       
  1439 
  1460 local description = module:require "muc/description";
  1440 local description = module:require "muc/description";
  1461 room_mt.get_description = description.get;
  1441 room_mt.get_description = description.get;
  1462 room_mt.set_description = description.set;
  1442 room_mt.set_description = description.set;
  1463 
  1443 
  1464 local password = module:require "muc/password";
  1444 local password = module:require "muc/password";