diff --git a/questionnaire.class.php b/questionnaire.class.php index e366f70b..4e88c5e3 100644 --- a/questionnaire.class.php +++ b/questionnaire.class.php @@ -826,9 +826,10 @@ public function count_submissions($userid=false, $groupid=0) { * * @param int|bool $userid * @param int $groupid + * @param int|bool $includeincomplete * @return array */ - public function get_responses($userid=false, $groupid=0) { + public function get_responses($userid=false, $groupid=0, $includeincomplete=false) { global $DB; $params = []; @@ -840,6 +841,12 @@ public function get_responses($userid=false, $groupid=0) { $params['groupid'] = $groupid; } + $statuscnd = ''; + if (!$includeincomplete) { + $statuscnd = ' AND r.complete = :status '; + $params['status'] = 'y'; + } + // Since submission can be across questionnaires in the case of public questionnaires, need to check the realm. // Public questionnaires can have responses to multiple questionnaire instances. if ($this->survey_is_public_master()) { @@ -848,16 +855,14 @@ public function get_responses($userid=false, $groupid=0) { 'INNER JOIN {questionnaire} q ON r.questionnaireid = q.id ' . 'INNER JOIN {questionnaire_survey} s ON q.sid = s.id ' . $groupsql . - 'WHERE s.id = :surveyid AND r.complete = :status' . $groupcnd; + 'WHERE s.id = :surveyid' . $statuscnd . $groupcnd; $params['surveyid'] = $this->sid; - $params['status'] = 'y'; } else { $sql = 'SELECT r.* ' . 'FROM {questionnaire_response} r ' . $groupsql . - 'WHERE r.questionnaireid = :questionnaireid AND r.complete = :status' . $groupcnd; + 'WHERE r.questionnaireid = :questionnaireid' . $statuscnd . $groupcnd; $params['questionnaireid'] = $this->id; - $params['status'] = 'y'; } if ($userid) { $sql .= ' AND r.userid = :userid'; diff --git a/report.php b/report.php index b7b16152..ea8331a8 100755 --- a/report.php +++ b/report.php @@ -267,6 +267,9 @@ case 'delallresp': // Delete all responses? Ask for confirmation. require_capability('mod/questionnaire:deleteresponses', $context); + // Get all responses including incompletes. + $respsallparticipants = $questionnaire->get_responses(false, 0, true); + if (!empty($respsallparticipants)) { // Print the page header. @@ -357,6 +360,9 @@ throw new \moodle_exception('surveyowner', 'mod_questionnaire'); } + // Get all responses including incompletes. + $respsallparticipants = $questionnaire->get_responses(false, 0, true); + // Available group modes (0 = no groups; 1 = separate groups; 2 = visible groups). if ($groupmode > 0) { switch ($currentgroupid) {