Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 8793:05a3275b6873
MUC: Allow the number of messages sent by default to be configured (fixes #397)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 16 May 2018 12:17:06 +0100 |
parent | 8792:c2b99fa134b3 |
child | 8794:0e2c1c4d4f78 |
child | 8795:aaff40ec7001 |
comparison
equal
deleted
inserted
replaced
8792:c2b99fa134b3 | 8793:05a3275b6873 |
---|---|
169 | 169 |
170 local maxchars = history_tag and tonumber(history_tag.attr.maxchars); | 170 local maxchars = history_tag and tonumber(history_tag.attr.maxchars); |
171 if maxchars then maxchars = math.floor(maxchars); end | 171 if maxchars then maxchars = math.floor(maxchars); end |
172 | 172 |
173 local maxstanzas = math.floor(history_tag and tonumber(history_tag.attr.maxstanzas) or #history); | 173 local maxstanzas = math.floor(history_tag and tonumber(history_tag.attr.maxstanzas) or #history); |
174 if not history_tag then maxstanzas = 20; end | 174 if not history_tag then maxstanzas = self._data.default_history_messages; end |
175 | 175 |
176 local seconds = history_tag and tonumber(history_tag.attr.seconds); | 176 local seconds = history_tag and tonumber(history_tag.attr.seconds); |
177 if seconds then seconds = datetime.datetime(os.time() - math.floor(seconds)); end | 177 if seconds then seconds = datetime.datetime(os.time() - math.floor(seconds)); end |
178 | 178 |
179 local since = history_tag and history_tag.attr.since; | 179 local since = history_tag and history_tag.attr.since; |
356 if length == default_history_length then | 356 if length == default_history_length then |
357 length = nil; | 357 length = nil; |
358 end | 358 end |
359 self._data.history_length = length; | 359 self._data.history_length = length; |
360 end | 360 end |
361 | |
362 -- Fix for clients who don't support XEP-0045 correctly | |
363 -- Default number of history messages the room returns | |
364 function room_mt:get_defaulthistorymessages() | |
365 return self._data.default_history_messages or default_history_length; | |
366 end | |
367 function room_mt:set_defaulthistorymessages(number) | |
368 number = math.min(tonumber(number) or default_history_length, self._data.history_length); | |
369 if number == default_history_length then | |
370 number = nil; | |
371 end | |
372 self._data.default_history_messages = number; | |
373 end | |
374 | |
361 | 375 |
362 | 376 |
363 local valid_whois = { moderators = true, anyone = true }; | 377 local valid_whois = { moderators = true, anyone = true }; |
364 | 378 |
365 function room_mt:set_whois(whois) | 379 function room_mt:set_whois(whois) |
696 { | 710 { |
697 name = 'muc#roomconfig_historylength', | 711 name = 'muc#roomconfig_historylength', |
698 type = 'text-single', | 712 type = 'text-single', |
699 label = 'Maximum Number of History Messages Returned by Room', | 713 label = 'Maximum Number of History Messages Returned by Room', |
700 value = tostring(self:get_historylength()) | 714 value = tostring(self:get_historylength()) |
715 }, | |
716 { | |
717 name = 'muc#roomconfig_defaulthistorymessages', | |
718 type = 'text-single', | |
719 label = 'Default Number of History Messages Returned by Room', | |
720 value = tostring(self:get_defaulthistorymessages()) | |
701 } | 721 } |
702 }); | 722 }); |
703 return module:fire_event("muc-config-form", { room = self, actor = actor, form = form }) or form; | 723 return module:fire_event("muc-config-form", { room = self, actor = actor, form = form }) or form; |
704 end | 724 end |
705 | 725 |
744 handle_option("moderated", "muc#roomconfig_moderatedroom"); | 764 handle_option("moderated", "muc#roomconfig_moderatedroom"); |
745 handle_option("members_only", "muc#roomconfig_membersonly"); | 765 handle_option("members_only", "muc#roomconfig_membersonly"); |
746 handle_option("public", "muc#roomconfig_publicroom"); | 766 handle_option("public", "muc#roomconfig_publicroom"); |
747 handle_option("changesubject", "muc#roomconfig_changesubject"); | 767 handle_option("changesubject", "muc#roomconfig_changesubject"); |
748 handle_option("historylength", "muc#roomconfig_historylength"); | 768 handle_option("historylength", "muc#roomconfig_historylength"); |
769 handle_option("defaulthistorymessages", "muc#roomconfig_defaulthistorymessages"); | |
749 handle_option("whois", "muc#roomconfig_whois", valid_whois); | 770 handle_option("whois", "muc#roomconfig_whois", valid_whois); |
750 handle_option("password", "muc#roomconfig_roomsecret"); | 771 handle_option("password", "muc#roomconfig_roomsecret"); |
751 | 772 |
752 if self.save then self:save(true); end | 773 if self.save then self:save(true); end |
753 if self.locked then | 774 if self.locked then |