Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Gradebook API: Difference between revisions

From MoodleDocs
Line 35: Line 35:
===Callbacks===
===Callbacks===


Gradebook callbacks should available in /mod/$modname/lib.php There are two required callbacks.
Gradebook callbacks should available in /mod/$modname/lib.php For example the assignment activity module gradebook callbacks are in /mod/assignment/lib.php


===={$modname}_update_grades()====
There are two required callbacks.


For example the callback for the assignment module is assignment_update_grades().
===={$modname}_grade_item_update()====


Get module to update all grade items
For example the callback for the assignment module is assignment_grade_item_update().


===={$modname}_grade_item_update====
This callback creates or updates the grade item for given activity module instance by calling grade_update().


For example the callback for the assignment module is assignment_grade_item_update().
===={$modname}_update_grades()====
 
For example the callback for the assignment module is assignment_update_grades().


Create/update grade item for given activity module instance
This callback creates or updates the grade items for all instances of the activity module. This may be as simple as retrieving all instances of your activity module from the database and iterating over them calling {$modname}_grade_item_update() on each instance.


==Examples==
==Examples==

Revision as of 08:32, 17 January 2012

Overview

This document explains how custom Moodle activity modules may use the Gradebook API to read and write student grades.

The Gradebook API allows you to read and write from the gradebook. It also allows you to provide an interface for detailed grading information.

File Locations

The main file of interest for the gradebook API is /lib/gradelib.php

Functions

grade_update() is used to submit new or updated grades.

grade_update_outcomes() is used to submit new or updated outcomes.

grade_get_grades() is used to retrieve grade information about a given activity. Optionally you can retrieve student grades for that activity.

Infrastructure Required From a Custom Activity Module

/mod/$modname/grade.php

A teacher or student clicking on the activity name in the gradebook is sent to grade.php within the activities directory. It should redirect the user to the appropriate page. For example, sending students to the activity itself while sending teachers to a list of students who have completed the activity.

grade.php is supplied with the following parameters.

$id = required_param('id', PARAM_INT); // Course module ID $itemnumber = optional_param('itemnumber', 0, PARAM_INT); // Item number, may be != 0 for activities that allow more than one grade per user $userid = optional_param('userid', 0, PARAM_INT); // Graded user ID (optional)

Typically you will use has_capability() to determine where to send the user then call redirect().

Callbacks

Gradebook callbacks should available in /mod/$modname/lib.php For example the assignment activity module gradebook callbacks are in /mod/assignment/lib.php

There are two required callbacks.

{$modname}_grade_item_update()

For example the callback for the assignment module is assignment_grade_item_update().

This callback creates or updates the grade item for given activity module instance by calling grade_update().

{$modname}_update_grades()

For example the callback for the assignment module is assignment_update_grades().

This callback creates or updates the grade items for all instances of the activity module. This may be as simple as retrieving all instances of your activity module from the database and iterating over them calling {$modname}_grade_item_update() on each instance.

Examples

What is the difference between these methods exactly? Both are required by lib/gradelib.php grade_update_mod_grades() which calls both of them but all our implementations of %modname%_update_grades() just seem to call %modname%_grade_item_update(). Are we updating the grade twice for every call to grade_update_mod_grades()?