liquid_feedback_frontend
diff app/main/survey/_action/participate.lua @ 1735:5a8a09119865
Added survey feature
| author | bsw | 
|---|---|
| date | Fri Oct 08 00:09:23 2021 +0200 (2021-10-08) | 
| parents | |
| children | 2d4136357989 | 
   line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/app/main/survey/_action/participate.lua Fri Oct 08 00:09:23 2021 +0200 1.3 @@ -0,0 +1,54 @@ 1.4 +local skip_survey = param.get("skip_survey") 1.5 + 1.6 +local survey = Survey:get_open() 1.7 + 1.8 +local survey_member = SurveyMember:by_pk(survey.id, app.session.member_id) 1.9 + 1.10 +if survey_member and not skip_survey then 1.11 + return true 1.12 +end 1.13 + 1.14 +local secret_length = 24 1.15 +local secret_alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 1.16 +local secret_purposes = { "oauth", "_other" } 1.17 +for idx, purpose in ipairs(secret_purposes) do 1.18 + secret_purposes[purpose] = idx 1.19 +end 1.20 + 1.21 +local function random_string(length_multiplier) 1.22 + return multirand.string( 1.23 + secret_length * (length_multiplier or 1), 1.24 + secret_alphabet 1.25 + ) 1.26 +end 1.27 + 1.28 +if not survey_member then 1.29 + survey_member = SurveyMember:new() 1.30 + survey_member.survey_id = survey.id 1.31 + survey_member.member_id = app.session.member_id 1.32 +end 1.33 + 1.34 +if skip_survey then 1.35 + local answer_set = survey_member.answer_set 1.36 + if answer_set then 1.37 + survey_member.survey_answer_set_ident = nil 1.38 + survey_member:save() 1.39 + answer_set:destroy() 1.40 + end 1.41 + survey_member.rejected = 'now' 1.42 +else 1.43 + local answer_set = SurveyAnswerSet:new() 1.44 + answer_set.ident = random_string() 1.45 + answer_set.survey_id = survey.id 1.46 + answer_set:save() 1.47 + survey_member.survey_answer_set_ident = answer_set.ident 1.48 +end 1.49 + 1.50 +survey_member:save() 1.51 + 1.52 +if skip_survey then 1.53 + return "skip_survey" 1.54 +end 1.55 + 1.56 +return true 1.57 +