From 2fa3ea10f139346beeccff949266a1a0a325aeb3 Mon Sep 17 00:00:00 2001 From: skodak Date: Tue, 31 Jul 2007 13:04:35 +0000 Subject: [PATCH] edit/outcomeitem.php - fixed selection of outcomes to show only available course outcomes --- grade/edit/outcome/course.php | 10 +++---- grade/edit/tree/outcomeitem_form.php | 2 +- lib/grade/grade_outcome.php | 39 ++++++++++++++++++++++++++-- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/grade/edit/outcome/course.php b/grade/edit/outcome/course.php index 98aecd8236..b8ccb2985c 100644 --- a/grade/edit/outcome/course.php +++ b/grade/edit/outcome/course.php @@ -19,13 +19,9 @@ require_capability('moodle/course:update', $context); $gpr = new grade_plugin_return(array('type'=>'edit', 'plugin'=>'outcomes', 'courseid'=>$courseid)); // first of all fix the state of outcomes_course table -if (!$standardoutcomes = grade_outcome::fetch_all_global()) { - $standardoutcomes = array(); -} -if (!$co_custom = grade_outcome::fetch_all_local($courseid)) { - $co_custom = array(); -} -$co_standard_used = array(); +$standardoutcomes = grade_outcome::fetch_all_global(); +$co_custom = grade_outcome::fetch_all_local($courseid); +$co_standard_used = array(); $co_standard_notused = array(); if ($courseused = get_records('grade_outcomes_courses', 'courseid', $courseid, '', 'outcomeid')) { diff --git a/grade/edit/tree/outcomeitem_form.php b/grade/edit/tree/outcomeitem_form.php index e00ff1b034..eb9a5058a8 100644 --- a/grade/edit/tree/outcomeitem_form.php +++ b/grade/edit/tree/outcomeitem_form.php @@ -20,7 +20,7 @@ class edit_outcomeitem_form extends moodleform { // allow setting of outcomes on module items too $options = array(); - if ($outcomes = grade_outcome::fetch_all(array('courseid'=>$COURSE->id), true)) { + if ($outcomes = grade_outcome::fetch_all_available($COURSE->id)) { foreach ($outcomes as $outcome) { $options[$outcome->id] = $outcome->get_name(); } diff --git a/lib/grade/grade_outcome.php b/lib/grade/grade_outcome.php index af00c562de..62b094797d 100644 --- a/lib/grade/grade_outcome.php +++ b/lib/grade/grade_outcome.php @@ -162,20 +162,55 @@ class grade_outcome extends grade_object { /** * Static function returning all global outcomes + * @static * @return object */ function fetch_all_global() { - return grade_outcome::fetch_all(array('courseid'=>null)); + if (!$outcomes = grade_outcome::fetch_all(array('courseid'=>null))) { + $outcomes = array(); + } + return $outcomes; } /** * Static function returning all local course outcomes + * @static + * @param int $courseid * @return object */ function fetch_all_local($courseid) { - return grade_outcome::fetch_all(array('courseid'=>$courseid)); + if (!$outcomes =grade_outcome::fetch_all(array('courseid'=>$courseid))) { + $outcomes = array(); + } + return $outcomes; } + /** + * Static method - returns all outcomes available in course + * @static + * @param int $courseid + * @return array + */ + function fetch_all_available($courseid) { + global $CFG; + + $result = array(); + $sql = "SELECT go.* + FROM {$CFG->prefix}grade_outcomes go, {$CFG->prefix}grade_outcomes_courses goc + WHERE go.id = goc.outcomeid AND goc.courseid = {$courseid} + ORDER BY go.id ASC"; + + if ($datas = get_records_sql($sql)) { + foreach($datas as $data) { + $instance = new grade_outcome(); + grade_object::set_properties($instance, $data); + $result[$instance->id] = $instance; + } + } + return $result; + } + + /** * Returns the most descriptive field for this object. This is a standard method used * when we do not know the exact type of an object. -- 2.39.5