$response = array_merge($_POST, $extra_response_attrs); // instanciate a new client $myJSONRPCClient = new jsonRPCClient(LS_BASEURL); // receive session key $sessionKey = $myJSONRPCClient->get_session_key(LS_USER, LS_PASSWORD); // save response $success_status = $myJSONRPCClient->add_response($sessionKey, $limesurvey_id, $response); // reset token properties (completed = Y; usesleft = 0) if ($success_status) { $evaluation_pod = pods('evaluation', $evaluation_id); $relation = $evaluation_pod->field('relation'); $relation_pod = pods('relation', $relation['ID']); // survey completed $survey_completed = false; $evaluation_type = $evaluation_pod->field('180_360'); $survey_post = SurveyModel::getByUserAndRelation($current_user->ID, $evaluation_id); $survey_pod = pods('survey', $survey_post['ID']); error_log('survey completed sanity check ' . json_encode($evaluation_type) . ' - ' . json_encode($relation_step)); if ((int) $evaluation_type === 180 && (int) $relation_step === 180) { error_log('survey completed sanity check pass'); $survey_completed = true; } else { $response_180 = $survey_pod->field('response_180'); $response_360 = $survey_pod->field('response_360'); if ((int) $evaluation_type === 360 && (int) $relation_step === 180 && !empty($response_360)) { $survey_completed === true; } if ((int) $evaluation_type === 360 && (int) $relation_step === 360 && !empty($response_180)) { $survey_completed === true; } }
/** * [userSave - callback for generating limesurvey tokens and survey meta info when a user is created] * @param [int] $user_id [the user id of the created user] * @return [type] */ function userSave($user_id) { $user = UserModel::findByID($user_id); error_log('>>> got this far 1'); if ($user) { $relevant_roles = LimesurveyModel::relevantUserRoles(); if (!in_array($user->roles[0], $relevant_roles)) { return; } error_log('>>> got this far 2'); if (!array_key_exists('acf', $_POST)) { error_log('No acf data posted'); return; } // new relations the user is to be associated with $posted_evaluations = $_POST["acf"]["field_555eec0761d79"]; $new_user_evaluations = !empty($posted_evaluations) ? $posted_evaluations : []; $raw_old_user_evaluations = UserModel::getRelations($user_id); $old_user_evaluations = []; error_log('>>> got this far 3'); // push old user relation ID's to array to easily get stale relation bellow using array_diff if (!empty($raw_old_user_evaluations)) { foreach ($raw_old_user_evaluations as $key => $raw_old_relation) { $old_user_evaluations[] = (string) $raw_old_relation->ID; } } // clean-up stale user surveys $stale_evaluations = count($new_user_evaluations) ? array_diff($old_user_evaluations, $new_user_evaluations) : $old_user_evaluations; foreach ($stale_evaluations as $key => $stale_relation) { $stale_survey_post = SurveyModel::getByUserAndRelation($user_id, $stale_relation); if ($stale_survey_post) { $stale_survey_pod = pods('survey', $stale_survey_post['ID']); // only if no invitation was sent $invite_was_sent = $stale_survey_pod->field('invitation_send'); $delete_condition = DEBUG ? true : $invite_was_sent !== "1" && $invite_was_sent !== 1; if ($delete_condition) { $stale_survey_pod->delete(); } } } error_log('>>> got this far 4'); // generate tokens for new relations if required foreach ($new_user_evaluations as $nkey => $nur_id) { error_log('>>> got this far 4a ' . $nur_id); generateTokens($user, $nur_id); } } }