/**
  * Export the data.
  *
  * @param renderer_base $output
  * @return stdClass
  */
 public function export_for_template(renderer_base $output)
 {
     if (!isset($related['user'])) {
         $related['user'] = core_user::get_user($this->usercompetency->get_userid());
     }
     if (!isset($related['competency'])) {
         $related['competency'] = $this->usercompetency->get_competency();
     }
     $related += array('usercompetency' => $this->usercompetency, 'usercompetencyplan' => null, 'usercompetencycourse' => null, 'evidence' => api::list_evidence($this->usercompetency->get_userid(), $this->usercompetency->get_competencyid()), 'relatedcompetencies' => api::list_related_competencies($this->usercompetency->get_competencyid()));
     $exporter = new user_competency_summary_exporter(null, $related);
     $data = $exporter->export($output);
     return $data;
 }
 /**
  * Export the data.
  *
  * @param renderer_base $output
  * @return stdClass
  */
 public function export_for_template(\renderer_base $output)
 {
     global $DB;
     $plan = api::read_plan($this->planid);
     $pc = api::get_plan_competency($plan, $this->competencyid);
     $competency = $pc->competency;
     $usercompetency = $pc->usercompetency;
     $usercompetencyplan = $pc->usercompetencyplan;
     if (empty($competency)) {
         throw new \invalid_parameter_exception('Invalid params. The competency does not belong to the plan.');
     }
     $relatedcompetencies = api::list_related_competencies($competency->get_id());
     $userid = $plan->get_userid();
     $user = $DB->get_record('user', array('id' => $userid));
     $evidence = api::list_evidence($userid, $this->competencyid, $plan->get_id());
     $params = array('competency' => $competency, 'usercompetency' => $usercompetency, 'usercompetencyplan' => $usercompetencyplan, 'evidence' => $evidence, 'user' => $user, 'plan' => $plan, 'relatedcompetencies' => $relatedcompetencies);
     $exporter = new user_competency_summary_in_plan_exporter(null, $params);
     $data = $exporter->export($output);
     return $data;
 }
示例#3
0
文件: api_test.php 项目: dg711/moodle
 /**
  * Test list of evidences for plan completed and not completed.
  */
 public function test_list_evidence()
 {
     global $DB;
     $this->resetAfterTest(true);
     $dg = $this->getDataGenerator();
     $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency');
     $syscontext = context_system::instance();
     // Create users.
     $user = $dg->create_user();
     $this->setUser($user);
     // Create a framework and assign competencies.
     $framework = $lpg->create_framework();
     $c1 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $c2 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     // Create 2 user plans and add competency to each plan.
     $p1 = $lpg->create_plan(array('userid' => $user->id));
     $p2 = $lpg->create_plan(array('userid' => $user->id));
     $pc1 = $lpg->create_plan_competency(array('planid' => $p1->get_id(), 'competencyid' => $c1->get_id()));
     $pc2 = $lpg->create_plan_competency(array('planid' => $p2->get_id(), 'competencyid' => $c1->get_id()));
     // Create user competency and add an evidence.
     $uc = $lpg->create_user_competency(array('userid' => $user->id, 'competencyid' => $c1->get_id()));
     $e1 = $lpg->create_evidence(array('usercompetencyid' => $uc->get_id()));
     // Check both plans as one evidence.
     $this->assertEquals(1, count(api::list_evidence($user->id, $c1->get_id(), $p1->get_id())));
     $this->assertEquals(1, count(api::list_evidence($user->id, $c1->get_id(), $p2->get_id())));
     // Complete second plan.
     $p2->set_status(plan::STATUS_COMPLETE);
     $p2->update();
     // Add another evidence for the same competency, but in the future (time + 1).
     $e2 = $lpg->create_evidence(array('usercompetencyid' => $uc->get_id()));
     $evidencesql = "UPDATE {" . evidence::TABLE . "} SET timecreated = :currenttime WHERE id = :evidenceid";
     $DB->execute($evidencesql, array('currenttime' => time() + 1, 'evidenceid' => $e2->get_id()));
     // Check that the first plan, which is not completed, has all the evidence.
     $this->assertEquals(2, count(api::list_evidence($user->id, $c1->get_id(), $p1->get_id())));
     // Check that the second plan, completed before the new evidence, only has the first piece of evidence.
     $listevidences = api::list_evidence($user->id, $c1->get_id(), $p2->get_id());
     $this->assertEquals(1, count($listevidences));
     $this->assertEquals($e1->get_id(), $listevidences[$e1->get_id()]->get_id());
 }