/**
  * Return the custom definition of the properties of this model.
  *
  * @param int $courseid The course we want to generate statistics for.
  */
 public function __construct($courseid)
 {
     global $USER;
     $this->competencycount = api::count_competencies_in_course($courseid);
     $this->proficientcompetencycount = api::count_proficient_competencies_in_course_for_user($courseid, $USER->id);
     $this->leastproficientcompetencies = api::get_least_proficient_competencies_for_course($courseid, 0, 3);
 }
示例#2
0
文件: api_test.php 项目: dg711/moodle
 /**
  * Test course statistics api functions.
  */
 public function test_course_statistics()
 {
     $this->resetAfterTest(true);
     $dg = $this->getDataGenerator();
     $lpg = $dg->get_plugin_generator('core_competency');
     $this->setAdminUser();
     $u1 = $dg->create_user();
     $u2 = $dg->create_user();
     $u3 = $dg->create_user();
     $u4 = $dg->create_user();
     $c1 = $dg->create_course();
     $framework = $lpg->create_framework();
     // Enrol students in the course.
     $studentarch = get_archetype_roles('student');
     $studentrole = array_shift($studentarch);
     $coursecontext = context_course::instance($c1->id);
     $dg->role_assign($studentrole->id, $u1->id, $coursecontext->id);
     $dg->enrol_user($u1->id, $c1->id, $studentrole->id);
     $dg->role_assign($studentrole->id, $u2->id, $coursecontext->id);
     $dg->enrol_user($u2->id, $c1->id, $studentrole->id);
     $dg->role_assign($studentrole->id, $u3->id, $coursecontext->id);
     $dg->enrol_user($u3->id, $c1->id, $studentrole->id);
     $dg->role_assign($studentrole->id, $u4->id, $coursecontext->id);
     $dg->enrol_user($u4->id, $c1->id, $studentrole->id);
     // Create 6 competencies.
     $comp1 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $comp2 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $comp3 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $comp4 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $comp5 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $comp6 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     // Link 6 out of 6 to a course.
     $lpg->create_course_competency(array('competencyid' => $comp1->get_id(), 'courseid' => $c1->id));
     $lpg->create_course_competency(array('competencyid' => $comp2->get_id(), 'courseid' => $c1->id));
     $lpg->create_course_competency(array('competencyid' => $comp3->get_id(), 'courseid' => $c1->id));
     $lpg->create_course_competency(array('competencyid' => $comp4->get_id(), 'courseid' => $c1->id));
     $lpg->create_course_competency(array('competencyid' => $comp5->get_id(), 'courseid' => $c1->id));
     $lpg->create_course_competency(array('competencyid' => $comp6->get_id(), 'courseid' => $c1->id));
     // Rate some competencies.
     // User 1.
     api::grade_competency_in_course($c1, $u1->id, $comp1->get_id(), 4, 'Unit test');
     api::grade_competency_in_course($c1, $u1->id, $comp2->get_id(), 4, 'Unit test');
     api::grade_competency_in_course($c1, $u1->id, $comp3->get_id(), 4, 'Unit test');
     api::grade_competency_in_course($c1, $u1->id, $comp4->get_id(), 4, 'Unit test');
     // User 2.
     api::grade_competency_in_course($c1, $u2->id, $comp1->get_id(), 1, 'Unit test');
     api::grade_competency_in_course($c1, $u2->id, $comp2->get_id(), 1, 'Unit test');
     api::grade_competency_in_course($c1, $u2->id, $comp3->get_id(), 1, 'Unit test');
     api::grade_competency_in_course($c1, $u2->id, $comp4->get_id(), 1, 'Unit test');
     // User 3.
     api::grade_competency_in_course($c1, $u3->id, $comp1->get_id(), 3, 'Unit test');
     api::grade_competency_in_course($c1, $u3->id, $comp2->get_id(), 3, 'Unit test');
     // User 4.
     api::grade_competency_in_course($c1, $u4->id, $comp1->get_id(), 2, 'Unit test');
     api::grade_competency_in_course($c1, $u4->id, $comp2->get_id(), 2, 'Unit test');
     // OK we have enough data - lets call some API functions and check for expected results.
     $result = api::count_proficient_competencies_in_course_for_user($c1->id, $u1->id);
     $this->assertEquals(4, $result);
     $result = api::count_proficient_competencies_in_course_for_user($c1->id, $u2->id);
     $this->assertEquals(0, $result);
     $result = api::count_proficient_competencies_in_course_for_user($c1->id, $u3->id);
     $this->assertEquals(2, $result);
     $result = api::count_proficient_competencies_in_course_for_user($c1->id, $u4->id);
     $this->assertEquals(0, $result);
     $result = api::get_least_proficient_competencies_for_course($c1->id, 0, 2);
     // We should get 5 and 6 in repeatable order.
     $valid = false;
     if ($comp5->get_id() == $result[0]->get_id() || $comp6->get_id() == $result[0]->get_id()) {
         $valid = true;
     }
     $this->assertTrue($valid);
     $valid = false;
     if ($comp5->get_id() == $result[1]->get_id() || $comp6->get_id() == $result[1]->get_id()) {
         $valid = true;
     }
     $this->assertTrue($valid);
     $expected = $result[1]->get_id();
     $result = api::get_least_proficient_competencies_for_course($c1->id, 1, 1);
     $this->assertEquals($result[0]->get_id(), $expected);
 }