From 5501446df5239dea88da7e16763fa75c2be481aa Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Thu, 3 May 2007 08:51:48 +0000 Subject: [PATCH] MDL-9506 Added grade_outcome.php. Also added unit test for creation of log in history table when grade_raw is updated. --- lib/grade/grade_grades_raw.php | 5 +- lib/grade/grade_outcome.php | 94 +++++++++++++++++++++++++++++++++ lib/grade/grade_scale.php | 2 +- lib/gradelib.php | 1 + lib/simpletest/testgradelib.php | 27 ++++++++++ 5 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 lib/grade/grade_outcome.php diff --git a/lib/grade/grade_grades_raw.php b/lib/grade/grade_grades_raw.php index 1d9d8b37e8..f79a07b46f 100644 --- a/lib/grade/grade_grades_raw.php +++ b/lib/grade/grade_grades_raw.php @@ -109,7 +109,7 @@ class grade_grades_raw extends grade_object { /** * 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 @@ class grade_grades_raw extends grade_object { * @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 0000000000..9567c614bb --- /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 4d5e4bc112..f5f56b3dbc 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 bea775fe55..f190c83f47 100644 --- a/lib/gradelib.php +++ b/lib/gradelib.php @@ -47,6 +47,7 @@ require_once($CFG->libdir . '/grade/grade_calculation.php'); 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 9e9ab4dfad..733ecaa702 100644 --- a/lib/simpletest/testgradelib.php +++ b/lib/simpletest/testgradelib.php @@ -1044,6 +1044,33 @@ class gradelib_test extends UnitTestCase { // 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() { -- 2.39.5