liquid_feedback_frontend
view app/main/admin/_action/member_update.lua @ 1413:3dbfac432576
Fixed endless loop while sending notification when not issue is created yet
| author | bsw | 
|---|---|
| date | Sun Aug 26 13:38:14 2018 +0200 (2018-08-26) | 
| parents | 32cc544d5a5b | 
| children | 9d15d509b5f6 | 
 line source
     1 local id = param.get_id()
     3 local member = Member:by_id(id) or Member:new()
     5 param.update(member, "identification", "admin")
     7 local notify_email = param.get("notify_email")
     8 if notify_email == "" then
     9   notify_email = nil
    10 end
    12 member.notify_email = notify_email
    14 local notify_email_unconfirmed = param.get("notify_email_unconfirmed")
    15 if notify_email_unconfirmed == "" then
    16   notify_email_unconfirmed = nil
    17 end
    19 member.notify_email_unconfirmed = notify_email_unconfirmed
    21 local locked = param.get("locked", atom.boolean)
    22 if locked ~= nil then
    23   member.locked = locked
    24 end
    25 local deactivate = param.get("deactivate", atom.boolean)
    26 if deactivate then
    27   member.active = false
    28 end
    29 local login = param.get("login")
    30 if login then
    31   member.login = login
    32 end
    33 local name = param.get("name")
    34 if name then
    35   member.name = name
    36 end
    37 local identification = param.get("identification")
    38 if identification then
    39   identification = util.trim(identification)
    40   if identification == "" then
    41     identification = nil
    42   end
    43 end
    44 member.identification = identification
    46 local err = member:try_save()
    48 if err then
    49   slot.put_into("error", (_("Error while updating member, database reported:<br /><br /> (#{errormessage})"):gsub("#{errormessage}", tostring(err.message))))
    50   return false
    51 end
    53 if not id and config.single_unit_id then
    54   local privilege = Privilege:new()
    55   privilege.member_id = member.id
    56   privilege.unit_id = config.single_unit_id
    57   privilege.initiative_right = true
    58   privilege.voting_right = true
    59   privilege:save()
    60 end
    62 if not id then
    63   local profile = MemberProfile:new()
    64   profile.member_id = member.id
    65   profile.profile = json.object()
    66   profile:save()
    67 end
    69 local units = Unit:new_selector()
    70   :add_field("privilege.member_id NOTNULL", "privilege_exists")
    71   :add_field("privilege.voting_right", "voting_right")
    72   :left_join("privilege", nil, { "privilege.member_id = ? AND privilege.unit_id = unit.id", member.id })
    73   :exec()
    75 for i, unit in ipairs(units) do
    76   local value = param.get("unit_" .. unit.id, atom.boolean)
    77   if value and not unit.privilege_exists then
    78     local privilege = Privilege:new()
    79     privilege.unit_id = unit.id
    80     privilege.member_id = member.id
    81     privilege.voting_right = true
    82     privilege:save()
    83   elseif not value and unit.privilege_exists then
    84     local privilege = Privilege:by_pk(unit.id, member.id)
    85     privilege:destroy()
    86   end
    87 end
    89 if not member.activated and param.get("invite_member", atom.boolean) then
    90   member:send_invitation()
    91 end
    93 if id then
    94   slot.put_into("notice", _"Member successfully updated")
    95 else
    96   slot.put_into("notice", _"Member successfully registered")
    97 end
