MDL-52064 cbe: Exporters are generic exporters - not for output

Making the persistent_exporter implement templatable, implies that the
exporters are designed for output - but they are not - they are designed
for any data returned through an external function. So lets not make them templatable,
and make the default function name "export".
This commit is contained in:
Damyon Wiese
2016-04-18 10:58:41 +08:00
committed by Frederic Massart
parent a214d35ec2
commit 5db5c22c15
14 changed files with 40 additions and 41 deletions
+20 -20
View File
@@ -316,7 +316,7 @@ class external extends external_api {
$params = (object) $params; $params = (object) $params;
$result = api::create_framework($params); $result = api::create_framework($params);
$exporter = new competency_framework_exporter($result); $exporter = new competency_framework_exporter($result);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
return $record; return $record;
} }
@@ -365,7 +365,7 @@ class external extends external_api {
self::validate_context($framework->get_context()); self::validate_context($framework->get_context());
$output = $PAGE->get_renderer('tool_lp'); $output = $PAGE->get_renderer('tool_lp');
$exporter = new competency_framework_exporter($framework); $exporter = new competency_framework_exporter($framework);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
return $record; return $record;
} }
@@ -671,7 +671,7 @@ class external extends external_api {
$records = array(); $records = array();
foreach ($results as $result) { foreach ($results as $result) {
$exporter = new competency_framework_exporter($result); $exporter = new competency_framework_exporter($result);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
array_push($records, $record); array_push($records, $record);
} }
return $records; return $records;
@@ -1130,7 +1130,7 @@ class external extends external_api {
$params = (object) $params; $params = (object) $params;
$result = api::create_competency($params); $result = api::create_competency($params);
$exporter = new competency_exporter($result, array('context' => $context)); $exporter = new competency_exporter($result, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
return $record; return $record;
} }
@@ -1181,7 +1181,7 @@ class external extends external_api {
self::validate_context($context); self::validate_context($context);
$output = $PAGE->get_renderer('tool_lp'); $output = $PAGE->get_renderer('tool_lp');
$exporter = new competency_exporter($competency, array('context' => $context)); $exporter = new competency_exporter($competency, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
return $record; return $record;
} }
@@ -1426,7 +1426,7 @@ class external extends external_api {
$records = array(); $records = array();
foreach ($results as $result) { foreach ($results as $result) {
$exporter = new competency_exporter($result, array('context' => $context)); $exporter = new competency_exporter($result, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
array_push($records, $record); array_push($records, $record);
} }
return $records; return $records;
@@ -1499,14 +1499,14 @@ class external extends external_api {
$records = array(); $records = array();
foreach ($results as $result) { foreach ($results as $result) {
$exporter = new competency_exporter($result, array('context' => $context)); $exporter = new competency_exporter($result, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
if ($params['includerelated']) { if ($params['includerelated']) {
$record->relatedcompetencies = array(); $record->relatedcompetencies = array();
$relatedcomps = $result->get_related_competencies(); $relatedcomps = $result->get_related_competencies();
foreach ($relatedcomps as $comp) { foreach ($relatedcomps as $comp) {
$exporter = new competency_exporter($comp, array('context' => $context)); $exporter = new competency_exporter($comp, array('context' => $context));
$comprecord = $exporter->export_for_template($output); $comprecord = $exporter->export($output);
$record->relatedcompetencies[] = $comprecord; $record->relatedcompetencies[] = $comprecord;
} }
} }
@@ -1995,7 +1995,7 @@ class external extends external_api {
} }
$context = $contextcache[$competency->get_competencyframeworkid()]; $context = $contextcache[$competency->get_competencyframeworkid()];
$exporter = new competency_exporter($competency, array('context' => $context)); $exporter = new competency_exporter($competency, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
array_push($results, $record); array_push($results, $record);
} }
return $results; return $results;
@@ -2431,7 +2431,7 @@ class external extends external_api {
$result = api::create_template($params); $result = api::create_template($params);
$exporter = new template_exporter($result); $exporter = new template_exporter($result);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
return $record; return $record;
} }
@@ -2481,7 +2481,7 @@ class external extends external_api {
$output = $PAGE->get_renderer('tool_lp'); $output = $PAGE->get_renderer('tool_lp');
$exporter = new template_exporter($template); $exporter = new template_exporter($template);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
return $record; return $record;
} }
@@ -2669,7 +2669,7 @@ class external extends external_api {
$result = api::duplicate_template($params['id']); $result = api::duplicate_template($params['id']);
$exporter = new template_exporter($result); $exporter = new template_exporter($result);
return $exporter->export_for_template($output); return $exporter->export($output);
} }
/** /**
@@ -2771,7 +2771,7 @@ class external extends external_api {
$records = array(); $records = array();
foreach ($results as $result) { foreach ($results as $result) {
$exporter = new template_exporter($result); $exporter = new template_exporter($result);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
array_push($records, $record); array_push($records, $record);
} }
return $records; return $records;
@@ -2969,7 +2969,7 @@ class external extends external_api {
foreach ($templates as $template) { foreach ($templates as $template) {
$exporter = new template_exporter($template); $exporter = new template_exporter($template);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$records[] = $record; $records[] = $record;
} }
} }
@@ -3072,7 +3072,7 @@ class external extends external_api {
} }
$context = $contextcache[$competency->get_competencyframeworkid()]; $context = $contextcache[$competency->get_competencyframeworkid()];
$exporter = new competency_exporter($competency, array('context' => $context)); $exporter = new competency_exporter($competency, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
array_push($results, $record); array_push($results, $record);
} }
return $results; return $results;
@@ -3642,7 +3642,7 @@ class external extends external_api {
$result = api::create_plan($params); $result = api::create_plan($params);
$exporter = new plan_exporter($result); $exporter = new plan_exporter($result);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$record->usercanupdate = $result->can_manage(); $record->usercanupdate = $result->can_manage();
return external_api::clean_returnvalue(self::create_plan_returns(), $record); return external_api::clean_returnvalue(self::create_plan_returns(), $record);
} }
@@ -3756,7 +3756,7 @@ class external extends external_api {
$params = (object) $params; $params = (object) $params;
$result = api::update_plan($params); $result = api::update_plan($params);
$exporter = plan_exporter($result); $exporter = plan_exporter($result);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$record->usercanupdate = $result->can_manage(); $record->usercanupdate = $result->can_manage();
return external_api::clean_returnvalue(self::update_plan_returns(), $record); return external_api::clean_returnvalue(self::update_plan_returns(), $record);
} }
@@ -3803,7 +3803,7 @@ class external extends external_api {
$output = $PAGE->get_renderer('tool_lp'); $output = $PAGE->get_renderer('tool_lp');
$exporter = new plan_exporter($plan); $exporter = new plan_exporter($plan);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$record->usercanupdate = $plan->can_manage(); $record->usercanupdate = $plan->can_manage();
return external_api::clean_returnvalue(self::read_plan_returns(), $record); return external_api::clean_returnvalue(self::read_plan_returns(), $record);
} }
@@ -3966,7 +3966,7 @@ class external extends external_api {
$context = $contextcache[$r->competency->get_competencyframeworkid()]; $context = $contextcache[$r->competency->get_competencyframeworkid()];
$exporter = new competency_exporter($r->competency, array('context' => $context)); $exporter = new competency_exporter($r->competency, array('context' => $context));
$r->competency = $exporter->export_for_template($output); $r->competency = $exporter->export($output);
} else { } else {
if (!isset($scalecache[$r->competency->get_competencyframeworkid()])) { if (!isset($scalecache[$r->competency->get_competencyframeworkid()])) {
$scalecache[$r->competency->get_competencyframeworkid()] = $r->competency->get_framework()->get_scale(); $scalecache[$r->competency->get_competencyframeworkid()] = $r->competency->get_framework()->get_scale();
@@ -3974,7 +3974,7 @@ class external extends external_api {
$scale = $scalecache[$r->competency->get_competencyframeworkid()]; $scale = $scalecache[$r->competency->get_competencyframeworkid()];
$exporter = new user_competency_exporter($r->usercompetency, array('scale' => $scale)); $exporter = new user_competency_exporter($r->usercompetency, array('scale' => $scale));
$r->usercompetency = $exporter->export_for_template($output); $r->usercompetency = $exporter->export($output);
} }
} }
return $result; return $result;
+3 -4
View File
@@ -26,19 +26,18 @@ namespace tool_lp\external;
require_once($CFG->libdir . '/externallib.php'); require_once($CFG->libdir . '/externallib.php');
use stdClass; use stdClass;
use templatable;
use renderer_base; use renderer_base;
use context; use context;
use context_system; use context_system;
use coding_exception; use coding_exception;
/** /**
* An extended version of the persistent class with a default implementation of export_for_template * An extended version of the persistent class with a default implementation of export
* *
* @copyright 2015 Damyon Wiese * @copyright 2015 Damyon Wiese
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
abstract class persistent_exporter implements templatable { abstract class persistent_exporter {
/** @var \tool_lp\persistent The persistent object we will export. */ /** @var \tool_lp\persistent The persistent object we will export. */
var $persistent = null; var $persistent = null;
@@ -112,7 +111,7 @@ abstract class persistent_exporter implements templatable {
* @param renderer_base $output Used to do a final render of any components that need to be rendered for export. * @param renderer_base $output Used to do a final render of any components that need to be rendered for export.
* @return stdClass|array * @return stdClass|array
*/ */
public function export_for_template(renderer_base $output) { public function export(renderer_base $output) {
$data = new stdClass(); $data = new stdClass();
$properties = $this->persistent->properties_definition(); $properties = $this->persistent->properties_definition();
$context = $this->get_context(); $context = $this->get_context();
+2 -2
View File
@@ -37,8 +37,8 @@ class plan_exporter extends persistent_exporter {
return 'tool_lp\\plan'; return 'tool_lp\\plan';
} }
public function export_for_template(renderer_base $output) { public function export(renderer_base $output) {
$result = parent::export_for_template($output); $result = parent::export($output);
$result->statusname = $this->persistent->get_statusname(); $result->statusname = $this->persistent->get_statusname();
return $result; return $result;
} }
+2 -2
View File
@@ -37,8 +37,8 @@ class template_exporter extends persistent_exporter {
return 'tool_lp\\template'; return 'tool_lp\\template';
} }
public function export_for_template(renderer_base $output) { public function export(renderer_base $output) {
$result = parent::export_for_template($output); $result = parent::export($output);
$result->duedateformatted = userdate($result->duedate); $result->duedateformatted = userdate($result->duedate);
return $result; return $result;
} }
@@ -44,8 +44,8 @@ class user_competency_exporter extends persistent_exporter {
return array('scale' => 'grade_scale'); return array('scale' => 'grade_scale');
} }
public function export_for_template(renderer_base $output) { public function export(renderer_base $output) {
$result = parent::export_for_template($output); $result = parent::export($output);
$context = context_user::instance($result->userid); $context = context_user::instance($result->userid);
if ($result->grade === null) { if ($result->grade === null) {
$gradename = '-'; $gradename = '-';
@@ -37,8 +37,8 @@ class user_plan_competency_exporter extends persistent_exporter {
return 'tool_lp\\user_plan_competency'; return 'tool_lp\\user_plan_competency';
} }
public function export_for_template(renderer_base $output) { public function export(renderer_base $output) {
$result = parent::export_for_template($output); $result = parent::export($output);
$result->statusname = $this->persistent->get_statusname(); $result->statusname = $this->persistent->get_statusname();
return $result; return $result;
} }
@@ -104,7 +104,7 @@ class course_competencies_page implements renderable, templatable {
$context = $contextcache[$competency->get_competencyframeworkid()]; $context = $contextcache[$competency->get_competencyframeworkid()];
$exporter = new competency_exporter($competency, array('context' => $context)); $exporter = new competency_exporter($competency, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
array_push($data->competencies, $record); array_push($data->competencies, $record);
} }
$data->canmanagecompetencyframeworks = $this->canmanagecompetencyframeworks; $data->canmanagecompetencyframeworks = $this->canmanagecompetencyframeworks;
@@ -90,7 +90,7 @@ class manage_competencies_page implements renderable, templatable {
public function export_for_template(renderer_base $output) { public function export_for_template(renderer_base $output) {
$data = new stdClass(); $data = new stdClass();
$exporter = new competency_framework_exporter($this->framework); $exporter = new competency_framework_exporter($this->framework);
$data->framework = $exporter->export_for_template($output); $data->framework = $exporter->export($output);
$data->canmanage = $this->canmanage; $data->canmanage = $this->canmanage;
$data->search = $this->search; $data->search = $this->search;
$data->pagecontextid = $this->pagecontext->id; $data->pagecontextid = $this->pagecontext->id;
@@ -85,7 +85,7 @@ class manage_competency_frameworks_page implements renderable, templatable {
$data->pagecontextid = $this->pagecontext->id; $data->pagecontextid = $this->pagecontext->id;
foreach ($this->competencyframeworks as $framework) { foreach ($this->competencyframeworks as $framework) {
$exporter = new competency_framework_exporter($framework); $exporter = new competency_framework_exporter($framework);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$filters = array('competencyframeworkid' => $framework->get_id()); $filters = array('competencyframeworkid' => $framework->get_id());
$record->canmanage = has_capability('tool/lp:competencymanage', $framework->get_context()); $record->canmanage = has_capability('tool/lp:competencymanage', $framework->get_context());
$record->competencies_count = api::count_competencies($filters); $record->competencies_count = api::count_competencies($filters);
@@ -79,7 +79,7 @@ class manage_templates_page implements renderable, templatable {
$data->templates = array(); $data->templates = array();
foreach ($this->templates as $template) { foreach ($this->templates as $template) {
$exporter = new template_exporter($template); $exporter = new template_exporter($template);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$record->canmanage = has_capability('tool/lp:templatemanage', $template->get_context()); $record->canmanage = has_capability('tool/lp:templatemanage', $template->get_context());
$record->contextname = $template->get_context()->get_context_name(); $record->contextname = $template->get_context()->get_context_name();
$data->templates[] = $record; $data->templates[] = $record;
+2 -2
View File
@@ -93,9 +93,9 @@ class plan_page implements renderable, templatable {
// Prepare the data. // Prepare the data.
$exporter = new competency_exporter($comp, array('context' => $framework->get_context())); $exporter = new competency_exporter($comp, array('context' => $framework->get_context()));
$competency = $exporter->export_for_template($output); $competency = $exporter->export($output);
$exporter = new user_competency_exporter($usercomp, array('scale' => $scale)); $exporter = new user_competency_exporter($usercomp, array('scale' => $scale));
$competency->usercompetency = $exporter->export_for_template($output); $competency->usercompetency = $exporter->export($output);
$data->competencies[] = $competency; $data->competencies[] = $competency;
} }
+1 -1
View File
@@ -88,7 +88,7 @@ class plans_page implements renderable, templatable {
if ($this->plans) { if ($this->plans) {
foreach ($this->plans as $plan) { foreach ($this->plans as $plan) {
$exporter = new plan_exporter($plan); $exporter = new plan_exporter($plan);
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$record->usercanupdate = $plan->can_manage(); $record->usercanupdate = $plan->can_manage();
$data->plans[] = $record; $data->plans[] = $record;
} }
@@ -65,7 +65,7 @@ class related_competencies implements renderable, templatable {
if ($this->relatedcompetencies) { if ($this->relatedcompetencies) {
foreach ($this->relatedcompetencies as $competency) { foreach ($this->relatedcompetencies as $competency) {
$exporter = new competency_exporter($competency, array('context' => $this->context)); $exporter = new competency_exporter($competency, array('context' => $this->context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
$data->relatedcompetencies[] = $record; $data->relatedcompetencies[] = $record;
} }
} }
@@ -93,7 +93,7 @@ class template_competencies_page implements renderable, templatable {
$context = $contextcache[$competency->get_competencyframeworkid()]; $context = $contextcache[$competency->get_competencyframeworkid()];
$exporter = new competency_exporter($competency, array('context' => $context)); $exporter = new competency_exporter($competency, array('context' => $context));
$record = $exporter->export_for_template($output); $record = $exporter->export($output);
array_push($data->competencies, $record); array_push($data->competencies, $record);
} }
$data->canmanagecompetencyframeworks = $this->canmanagecompetencyframeworks; $data->canmanagecompetencyframeworks = $this->canmanagecompetencyframeworks;