From 24fc4e30b6b18796e61787fb9b285f1c4e309ea5 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 11 Feb 2016 10:39:18 +0800 Subject: [PATCH] MDL-53062 cbe: Fix errors in course_module_summary_exporter We should take the cm_info as required related data so we can pick the fields we want to export from it. --- admin/tool/lp/classes/external.php | 7 +++-- .../course_module_summary_exporter.php | 29 ++++++++----------- ..._competency_summary_in_course_exporter.php | 4 ++- .../output/course_competencies_page.php | 6 ++-- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/admin/tool/lp/classes/external.php b/admin/tool/lp/classes/external.php index d6313d96900..afa3f5fa5ec 100644 --- a/admin/tool/lp/classes/external.php +++ b/admin/tool/lp/classes/external.php @@ -1624,10 +1624,11 @@ class external extends external_api { $coursemodules = api::list_course_modules_using_competency($params['competencyid'], $params['courseid']); $result = array(); + $fastmodinfo = get_fast_modinfo($cm->course); + foreach ($coursemodules as $cmid) { - $cmrecord = get_coursemodule_from_id(null, $cmid); - $context = context_module::instance($cmrecord->id); - $exporter = new course_module_summary_exporter($cmrecord, array('context' => $context)); + $cminfo = $fastmodinfo->cms[$cmid]; + $exporter = new course_module_summary_exporter(null, array('cm' => $cminfo)); $coursemodulesummary = $exporter->export($output); $result[] = $coursemodulesummary; diff --git a/admin/tool/lp/classes/external/course_module_summary_exporter.php b/admin/tool/lp/classes/external/course_module_summary_exporter.php index a4fc1f3e8b6..8e5e888e2b1 100644 --- a/admin/tool/lp/classes/external/course_module_summary_exporter.php +++ b/admin/tool/lp/classes/external/course_module_summary_exporter.php @@ -29,41 +29,36 @@ use moodle_url; /** - * Class for exporting a course module summary from an stdClass. + * Class for exporting a course module summary from a cm_info class. * * @copyright 2015 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class course_module_summary_exporter extends exporter { + protected static function define_related() { + return array('cm' => 'cm_info'); + } + protected function get_other_values(renderer_base $output) { global $CFG; - require_once($CFG->libdir . '/modinfolib.php'); - - $cm = get_coursemodule_from_id(null, $this->data->id); - $fastmodinfo = get_fast_modinfo($cm->course)->cms[$cm->id]; + $context = $this->related['cm']->context; return array( - 'name' => $fastmodinfo->name, - 'url' => $fastmodinfo->url->out(), - 'iconurl' => $fastmodinfo->get_icon_url()->out() + 'id' => $this->related['cm']->id, + 'name' => external_format_string($this->related['cm']->name, $context->id), + 'url' => $this->related['cm']->url->out(), + 'iconurl' => $this->related['cm']->get_icon_url()->out() ); } - public static function define_properties() { + + public static function define_other_properties() { return array( 'id' => array( 'type' => PARAM_INT, ), - 'visible' => array( - 'type' => PARAM_BOOL - ) - ); - } - - public static function define_other_properties() { - return array( 'name' => array( 'type' => PARAM_TEXT ), diff --git a/admin/tool/lp/classes/external/user_competency_summary_in_course_exporter.php b/admin/tool/lp/classes/external/user_competency_summary_in_course_exporter.php index a0de820aff4..ccdb245647f 100644 --- a/admin/tool/lp/classes/external/user_competency_summary_in_course_exporter.php +++ b/admin/tool/lp/classes/external/user_competency_summary_in_course_exporter.php @@ -78,9 +78,11 @@ class user_competency_summary_in_course_exporter extends exporter { $coursemodules = api::list_course_modules_using_competency($this->related['competency']->get_id(), $this->related['course']->id); + $fastmodinfo = get_fast_modinfo($this->related['course']->id); $exportedmodules = array(); foreach ($coursemodules as $cm) { - $cmexporter = new course_module_summary_exporter($cm); + $cminfo = $fastmodinfo->cms[$cm]; + $cmexporter = new course_module_summary_exporter(null, array('cm' => $cminfo)); $exportedmodules[] = $cmexporter->export($output); } $result->coursemodules = $exportedmodules; diff --git a/admin/tool/lp/classes/output/course_competencies_page.php b/admin/tool/lp/classes/output/course_competencies_page.php index 916f7525d81..2246541bf01 100644 --- a/admin/tool/lp/classes/output/course_competencies_page.php +++ b/admin/tool/lp/classes/output/course_competencies_page.php @@ -133,9 +133,11 @@ class course_competencies_page implements renderable, templatable { $coursemodules = api::list_course_modules_using_competency($competency->get_id(), $this->courseid); + $fastmodinfo = get_fast_modinfo($this->courseid); $exportedmodules = array(); - foreach ($coursemodules as $cm) { - $cmexporter = new course_module_summary_exporter($cm); + foreach ($coursemodules as $cmid) { + $cminfo = $fastmodinfo->cms[$cmid]; + $cmexporter = new course_module_summary_exporter(null, array('cm' => $cminfo)); $exportedmodules[] = $cmexporter->export($output); }