bsw@357: local id = param.get_id()
bsw/jbe@0:
bsw@357: local member = Member:by_id(id) or Member:new()
bsw/jbe@0:
bsw/jbe@1309: param.update(member, "identification", "admin")
bsw/jbe@1309:
bsw/jbe@1309: local notify_email = param.get("notify_email")
bsw/jbe@1309: if notify_email == "" then
bsw/jbe@1309: notify_email = nil
bsw/jbe@1309: end
bsw/jbe@1309:
bsw/jbe@1309: member.notify_email = notify_email
bsw/jbe@1309:
bsw/jbe@1309: local notify_email_unconfirmed = param.get("notify_email_unconfirmed")
bsw/jbe@1309: if notify_email_unconfirmed == "" then
bsw/jbe@1309: notify_email_unconfirmed = nil
bsw/jbe@1309: end
bsw/jbe@1309:
bsw/jbe@1309: member.notify_email_unconfirmed = notify_email_unconfirmed
bsw@584:
bsw@584: local locked = param.get("locked", atom.boolean)
bsw@589: if locked ~= nil then
bsw@584: member.locked = locked
bsw@584: end
bsw@590: local deactivate = param.get("deactivate", atom.boolean)
bsw@590: if deactivate then
bsw@590: member.active = false
bsw@590: end
bsw@584: local login = param.get("login")
bsw@1437: if login and #login > 0 then
bsw@584: member.login = login
bsw@1437: else
bsw@1437: member.login = nil
bsw@584: end
bsw@584: local name = param.get("name")
bsw@584: if name then
bsw@584: member.name = name
bsw@584: end
bsw@836: local identification = param.get("identification")
bsw@836: if identification then
bsw@836: identification = util.trim(identification)
bsw@836: if identification == "" then
bsw@836: identification = nil
bsw@836: end
bsw@836: end
bsw@836: member.identification = identification
bsw/jbe@0:
bsw/jbe@0: local err = member:try_save()
bsw/jbe@0:
bsw/jbe@0: if err then
bsw/jbe@0: slot.put_into("error", (_("Error while updating member, database reported:
(#{errormessage})"):gsub("#{errormessage}", tostring(err.message))))
bsw/jbe@0: return false
bsw@357: end
bsw@357:
bsw@357: if not id and config.single_unit_id then
bsw@357: local privilege = Privilege:new()
bsw@357: privilege.member_id = member.id
bsw@357: privilege.unit_id = config.single_unit_id
bsw/jbe@1309: privilege.initiative_right = true
bsw@357: privilege.voting_right = true
bsw@359: privilege:save()
bsw@357: end
bsw@357:
bsw/jbe@1309: if not id then
bsw/jbe@1309: local profile = MemberProfile:new()
bsw/jbe@1309: profile.member_id = member.id
bsw/jbe@1309: profile.profile = json.object()
bsw/jbe@1309: profile:save()
bsw/jbe@1309: end
bsw/jbe@1309:
bsw@512: local units = Unit:new_selector()
bsw@512: :add_field("privilege.member_id NOTNULL", "privilege_exists")
bsw@512: :add_field("privilege.voting_right", "voting_right")
bsw@512: :left_join("privilege", nil, { "privilege.member_id = ? AND privilege.unit_id = unit.id", member.id })
bsw@512: :exec()
bsw@512:
bsw@512: for i, unit in ipairs(units) do
bsw@512: local value = param.get("unit_" .. unit.id, atom.boolean)
bsw@512: if value and not unit.privilege_exists then
bsw@1187: local privilege = Privilege:new()
bsw@512: privilege.unit_id = unit.id
bsw@512: privilege.member_id = member.id
bsw@512: privilege.voting_right = true
bsw@512: privilege:save()
bsw@512: elseif not value and unit.privilege_exists then
bsw@512: local privilege = Privilege:by_pk(unit.id, member.id)
bsw@512: privilege:destroy()
bsw@512: end
bsw@512: end
bsw@512:
bsw@581: if not member.activated and param.get("invite_member", atom.boolean) then
bsw@581: member:send_invitation()
bsw@581: end
bsw@581:
bsw@357: if id then
bsw@357: slot.put_into("notice", _"Member successfully updated")
bsw/jbe@0: else
bsw@357: slot.put_into("notice", _"Member successfully registered")
bsw@244: end