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.
This commit is contained in:
Damyon Wiese
2016-04-18 10:58:53 +08:00
committed by Frederic Massart
parent e3ceb79a3f
commit 24fc4e30b6
4 changed files with 23 additions and 23 deletions
+4 -3
View File
@@ -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;
@@ -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
),
@@ -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;
@@ -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);
}