From 712d5007771f76a29afafcd74266aa897831706a Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Mon, 7 May 2007 02:04:06 +0000 Subject: [PATCH] MDL-9506 Removed implicit loading of associated objects from constructors (grade_item and grade_grades_raw) to avoid very large numbers of sql queries when only little data is required. The load_scale() method, for example, needs to be called explicitly. --- lib/grade/grade_grades_raw.php | 4 ---- lib/grade/grade_item.php | 13 +++++++++---- lib/simpletest/grade/simpletest/testgradeitem.php | 2 ++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/grade/grade_grades_raw.php b/lib/grade/grade_grades_raw.php index 70fc5b04f1..dd62c4f5b3 100644 --- a/lib/grade/grade_grades_raw.php +++ b/lib/grade/grade_grades_raw.php @@ -108,8 +108,6 @@ class grade_grades_raw extends grade_object { */ function grade_grades_raw($params=NULL, $fetch=true) { $this->grade_object($params, $fetch); - $this->load_text(); - $this->load_scale(); } /** @@ -155,8 +153,6 @@ class grade_grades_raw extends grade_object { $this->$param = $value; } - $this->load_scale(); - $this->load_text(); return $this; } else { $object = new grade_grades_raw($object); diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index 959906683f..6fcac6265a 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -199,8 +199,6 @@ class grade_item extends grade_object { */ function grade_item($params=NULL, $fetch=true) { $this->grade_object($params, $fetch); - $this->load_scale(); - $this->load_outcome(); } /** @@ -262,8 +260,6 @@ class grade_item extends grade_object { $this->$param = $value; } - $this->load_scale(); - $this->load_outcome(); return $this; } else { $grade_item = new grade_item($grade_item); @@ -579,6 +575,15 @@ class grade_item extends grade_object { $gradevalue = $grade_raw->gradescale; } + // In case the scale objects haven't been loaded, do it now + if (empty($grade_raw->scale)) { + $grade_raw->load_scale(); + } + + if (empty($this->scale)) { + $this->load_scale(); + } + $grade_raw->grademax = count($grade_raw->scale->scale_items) - 1; $this->grademax = count($this->scale->scale_items) - 1; $grade_raw->grademin = 0; diff --git a/lib/simpletest/grade/simpletest/testgradeitem.php b/lib/simpletest/grade/simpletest/testgradeitem.php index 9772dad0d6..faa81e0bf8 100755 --- a/lib/simpletest/grade/simpletest/testgradeitem.php +++ b/lib/simpletest/grade/simpletest/testgradeitem.php @@ -304,10 +304,12 @@ class grade_item_test extends gradelib_test { // Load raw grade and its scale $grade_raw = new grade_grades_raw(array('scaleid' => $this->scale[0]->id)); $grade_raw->gradescale = 4; + $grade_raw->load_scale(); $this->assertEqual('Fairly neutral', $grade_raw->scale->scale_items[2]); // Load grade item and its scale $grade_item = new grade_item(array('scaleid' => $this->scale[1]->id)); + $grade_item->load_scale(); $this->assertEqual('Very Good', $grade_item->scale->scale_items[1]); // Test grade_item::adjust_scale -- 2.39.5