Esempio n. 1
0
/**
 * [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');
}