Moodle API Quizzes - C0D3D3V/Moodle-DL GitHub Wiki

To download quizzes the following functions are of interest:

Area Name Introduced in Description
mod_quiz mod_quiz_get_quizzes_by_courses 3.1 (2016052300) Returns a list of quizzes in a provided list of courses, if no list is provided all quizzes that the user can view will be returned.
mod_quiz mod_quiz_get_user_attempts 3.1 (2016052300) Return a list of attempts for the given quiz and user.
mod_quiz mod_quiz_get_attempt_summary 3.1 (2016052300) Returns a summary of a quiz attempt before it is submitted.
mod_quiz mod_quiz_get_attempt_review 3.1 (2016052300) Returns review information for the given finished attempt, can be used by users or teachers.

Quizzes are part of the course content.

An example module which returns core_course_get_contents:

{
    "id": 59,
    "url": "http://10.111.0.107/moodle/mod/quiz/view.php?id=59",
    "name": "Super Quiz",
    "instance": 1,
    "contextid": 104,
    "visible": 1,
    "uservisible": true,
    "visibleoncoursepage": 1,
    "modicon": "http://10.111.0.107/moodle/theme/image.php/boost/quiz/1633802793/icon",
    "modname": "quiz",
    "modplural": "Tests",
    "availability": null,
    "indent": 0,
    "onclick": "",
    "afterlink": null,
    "customdata": "\"\"",
    "noviewlink": false,
    "completion": 1,
    "completiondata": {
        "state": 0,
        "timecompleted": 0,
        "overrideby": null,
        "valueused": false
    }
}

The module indicates where the quiz is located in the course, nothing more can be derived from it.

Load a list of all quizzes

mod_quiz_get_quizzes_by_courses

Parameter
Funktion
Returns

With the help of mod_quiz_get_quizzes_by_courses all quizzes-id's of all courses can be loaded. It exists since Version 3.1. The function takes the following arguments:

  • courseids is an array of the course-ids from which the quizzes are to be loaded.

mod_quiz_get_quizzes_by_courses returns a list of quizzes:

{
    "quizzes": [
        {
            "id": 1,
            "course": 3,
            "coursemodule": 59,
            "name": "Super Quiz",
            "intro": "",
            "introformat": 1,
            "introfiles": [],
            "timeopen": 1633951500,
            "timeclose": 1633971060,
            "timelimit": 300,
            "overduehandling": "autosubmit",
            "graceperiod": 0,
            "preferredbehaviour": "immediatefeedback",
            "canredoquestions": 0,
            "attempts": 1,
            "attemptonlast": 0,
            "grademethod": 1,
            "decimalpoints": 2,
            "questiondecimalpoints": -1,
            "reviewattempt": 69904,
            "reviewcorrectness": 4352,
            "reviewmarks": 4352,
            "reviewspecificfeedback": 4352,
            "reviewgeneralfeedback": 4352,
            "reviewrightanswer": 4352,
            "reviewoverallfeedback": 4352,
            "questionsperpage": 1,
            "navmethod": "free",
            "sumgrades": 10,
            "grade": 10,
            "browsersecurity": "-",
            "delay1": 0,
            "delay2": 0,
            "showuserpicture": 0,
            "showblocks": 0,
            "completionattemptsexhausted": 0,
            "completionpass": 0,
            "allowofflineattempts": 0,
            "autosaveperiod": 60,
            "hasfeedback": 0,
            "hasquestions": 1,
            "section": 1,
            "visible": 1,
            "groupmode": 0,
            "groupingid": 0
        }
    ],
    "warnings": []
}

Important attributes:

  • course is the id of the course the quiz belongs to.
  • id is the id of the quiz
  • coursemodule is the module id that was returned by core_course_get_contents
  • name is the name of the quiz

Load a list of all attempts of a quiz

mod_quiz_get_user_attempts

Parameter
Funktion
Returns
Structure

To get a list of all questions in the attempt there are two functions. mod_quiz_get_attempt_summary is used if state="inprogress" and mod_quiz_get_attempt_review is used if state="finished". Both functions work identically and return in questions all questions.

mod_quiz_get_attempt_summary

Parameter
Funktion
Returns

mod_quiz_get_attempt_review

Parameter
Funktion
Returns

To finally download all quizzes you need to merge all questions into one HTML file and add a stylesheed (https://your.moodle/theme/styles.php/boost/-1/all)