--- Set privilege to org members
-- @module priv_to_org
-- Allows initiator to grant a priv they have to all members of an org

local priv_to_org = {
    name = "Set privilege to org members",
    slug = "priv_to_org",
    desc = "Allows initiator to grant a priv they have to all members of an org"
}

priv_to_org.data = {
}

priv_to_org.config = {
}

--- (Required): initiate function
-- Modules have access to the following instance variables:
-- <li><code>self.org</code> (the org the module was called in),</li>
-- <li><code>self.initiator</code> (the user that callced the module),</li>
-- <li><code>self.id</code> (the process id of the module instance)</li>
-- @param config (optional) If user wants to override fields in the config table
-- @param result (optional) Callback if this module is embedded in other modules
-- @function initiate
function priv_to_org:initiate(config, result) 
   local player_privs = minetest.get_player_privs(self.initiator)
   for i,v in ipairs(player_privs) do
      if not v then table.remove(player_privs,i) end
   end
   modpol.interactions.dropdown_query(
      self.initiator,
      "Which privilege do you want to share with members of "..self.org.name.."?",
      player_privs,
      function(input)
         for member in self.org.members do
            local member_privs = minetest.get_player_privs(member.name)
            member_privs[input] = true
            minetest.set_player_privs(member.name, member_privs)
         end
         local message = self.initiator .. " has set " .. input ..
         " privilege to all members of " .. self.org.name
         modpol.interactions.message_org(self.initiator,self.org.id, message)
   end)
    -- call result function 
    if result then result() end
end

--- (Required) Add to module table
modpol.modules.priv_to_org = priv_to_org