Skip to content

Commit

Permalink
MDL-9506 Added grade_outcome.php. Also added unit test for creation o…
Browse files Browse the repository at this point in the history
…f log in history table when grade_raw is updated.
  • Loading branch information
nicolasconnault committed May 3, 2007
1 parent 4d0263c commit 5501446
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 4 deletions.
5 changes: 2 additions & 3 deletions lib/grade/grade_grades_raw.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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) {
Expand Down
94 changes: 94 additions & 0 deletions lib/grade/grade_outcome.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?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();
}
}
}
?>
2 changes: 1 addition & 1 deletion lib/grade/grade_scale.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
1 change: 1 addition & 0 deletions lib/gradelib.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
27 changes: 27 additions & 0 deletions lib/simpletest/testgradelib.php
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down

0 comments on commit 5501446

Please sign in to comment.