示例#1
0
 $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;
         }
     }
示例#2
0
文件: tokens.php 项目: strikles/php
/**
 * [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);
        }
    }
}