コード例 #1
0
/**
 * @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;
}
コード例 #2
0
$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.