liquid_feedback_frontend
view app/main/survey/_action/participate.lua @ 1824:de3770da915e
Better handling of new draft in not correctly configured area
| author | bsw | 
|---|---|
| date | Thu Feb 03 11:37:06 2022 +0100 (2022-02-03) | 
| parents | 2d4136357989 | 
| children | 
 line source
     1 local skip_survey = param.get("skip_survey")
     3 local survey = Survey:get_open()
     5 local survey_member = SurveyMember:by_pk(survey.id, app.session.member_id)
     7 if survey_member and not skip_survey then
     8   return true
     9 end
    11 local secret_length = 24
    12 local secret_alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    13 local secret_purposes = { "oauth", "_other" }
    14 for idx, purpose in ipairs(secret_purposes) do
    15   secret_purposes[purpose] = idx
    16 end
    18 local function random_string(length_multiplier)
    19   return multirand.string(
    20     secret_length * (length_multiplier or 1),
    21     secret_alphabet
    22   )
    23 end
    25 if not survey_member then
    26   survey_member = SurveyMember:new()
    27   survey_member.survey_id = survey.id
    28   survey_member.member_id = app.session.member_id
    29 end
    31 if skip_survey then
    32   local answer_set = survey_member.answer_set
    33   if answer_set then
    34     survey_member.survey_answer_set_ident = nil
    35     survey_member:save()
    36     answer_set:destroy()
    37   end
    38   survey_member.rejected = 'now'
    39 else
    40   local answer_set = SurveyAnswerSet:new()
    41   answer_set.ident = random_string()
    42   answer_set.survey_id = survey.id
    43   local verification = Verification:new_selector()
    44     :add_where{ "verified_member_id = ?", app.session.member_id }
    45     :optional_object_mode()
    46     :exec()
    47   if verification then
    48     answer_set.data = verification.request_data
    49     answer_set.data.name = nil
    50     answer_set.data.email = nil
    51   end
    52   answer_set:save()
    53   survey_member.survey_answer_set_ident = answer_set.ident
    54 end
    56 survey_member:save()
    58 if skip_survey then
    59   return "skip_survey"
    60 end
    62 return true
