priv_to_org.lua 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. --- Set privilege to org members
  2. -- @module priv_to_org
  3. -- Allows initiator to grant a priv they have to all members of an org
  4. local priv_to_org = {
  5. name = "Set privilege to org members",
  6. slug = "priv_to_org",
  7. desc = "Allows initiator to grant a priv they have to all members of an org"
  8. }
  9. priv_to_org.data = {
  10. }
  11. priv_to_org.config = {
  12. }
  13. --- (Required): initiate function
  14. -- Modules have access to the following instance variables:
  15. -- <li><code>self.org</code> (the org the module was called in),</li>
  16. -- <li><code>self.initiator</code> (the user that callced the module),</li>
  17. -- <li><code>self.id</code> (the process id of the module instance)</li>
  18. -- @param config (optional) If user wants to override fields in the config table
  19. -- @param result (optional) Callback if this module is embedded in other modules
  20. -- @function initiate
  21. function priv_to_org:initiate(config, result)
  22. local player_privs = minetest.get_player_privs(self.initiator)
  23. for i,v in ipairs(player_privs) do
  24. if not v then table.remove(player_privs,i) end
  25. end
  26. modpol.interactions.dropdown_query(
  27. self.initiator,
  28. "Which privilege do you want to share with members of "..self.org.name.."?",
  29. player_privs,
  30. function(input)
  31. for member in self.org.members do
  32. local member_privs = minetest.get_player_privs(member.name)
  33. member_privs[input] = true
  34. minetest.set_player_privs(member.name, member_privs)
  35. end
  36. local message = self.initiator .. " has set " .. input ..
  37. " privilege to all members of " .. self.org.name
  38. modpol.interactions.message_org(self.initiator,self.org.id, message)
  39. end)
  40. -- call result function
  41. if result then result() end
  42. end
  43. --- (Required) Add to module table
  44. modpol.modules.priv_to_org = priv_to_org