【问题标题】:Create quiz using rest api in moodle在moodle中使用rest api创建测验
【发布时间】:2014-07-15 16:17:13
【问题描述】:

我是 moodle 的新手,我正在尝试在 moodle 中创建 rest api,以便使用以下代码在 moodle 中添加一个新测验。它在测验表中添加了条目,但它没有显示在课程 UI 中,这是什么原因?

谁能帮助我使用rest api添加测验还需要做什么?

public static function create_quiz($courseid, $quizname, $timeopen, $timeclose, $attemptallowed, $intro, $questions) {
        global $DB;
        $params = self::validate_parameters(self::create_quiz_parameters(), array('courseid' => $courseid,
                    'quizname' => $quizname,
                    'timeopen' => $timeopen,
                    'timeclose' => $timeclose,
                    'attemptallowed' => $attemptallowed,
                    'intro' => $intro,
                    'questions' => $questions));
        $q_param = array('courseid' => $params['courseid'],
            'quizname' => $params['quizname']);
        //var_dump("Query parameter".$q_param);
        $sql = "SELECT q.id
           FROM {quiz} q          
           WHERE q.course=:courseid AND q.name=:quizname";
        $rqa = $DB->get_record_sql($sql, $q_param);
        if (isset($rqa) && $rqa != null) {
            $result = array();
            $result['quizid'] = 0;
            $result['status'] = "failure";
            $result['message'] = "This quiz name already exists in this course. Please try with different quiz name";
        } else {
            $quiz = new stdClass();
            $quiz->course = $courseid;
            $quiz->name = $quizname;
            $quiz->timeopen = $timeopen;
            $quiz->timeclose = $timeclose;
            $quiz->attempts = $attemptallowed;
            $quiz->intro = $intro;
            $quiz->questions = $questions;
            $rqa = $DB->insert_record('quiz', $quiz);
            if (isset($rqa)) {
                $result = array();
                $result['quizid'] = $rqa;
                $result['status'] = "success";
                $result['message'] = "Quiz created succesfully";
            } else {
                $result = array();
                $result['quizid'] = 0;
                $result['status'] = "failure";
                $result['message'] = "Some error occured please try again";
            }
    }
    return $result;
}

/**
 * Describes the create_category return value
 * @return external_single_structure
 * @since  Moodle 2.4
 */
public static function create_quiz_returns() {
    return new external_single_structure(
                    array('quizid' => new external_value(PARAM_INT, 'id of quiz'),
                        'status' => new external_value(PARAM_ALPHA, "Status of quiz"),
                        'message' => new external_value(PARAM_TEXT, "quiz message")
            ));
} 

【问题讨论】:

    标签: php rest moodle


    【解决方案1】:

    您需要将模块添加到课程中,这里有一些代码可以做到这一点

    addmoduletocourse($courseid, $rqa, 'quiz');
    
    function addmoduletocourse($courseid, $instanceid, $modname, $sectionnum = 0) {
        global $DB;
    
        course_create_sections_if_missing($courseid, $sectionnum);
    
        $moduleid = $DB->get_field('modules', 'id', array('name' => $modname), MUST_EXIST);
        $sectionid = $DB->get_field('course_sections', 'id', array('course' => $courseid, 'section' => $sectionnum), MUST_EXIST);
    
        // Add the module to the course.
        $newcm = new stdClass();
        $newcm->course           = $courseid;
        $newcm->module           = $moduleid;
        $newcm->section          = $sectionid;
        $newcm->added            = time();
        $newcm->instance         = $instanceid;
        $newcm->visible          = 1;
        $newcm->groupmode        = 0;
        $newcm->groupingid       = 0;
        $newcm->groupmembersonly = 0;
        $newcm->showdescription  = 0;
        $cmid = add_course_module($newcm);
    
        // And add it to the section.
        course_add_cm_to_section($courseid, $cmid, $sectionnum);
    
    }
    

    【讨论】:

    • 您好,感谢您的建议。我是否需要再次产生现金?因为我仍然无法在 ui 上查看测验。
    • 嗨,非常感谢。真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2017-05-15
    • 1970-01-01
    • 2015-12-29
    • 2016-07-22
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多