Mercurial > prosody-modules
annotate mod_muc_config_restrict/mod_muc_config_restrict.lua @ 3571:f5ea0b886c7c
mod_storage_xmlarchive: Limit search to smallest time range in case of inexact match
This should improve performance in case the exact days in the 'start'
and 'end' range are missing from the index.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 03 May 2019 18:59:38 +0200 |
parents | ed7431fd3b47 |
children |
rev | line source |
---|---|
1014
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local is_admin = require "core.usermanager".is_admin; |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 local t_remove = table.remove; |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 local restricted_options = module:get_option_set("muc_config_restricted", {})._items; |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 function handle_config_submit(event) |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 local stanza = event.stanza; |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 if is_admin(stanza.attr.from, module.host) then return; end -- Don't restrict admins |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 local fields = event.fields; |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 for option in restricted_options do |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 fields[option] = nil; -- Like it was never there |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 end |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 end |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 function handle_config_request(event) |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 if is_admin(event.actor, module.host) then return; end -- Don't restrict admins |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 local form = event.form; |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 for i = #form, 1, -1 do |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 if restricted_options[form[i].name] then |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 t_remove(form, i); |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 end |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 end |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 end |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 module:hook("muc-config-submitted", handle_config_submit); |
ed7431fd3b47
mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 module:hook("muc-config-form", handle_config_request); |