Exemple #1
0
/**
 * Actual implementation of the reset course functionality, delete all the
 * questionnaire responses for course $data->courseid, if $data->reset_questionnaire_attempts is
 * set and true.
 *
 * @param object $data the data submitted from the reset course.
 * @return array status array
 */
function questionnaire_reset_userdata($data)
{
    global $CFG, $DB;
    require_once $CFG->libdir . '/questionlib.php';
    require_once $CFG->dirroot . '/mod/questionnaire/locallib.php';
    $componentstr = get_string('modulenameplural', 'questionnaire');
    $status = array();
    if (!empty($data->reset_questionnaire)) {
        $surveys = questionnaire_get_survey_list($data->courseid, $type = '');
        // Delete responses.
        foreach ($surveys as $survey) {
            // Get all responses for this questionnaire.
            $sql = "SELECT R.id, R.survey_id, R.submitted, R.username\n                 FROM {questionnaire_response} R\n                 WHERE R.survey_id = ?\n                 ORDER BY R.id";
            $resps = $DB->get_records_sql($sql, array($survey->id));
            if (!empty($resps)) {
                foreach ($resps as $response) {
                    questionnaire_delete_response($response->id);
                }
            }
            // Remove this questionnaire's grades (and feedback) from gradebook (if any).
            $select = "itemmodule = 'questionnaire' AND iteminstance = " . $survey->qid;
            $fields = 'id';
            if ($itemid = $DB->get_record_select('grade_items', $select, null, $fields)) {
                $itemid = $itemid->id;
                $DB->delete_records_select('grade_grades', 'itemid = ' . $itemid);
            }
        }
        $status[] = array('component' => $componentstr, 'item' => get_string('deletedallresp', 'questionnaire'), 'error' => false);
        $status[] = array('component' => $componentstr, 'item' => get_string('gradesdeleted', 'questionnaire'), 'error' => false);
    }
    return $status;
}
         if (is_numeric($resp->username)) {
             if ($user = $DB->get_record('user', array('id' => $resp->username))) {
                 $ruser = fullname($user);
             } else {
                 $ruser = '******' . get_string('unknown', 'questionnaire') . ' -';
             }
         } else {
             $ruser = $resp->username;
         }
     }
 } else {
     $resps = $respsallparticipants;
 }
 if (!empty($resps)) {
     foreach ($resps as $response) {
         questionnaire_delete_response($response, $questionnaire);
     }
     if (!$DB->count_records('questionnaire_response', array('survey_id' => $sid, 'complete' => 'y'))) {
         $redirection = $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id;
     } else {
         $redirection = $CFG->wwwroot . '/mod/questionnaire/report.php?action=vall&sid=' . $sid . '&instance=' . $instance;
     }
     // Log this questionnaire delete all responses action.
     $context = context_module::instance($questionnaire->cm->id);
     $anonymous = $questionnaire->respondenttype == 'anonymous';
     $event = \mod_questionnaire\event\all_responses_deleted::create(array('objectid' => $questionnaire->id, 'anonymous' => $anonymous, 'context' => $context));
     $event->trigger();
     redirect($redirection);
 } else {
     error(get_string('couldnotdelresp', 'questionnaire'), $CFG->wwwroot . '/mod/questionnaire/report.php?action=vall&sid=' . $sid . '&instance=' . $instance);
 }
function questionnaire_delete_survey($sid, $questionnaireid)
{
    global $DB;
    $status = true;
    // Delete all survey attempts and responses.
    if ($responses = $DB->get_records('questionnaire_response', array('survey_id' => $sid), 'id')) {
        foreach ($responses as $response) {
            $status = $status && questionnaire_delete_response($response);
        }
    }
    // There really shouldn't be any more, but just to make sure...
    $DB->delete_records('questionnaire_response', array('survey_id' => $sid));
    $DB->delete_records('questionnaire_attempts', array('qid' => $questionnaireid));
    // Delete all question data for the survey.
    if ($questions = $DB->get_records('questionnaire_question', array('survey_id' => $sid), 'id')) {
        foreach ($questions as $question) {
            $DB->delete_records('questionnaire_quest_choice', array('question_id' => $question->id));
        }
        $status = $status && $DB->delete_records('questionnaire_question', array('survey_id' => $sid));
    }
    // Delete all feedback sections and feedback messages for the survey.
    if ($fbsections = $DB->get_records('questionnaire_fb_sections', array('survey_id' => $sid), 'id')) {
        foreach ($fbsections as $fbsection) {
            $DB->delete_records('questionnaire_feedback', array('section_id' => $fbsection->id));
        }
        $status = $status && $DB->delete_records('questionnaire_fb_sections', array('survey_id' => $sid));
    }
    $status = $status && $DB->delete_records('questionnaire_survey', array('id' => $sid));
    return $status;
}
Exemple #4
0
function questionnaire_delete_survey($sid, $questionnaireid)
{
    global $DB;
    // Until backup is implemented, just mark the survey as archived.
    $status = true;
    // Delete all survey attempts and responses.
    if ($responses = $DB->get_records('questionnaire_response', array('survey_id' => $sid), 'id')) {
        foreach ($responses as $response) {
            $status = $status && questionnaire_delete_response($response->id);
        }
    }
    // There really shouldn't be any more, but just to make sure...
    $DB->delete_records('questionnaire_response', array('survey_id' => $sid));
    $DB->delete_records('questionnaire_attempts', array('qid' => $questionnaireid));
    // Delete all question data for the survey.
    if ($questions = $DB->get_records('questionnaire_question', array('survey_id' => $sid), 'id')) {
        foreach ($questions as $question) {
            $DB->delete_records('questionnaire_quest_choice', array('question_id' => $question->id));
        }
        $status = $status && $DB->delete_records('questionnaire_question', array('survey_id' => $sid));
    }
    $status = $status && $DB->delete_records('questionnaire_survey', array('id' => $sid));
    return $status;
}
         if (is_numeric($resp->username)) {
             if ($user = get_record('user', 'id', $resp->username)) {
                 $ruser = fullname($user);
             } else {
                 $ruser = '******' . get_string('unknown', 'questionnaire') . ' -';
             }
         } else {
             $ruser = $resp->username;
         }
     }
 } else {
     $resps = $respsallparticipants;
 }
 if (!empty($resps)) {
     foreach ($resps as $response) {
         questionnaire_delete_response($response->id);
     }
     echo '<br /><br />';
     if ($groupid == -1) {
         // deleted ALL responses
         $deletedstr = get_string('deletedallresp', 'questionnaire');
     } elseif ($groupid == -3) {
         $deletedstr = get_string('deletedallgroupresp', 'questionnaire', '<strong>' . get_string('groupnonmembers') . '</strong>');
     } else {
         // deleted responses in current group only
         $deletedstr = get_string('deletedallgroupresp', 'questionnaire', '<strong>' . groups_get_group_name($groupid) . '</strong>');
     }
     $sql = "SELECT R.id, R.survey_id, R.submitted, R.username\n                     FROM " . $CFG->prefix . "questionnaire_response R\n                     WHERE R.survey_id=" . $sid . " AND\n                           R.complete='y'\n                     ORDER BY R.id";
     if (!($resps = get_records_sql($sql))) {
         $respsallparticipants = array();
     }
function questionnaire_delete_survey($sid, $qid)
{
    global $QUESTIONNAIRE_ARCHIVED;
    /// Until backup is implemented, just mark the survey as archived.
    $status = true;
    /// Delete all responses for the survey:
    if ($responses = get_records('questionnaire_response', 'survey_id', $sid, 'id')) {
        foreach ($responses as $response) {
            $status = $status && questionnaire_delete_response($response->id);
        }
    }
    /// There really shouldn't be any more, but just to make sure...
    delete_records('questionnaire_response', 'survey_id', $sid);
    delete_records('questionnaire_attempts', 'qid', $qid);
    /// Delete all question data for the survey:
    if ($questions = get_records('questionnaire_question', 'survey_id', $sid, 'id')) {
        foreach ($questions as $question) {
            delete_records('questionnaire_quest_choice', 'question_id', $question->id);
        }
        $status = $status && delete_records('questionnaire_question', 'survey_id', $sid);
    }
    $status = $status && delete_records('questionnaire_survey', 'id', $sid);
    return $status;
}