diff --git a/admin/tool/lp/classes/external/user_competency_plan_exporter.php b/admin/tool/lp/classes/external/user_competency_plan_exporter.php index 8128da2e228..6f948044bc0 100644 --- a/admin/tool/lp/classes/external/user_competency_plan_exporter.php +++ b/admin/tool/lp/classes/external/user_competency_plan_exporter.php @@ -23,6 +23,9 @@ */ namespace tool_lp\external; +use renderer_base; +use stdClass; + /** * Class for exporting plan competency data. * @@ -35,4 +38,39 @@ class user_competency_plan_exporter extends persistent_exporter { return 'tool_lp\\user_competency_plan'; } + protected static function define_related() { + // We cache the scale so it does not need to be retrieved from the framework every time. + return array('scale' => 'grade_scale'); + } + + protected function get_values(renderer_base $output) { + $result = new stdClass(); + + if ($this->persistent->get_grade() === null) { + $gradename = '-'; + } else { + $gradename = $this->related['scale']->scale_items[$this->persistent->get_grade() - 1]; + } + $result->gradename = $gradename; + + if ($this->persistent->get_proficiency() === null) { + $proficiencyname = '-'; + } else { + $proficiencyname = get_string($this->persistent->get_proficiency() ? 'yes' : 'no'); + } + $result->proficiencyname = $proficiencyname; + + return (array) $result; + } + + protected static function define_properties() { + return array( + 'gradename' => array( + 'type' => PARAM_TEXT + ), + 'proficiencyname' => array( + 'type' => PARAM_RAW + ), + ); + } } diff --git a/admin/tool/lp/classes/output/plan_page.php b/admin/tool/lp/classes/output/plan_page.php index 00db4f39a0a..9b20a523dc5 100644 --- a/admin/tool/lp/classes/output/plan_page.php +++ b/admin/tool/lp/classes/output/plan_page.php @@ -28,8 +28,6 @@ use templatable; use stdClass; use tool_lp\api; use tool_lp\plan; -use tool_lp\user_competency; -use tool_lp\external\user_competency_exporter; use tool_lp\external\competency_exporter; /** @@ -74,8 +72,10 @@ class plan_page implements renderable, templatable { $data->iscompleted = $this->plan->get_status() == plan::STATUS_COMPLETE; if ($data->iscompleted) { $ucproperty = 'usercompetencyplan'; + $ucexporter = 'tool_lp\\external\\user_competency_plan_exporter'; } else { $ucproperty = 'usercompetency'; + $ucexporter = 'tool_lp\\external\\user_competency_exporter'; } foreach ($pclist as $pc) { @@ -94,8 +94,8 @@ class plan_page implements renderable, templatable { // Prepare the data. $exporter = new competency_exporter($comp, array('context' => $framework->get_context())); $competency = $exporter->export($output); - $exporter = new user_competency_exporter($usercomp, array('scale' => $scale)); - $competency->usercompetency = $exporter->export($output); + $exporter = new $ucexporter($usercomp, array('scale' => $scale)); + $competency->$ucproperty = $exporter->export($output); $data->competencies[] = $competency; }