/**
* Finds and returns a grade_grades_raw object based on 1-3 field values.
- *
+ * @static
* @param string $field1
* @param string $value1
* @param string $field2
* @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) {
--- /dev/null
+<?php // $Id$
+
+///////////////////////////////////////////////////////////////////////////
+// //
+// NOTICE OF COPYRIGHT //
+// //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment //
+// http://moodle.com //
+// //
+// Copyright (C) 2001-2003 Martin Dougiamas http://dougiamas.com //
+// //
+// This program is free software; you can redistribute it and/or modify //
+// it under the terms of the GNU General Public License as published by //
+// the Free Software Foundation; either version 2 of the License, or //
+// (at your option) any later version. //
+// //
+// This program is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
+// GNU General Public License for more details: //
+// //
+// http://www.gnu.org/copyleft/gpl.html //
+// //
+///////////////////////////////////////////////////////////////////////////
+
+require_once('grade_object.php');
+
+/**
+ * Class representing a grade outcome. It is responsible for handling its DB representation,
+ * modifying and returning its metadata.
+ */
+class grade_outcome extends grade_object {
+ /**
+ * DB Table (used by grade_object).
+ * @var string $table
+ */
+ var $table = 'grade_outcomes';
+
+ /**
+ * Array of class variables that are not part of the DB table fields
+ * @var array $nonfields
+ */
+ var $nonfields = array('table', 'nonfields', 'scale');
+
+ /**
+ * The course this outcome belongs to.
+ * @var int $courseid
+ */
+ var $courseid;
+
+ /**
+ * The shortname of the outcome.
+ * @var string $shortname
+ */
+ var $shortname;
+
+ /**
+ * The fullname of the outcome.
+ * @var string $fullname
+ */
+ var $fullname;
+
+ /**
+ * A full grade_scale object referenced by $this->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();
+ }
+ }
+}
+?>
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 {
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.
// 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() {