/** * [generate survey tokens and auth token for invitation auto-login] * @param [type] $user [description] * @param [type] $evaluation_id [description] * @return [type] [description] */ function generateTokens($user, $evaluation_id) { error_log('got this far 1'); // is relationship 180 or 360 ? $evaluation_pod = pods('evaluation', $evaluation_id); $relation_pod = pods('relation', $evaluation_pod->field('relation')['ID']); $relation_type = $evaluation_pod->field('180_360'); $relation_steps = EvaluationModel::getSteps($relation_type); error_log('got this far 2 ' . json_encode($relation_steps)); // survey meta info $survey_args = ['user' => $user->ID, 'evaluation' => $evaluation_id, 'user_type' => get_field('company_or_agency', 'user_' . $user->ID), 'token_180' => false, 'token_360' => false, 'survey_id_180' => false, 'survey_id_360' => false, 'auth_token' => randomstring(16)]; // get survey metadata pod $survey = SurveyModel::getByUserAndRelation($user->ID, $evaluation_id); error_log('got this far 3 ' . json_encode($survey)); // for each relation step foreach ($relation_steps as $key => $relation_step) { error_log('got this far 4'); $limesurvey_id = EvaluationModel::surveyID($evaluation_id, $relation_step); error_log('got this far 4a ' . $limesurvey_id); if (empty($limesurvey_id) || !$limesurvey_id) { error_log('Error: generateTokens ' . $limesurvey_id . '-' . $evaluation_id . '-' . $relation_step); return; } $ls_token = LimesurveyModel::getTokenByRelation($limesurvey_id, $user->user_email, $evaluation_id, false); error_log('got this far 4b'); // create a new limesuvey survey token if one doesn't exist if ($ls_token) { error_log('A token already exists ' . LS_USER . ' - ' . LS_PASSWORD); continue; } error_log('got this far 4z '); //limesurvey token $limesurvey_token = [(object) ['email' => $user->user_email, 'firstname' => $user->first_name, 'lastname' => $user->last_name, 'attribute_1' => $user->roles[0], 'attribute_2' => $evaluation_id]]; error_log('got this far 4b2 ' . json_encode($limesurvey_token)); // instantiate a new client $myJSONRPCClient = new jsonRPCClient(LS_BASEURL); error_log('got this far 4b3 ' . json_encode($myJSONRPCClient)); error_log('Le base url ' . LS_BASEURL); // receive session key $sessionKey = $myJSONRPCClient->get_session_key(LS_USER, LS_PASSWORD); error_log('got this far 4b4 ' . json_encode($sessionKey)); // create limesurvey token $success_status = $myJSONRPCClient->add_participants($sessionKey, $limesurvey_id, $limesurvey_token); error_log('got this far 4b5 ' . json_encode($success_status)); // release session key $myJSONRPCClient->release_session_key($sessionKey); error_log('got this far 4c '); // check status if (isset($success_status['error'])) { error_log('Error: ' . $success_status['error']); } $token_str = isset($success_status[0]['token']) ? $success_status[0]['token'] : ""; if (empty($token_str)) { error_log('generateTokens() - Token str is empty'); continue; } // update survey meta $survey_args['user'] = $user->ID; $survey_args['token_' . $relation_step] = $token_str; $survey_args['survey_id_' . $relation_step] = $limesurvey_id; // this will add/update the survey meta pod using pods save SurveyModel::save($user->ID, $evaluation_id, $survey_args); error_log('got this far 4'); } error_log('got this far 5'); }