/** * @global object * @param array $userids * @param object $choicegroup Choice main table row * @param object $cm Course-module object * @param object $course Course object * @return bool */ function choicegroup_delete_responses($userids, $choicegroup, $cm, $course) { global $CFG, $DB, $context; require_once $CFG->libdir . '/completionlib.php'; if (!is_array($userids) || empty($userids)) { return false; } foreach ($userids as $num => $userid) { if (empty($userid)) { unset($userids[$num]); } } $completion = new completion_info($course); $eventparams = array('context' => $context, 'objectid' => $choicegroup->id); foreach ($userids as $userid) { if ($current = choicegroup_get_user_answer($choicegroup, $userid)) { $currentgroup = $DB->get_record('groups', array('id' => $current->id), 'id,name', MUST_EXIST); if (groups_is_member($current->id, $userid)) { groups_remove_member($current->id, $userid); $event = \mod_choicegroup\event\choice_removed::create($eventparams); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('choicegroup', $choicegroup); $event->trigger(); } // Update completion state if ($completion->is_enabled($cm) && $choicegroup->completionsubmit) { $completion->update_state($cm, COMPLETION_INCOMPLETE, $userid); } } } return true; }
$completion = new completion_info($course); $completion->set_module_viewed($cm); /// Submit any new data if there is any if (data_submitted() && is_enrolled($context, NULL, 'mod/choicegroup:choose') && confirm_sesskey()) { if ($choicegroup->multipleenrollmentspossible == 1) { $number_of_groups = optional_param('number_of_groups', '', PARAM_INT); for ($i = 0; $i < $number_of_groups; $i++) { $answer_value = optional_param('answer_' . $i, '', PARAM_INT); if ($answer_value != '') { choicegroup_user_submit_response($answer_value, $choicegroup, $USER->id, $course, $cm); } else { $answer_value_group_id = optional_param('answer_' . $i . '_groupid', '', PARAM_INT); if (groups_is_member($answer_value_group_id, $USER->id)) { $answer_value_group = $DB->get_record('groups', array('id' => $answer_value_group_id), 'id,name', MUST_EXIST); groups_remove_member($answer_value_group_id, $USER->id); $event = \mod_choicegroup\event\choice_removed::create($eventparams); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('choicegroup', $choicegroup); $event->trigger(); } } } } else { // multipleenrollmentspossible != 1 $timenow = time(); if (has_capability('mod/choicegroup:deleteresponses', $context)) { if ($action == 'delete') { //some responses need to be deleted choicegroup_delete_responses($userids, $choicegroup, $cm, $course); //delete responses.