Skip to content

Commit afe3b05

Browse files
authored
delete all includes incomplete responses (#562)
1 parent 1f43c39 commit afe3b05

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

questionnaire.class.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -826,9 +826,10 @@ public function count_submissions($userid=false, $groupid=0) {
826826
*
827827
* @param int|bool $userid
828828
* @param int $groupid
829+
* @param int|bool $includeincomplete
829830
* @return array
830831
*/
831-
public function get_responses($userid=false, $groupid=0) {
832+
public function get_responses($userid=false, $groupid=0, $includeincomplete=false) {
832833
global $DB;
833834

834835
$params = [];
@@ -840,6 +841,12 @@ public function get_responses($userid=false, $groupid=0) {
840841
$params['groupid'] = $groupid;
841842
}
842843

844+
$statuscnd = '';
845+
if (!$includeincomplete) {
846+
$statuscnd = ' AND r.complete = :status ';
847+
$params['status'] = 'y';
848+
}
849+
843850
// Since submission can be across questionnaires in the case of public questionnaires, need to check the realm.
844851
// Public questionnaires can have responses to multiple questionnaire instances.
845852
if ($this->survey_is_public_master()) {
@@ -848,16 +855,14 @@ public function get_responses($userid=false, $groupid=0) {
848855
'INNER JOIN {questionnaire} q ON r.questionnaireid = q.id ' .
849856
'INNER JOIN {questionnaire_survey} s ON q.sid = s.id ' .
850857
$groupsql .
851-
'WHERE s.id = :surveyid AND r.complete = :status' . $groupcnd;
858+
'WHERE s.id = :surveyid' . $statuscnd . $groupcnd;
852859
$params['surveyid'] = $this->sid;
853-
$params['status'] = 'y';
854860
} else {
855861
$sql = 'SELECT r.* ' .
856862
'FROM {questionnaire_response} r ' .
857863
$groupsql .
858-
'WHERE r.questionnaireid = :questionnaireid AND r.complete = :status' . $groupcnd;
864+
'WHERE r.questionnaireid = :questionnaireid' . $statuscnd . $groupcnd;
859865
$params['questionnaireid'] = $this->id;
860-
$params['status'] = 'y';
861866
}
862867
if ($userid) {
863868
$sql .= ' AND r.userid = :userid';

report.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,9 @@
267267
case 'delallresp': // Delete all responses? Ask for confirmation.
268268
require_capability('mod/questionnaire:deleteresponses', $context);
269269

270+
// Get all responses including incompletes.
271+
$respsallparticipants = $questionnaire->get_responses(false, 0, true);
272+
270273
if (!empty($respsallparticipants)) {
271274

272275
// Print the page header.
@@ -357,6 +360,9 @@
357360
throw new \moodle_exception('surveyowner', 'mod_questionnaire');
358361
}
359362

363+
// Get all responses including incompletes.
364+
$respsallparticipants = $questionnaire->get_responses(false, 0, true);
365+
360366
// Available group modes (0 = no groups; 1 = separate groups; 2 = visible groups).
361367
if ($groupmode > 0) {
362368
switch ($currentgroupid) {

0 commit comments

Comments
 (0)