public static function submit_choice_response($choiceid, $responses) {
        global $USER;

        $warnings = array();
        $params = self::validate_parameters(self::submit_choice_response_parameters(),
                                            array(
                                                'choiceid' => $choiceid,
                                                'responses' => $responses
                                            ));

        if (!$choice = choice_get_choice($params['choiceid'])) {
            throw new moodle_exception("invalidcoursemodule", "error");
        }
        list($course, $cm) = get_course_and_cm_from_instance($choice, 'choice');

        $context = context_module::instance($cm->id);
        self::validate_context($context);

        require_capability('mod/choice:choose', $context);

        $timenow = time();
        if (!empty($choice->timeopen) && ($choice->timeopen > $timenow)) {
            throw new moodle_exception("notopenyet", "choice", '', userdate($choice->timeopen));
        } else if (!empty($choice->timeclose) && ($timenow > $choice->timeclose)) {
            throw new moodle_exception("expired", "choice", '', userdate($choice->timeclose));
        }

        if (!choice_get_my_response($choice) or $choice->allowupdate) {
            // When a single response is given, we convert the array to a simple variable
            // in order to avoid choice_user_submit_response to check with allowmultiple even
            // for a single response.
            if (count($params['responses']) == 1) {
                $params['responses'] = reset($params['responses']);
            }
            choice_user_submit_response($params['responses'], $choice, $USER->id, $course, $cm);
        } else {
            throw new moodle_exception('missingrequiredcapability', 'webservice', '', 'allowupdate');
        }
        $answers = choice_get_my_response($choice);

        return array(
            'answers' => $answers,
            'warnings' => $warnings
        );
    }
public static function submit_choice_response($choiceid, $responses) {
        global $USER;

        $warnings = array();
        $params = self::validate_parameters(self::submit_choice_response_parameters(),
                                            array(
                                                'choiceid' => $choiceid,
                                                'responses' => $responses
                                            ));

        if (!$choice = choice_get_choice($params['choiceid'])) {
            throw new moodle_exception("invalidcoursemodule", "error");
        }
        list($course, $cm) = get_course_and_cm_from_instance($choice, 'choice');

        $context = context_module::instance($cm->id);
        self::validate_context($context);

        require_capability('mod/choice:choose', $context);

        $timenow = time();
        if (!empty($choice->timeopen) && ($choice->timeopen > $timenow)) {
            throw new moodle_exception("notopenyet", "choice", '', userdate($choice->timeopen));
        } else if (!empty($choice->timeclose) && ($timenow > $choice->timeclose)) {
            throw new moodle_exception("expired", "choice", '', userdate($choice->timeclose));
        }

        if (!choice_get_my_response($choice) or $choice->allowupdate) {
            // When a single response is given, we convert the array to a simple variable
            // in order to avoid choice_user_submit_response to check with allowmultiple even
            // for a single response.
            if (count($params['responses']) == 1) {
                $params['responses'] = reset($params['responses']);
            }
            choice_user_submit_response($params['responses'], $choice, $USER->id, $course, $cm);
        } else {
            throw new moodle_exception('missingrequiredcapability', 'webservice', '', 'allowupdate');
        }
        $answers = choice_get_my_response($choice);

        return array(
            'answers' => $answers,
            'warnings' => $warnings
        );
    }
public static function submit_choice_response ( $ choiceid , $ responses ) { global $ USER ; $ warnings = array ( ) ; $ params = self :: validate_parameters ( self :: submit_choice_response_parameters ( ) , array ( 'choiceid' => $ choiceid , 'responses' => $ responses ) ) ; if ( ! $ choice = choice_get_choice ( $ params [ 'choiceid' ] ) ) { throw new moodle_exception ( "invalidcoursemodule" , "error" ) ; } list ( $ course , $ cm ) = get_course_and_cm_from_instance ( $ choice , 'choice' ) ; $ context = context_module :: instance ( $ cm -> id ) ; self :: validate_context ( $ context ) ; require_capability ( 'mod/choice:choose' , $ context ) ; $ timenow = time ( ) ; if ( ! empty ( $ choice -> timeopen ) && ( $ choice -> timeopen > $ timenow ) ) { throw new moodle_exception ( "notopenyet" , "choice" , '' , userdate ( $ choice -> timeopen ) ) ; } else if ( ! empty ( $ choice -> timeclose ) && ( $ timenow > $ choice -> timeclose ) ) { throw new moodle_exception ( "expired" , "choice" , '' , userdate ( $ choice -> timeclose ) ) ; } if ( ! choice_get_my_response ( $ choice ) or $ choice -> allowupdate ) { // When a single response is given, we convert the array to a simple variable // in order to avoid choice_user_submit_response to check with allowmultiple even // for a single response. if ( count ( $ params [ 'responses' ] ) == 1 ) { $ params [ 'responses' ] = reset ( $ params [ 'responses' ] ) ; } choice_user_submit_response ( $ params [ 'responses' ] , $ choice , $ USER -> id , $ course , $ cm ) ; } else { throw new moodle_exception ( 'missingrequiredcapability' , 'webservice' , '' , 'allowupdate' ) ; } $ answers = choice_get_my_response ( $ choice ) ; return array ( 'answers' => $ answers , 'warnings' => $ warnings ) ; }
Submit choice responses

@param int $choiceid the choice instance id
@param array $responses the response ids
@return array answers information and warnings
@since Moodle 3.0
Submit choice responses