diff --git a/lib/grade/grade_grades_raw.php b/lib/grade/grade_grades_raw.php index 1d9d8b37e856f..f79a07b46fa23 100644 --- a/lib/grade/grade_grades_raw.php +++ b/lib/grade/grade_grades_raw.php @@ -109,7 +109,7 @@ function grade_grades_raw($params=NULL, $fetch=true) { /** * Finds and returns a grade_grades_raw object based on 1-3 field values. - * + * @static * @param string $field1 * @param string $value1 * @param string $field2 @@ -119,8 +119,7 @@ function grade_grades_raw($params=NULL, $fetch=true) { * @param string $fields * @return object grade_category object or false if none found. */ - function fetch($field1, $value1, $field2='', $value2='', $field3='', $value3='', $fields="*") - { + function fetch($field1, $value1, $field2='', $value2='', $field3='', $value3='', $fields="*") { if ($object = get_record('grade_grades_raw', $field1, $value1, $field2, $value2, $field3, $value3, $fields)) { if (isset($this) && get_class($this) == 'grade_grades_raw') { foreach ($object as $param => $value) { diff --git a/lib/grade/grade_outcome.php b/lib/grade/grade_outcome.php new file mode 100644 index 0000000000000..9567c614bb74a --- /dev/null +++ b/lib/grade/grade_outcome.php @@ -0,0 +1,94 @@ +scaleid. + * @var object $scale + */ + var $scale; + + /** + * The id of the scale referenced by this outcome. + * @var int $scaleid + */ + var $scaleid; + + /** + * The userid of the person who last modified this outcome. + * @var int $usermodified + */ + var $usermodified; + + /** + * Constructor. Extends the basic functionality defined in grade_object. + * @param array $params Can also be a standard object. + * @param boolean $fetch Wether or not to fetch the corresponding row from the DB. + */ + function grade_grades_raw($params=NULL, $fetch=true) { + $this->grade_object($params, $fetch); + if (!empty($this->scaleid)) { + $this->scale = new grade_scale(array('id' => $this->scaleid)); + $this->scale->load_items(); + } + } +} +?> diff --git a/lib/grade/grade_scale.php b/lib/grade/grade_scale.php index 4d5e4bc112f2e..f5f56b3dbc4db 100644 --- a/lib/grade/grade_scale.php +++ b/lib/grade/grade_scale.php @@ -26,7 +26,7 @@ require_once('grade_object.php'); /** - * Class representing a grade item. It is responsible for handling its DB representation, + * Class representing a grade scale. It is responsible for handling its DB representation, * modifying and returning its metadata. */ class grade_scale extends grade_object { diff --git a/lib/gradelib.php b/lib/gradelib.php index bea775fe559f5..f190c83f47979 100644 --- a/lib/gradelib.php +++ b/lib/gradelib.php @@ -47,6 +47,7 @@ require_once($CFG->libdir . '/grade/grade_grades_raw.php'); require_once($CFG->libdir . '/grade/grade_grades_final.php'); require_once($CFG->libdir . '/grade/grade_scale.php'); +require_once($CFG->libdir . '/grade/grade_outcome.php'); /** * Extracts from the gradebook all the grade items attached to the calling object. diff --git a/lib/simpletest/testgradelib.php b/lib/simpletest/testgradelib.php index 9e9ab4dfad7f4..733ecaa702a15 100644 --- a/lib/simpletest/testgradelib.php +++ b/lib/simpletest/testgradelib.php @@ -1044,6 +1044,33 @@ function test_grade_category_has_children() { // GRADE_CALCULATION OBJECT +// GRADE_GRADES_RAW OBJECT + + function test_grade_raw_construct() { + + } + + /** + * Make sure that an update of a grade_raw object also updates the history table. + */ + function test_grade_raw_update_history() { + $grade_raw = new grade_grades_raw($this->grade_grades_raw[0]); + $oldgrade = $grade_raw->gradevalue; + $newgrade = 88; + $howmodified = 'manual'; + $note = 'unittest editing grade manually'; + $grade_raw->update($newgrade, $howmodified, $note); + + // Get last entry in the history log and check its attributes + $results = get_records('grade_history', 'itemid', $grade_raw->itemid, 'id DESC', '*', 0, 1); + $history_log = current($results); + $this->assertEqual($grade_raw->userid, $history_log->userid); + $this->assertEqual($oldgrade, $history_log->oldgrade); + $this->assertEqual($newgrade, $history_log->newgrade); + $this->assertEqual($howmodified, $history_log->howmodified); + $this->assertEqual($note, $history_log->note); + } + // SCALE OBJECT function test_scale_constructor() {