mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
Merge branch 'MDL-53451-master-fixup' of https://github.com/FMCorz/moodle
This commit is contained in:
commit
913dcb1b81
10 changed files with 76 additions and 35 deletions
|
@ -574,6 +574,11 @@ class framework_processor {
|
||||||
// Finally, we remove the course competencies, but only for the 100% successful ones.
|
// Finally, we remove the course competencies, but only for the 100% successful ones.
|
||||||
foreach ($competenciestoremovefromcourse as $competencyid => $unused) {
|
foreach ($competenciestoremovefromcourse as $competencyid => $unused) {
|
||||||
|
|
||||||
|
// Skip competencies with issues.
|
||||||
|
if (isset($competencieswithissues[$competencyid])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Process the course competency.
|
// Process the course competency.
|
||||||
api::remove_competency_from_course($courseid, $competencyid);
|
api::remove_competency_from_course($courseid, $competencyid);
|
||||||
|
|
|
@ -332,7 +332,7 @@ class tool_lpmigrate_framework_processor_testcase extends advanced_testcase {
|
||||||
$this->assertEquals(2, $processor->get_courses_found_count());
|
$this->assertEquals(2, $processor->get_courses_found_count());
|
||||||
$this->assertEquals(5, $processor->get_expected_course_competency_migrations());
|
$this->assertEquals(5, $processor->get_expected_course_competency_migrations());
|
||||||
$this->assertEquals(3, $processor->get_course_competency_migrations());
|
$this->assertEquals(3, $processor->get_course_competency_migrations());
|
||||||
$this->assertEquals(3, $processor->get_course_competency_removals());
|
$this->assertEquals(2, $processor->get_course_competency_removals());
|
||||||
|
|
||||||
$this->assertEquals(3, $processor->get_cms_found_count());
|
$this->assertEquals(3, $processor->get_cms_found_count());
|
||||||
$this->assertEquals(5, $processor->get_expected_module_competency_migrations());
|
$this->assertEquals(5, $processor->get_expected_module_competency_migrations());
|
||||||
|
|
|
@ -1606,12 +1606,11 @@ class api {
|
||||||
$record->courseid = $courseid;
|
$record->courseid = $courseid;
|
||||||
$record->competencyid = $competencyid;
|
$record->competencyid = $competencyid;
|
||||||
|
|
||||||
$competency = new competency($competencyid);
|
|
||||||
$coursecompetency = new course_competency();
|
$coursecompetency = new course_competency();
|
||||||
$exists = $coursecompetency->get_record(array('courseid' => $courseid, 'competencyid' => $competencyid));
|
$exists = course_competency::get_record(array('courseid' => $courseid, 'competencyid' => $competencyid));
|
||||||
if ($exists) {
|
if ($exists) {
|
||||||
// Delete all course_module_competencies for this competency in this course.
|
// Delete all course_module_competencies for this competency in this course.
|
||||||
$cmcs = course_module_competency::list_course_module_competencies($competencyid, $courseid);
|
$cmcs = course_module_competency::get_records_by_competencyid_in_course($competencyid, $courseid);
|
||||||
foreach ($cmcs as $cmc) {
|
foreach ($cmcs as $cmc) {
|
||||||
$cmc->delete();
|
$cmc->delete();
|
||||||
}
|
}
|
||||||
|
|
|
@ -298,4 +298,33 @@ class course_module_competency extends persistent {
|
||||||
return $instances;
|
return $instances;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List the relationship objects for a competency in a course.
|
||||||
|
*
|
||||||
|
* @param int $competencyid The competency ID.
|
||||||
|
* @param int $courseid The course ID.
|
||||||
|
* @return course_module_competency[]
|
||||||
|
*/
|
||||||
|
public static function get_records_by_competencyid_in_course($competencyid, $courseid) {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$sql = 'SELECT cmc.*
|
||||||
|
FROM {' . self::TABLE . '} cmc
|
||||||
|
JOIN {course_modules} cm
|
||||||
|
ON cm.course = ?
|
||||||
|
AND cmc.cmid = cm.id
|
||||||
|
WHERE cmc.competencyid = ?
|
||||||
|
ORDER BY cmc.sortorder ASC';
|
||||||
|
$params = array($courseid, $competencyid);
|
||||||
|
|
||||||
|
$results = $DB->get_recordset_sql($sql, $params);
|
||||||
|
$instances = array();
|
||||||
|
foreach ($results as $result) {
|
||||||
|
$instances[$result->id] = new course_module_competency(0, $result);
|
||||||
|
}
|
||||||
|
$results->close();
|
||||||
|
|
||||||
|
return $instances;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,24 +138,25 @@ class related_competency extends persistent {
|
||||||
public static function get_related_competencies($competencyid) {
|
public static function get_related_competencies($competencyid) {
|
||||||
global $DB;
|
global $DB;
|
||||||
|
|
||||||
$sql = "(SELECT c.*, " . $DB->sql_concat('rc.relatedcompetencyid', "'_'", 'rc.competencyid') . " AS rid
|
$fields = competency::get_sql_fields('c', 'c_');
|
||||||
|
$sql = "(SELECT $fields, " . $DB->sql_concat('rc.relatedcompetencyid', "'_'", 'rc.competencyid') . " AS rid
|
||||||
FROM {" . self::TABLE . "} rc
|
FROM {" . self::TABLE . "} rc
|
||||||
JOIN {" . competency::TABLE . "} c
|
JOIN {" . competency::TABLE . "} c
|
||||||
ON c.id = rc.relatedcompetencyid
|
ON c.id = rc.relatedcompetencyid
|
||||||
WHERE rc.competencyid = :cid)
|
WHERE rc.competencyid = :cid)
|
||||||
UNION ALL
|
UNION ALL
|
||||||
(SELECT c.*, " . $DB->sql_concat('rc.competencyid', "'_'", 'rc.relatedcompetencyid') . " AS rid
|
(SELECT $fields, " . $DB->sql_concat('rc.competencyid', "'_'", 'rc.relatedcompetencyid') . " AS rid
|
||||||
FROM {" . self::TABLE . "} rc
|
FROM {" . self::TABLE . "} rc
|
||||||
JOIN {" . competency::TABLE . "} c
|
JOIN {" . competency::TABLE . "} c
|
||||||
ON c.id = rc.competencyid
|
ON c.id = rc.competencyid
|
||||||
WHERE rc.relatedcompetencyid = :cid2)
|
WHERE rc.relatedcompetencyid = :cid2)
|
||||||
ORDER BY path, sortorder ASC";
|
ORDER BY c_path ASC, c_sortorder ASC";
|
||||||
|
|
||||||
$competencies = array();
|
$competencies = array();
|
||||||
$records = $DB->get_recordset_sql($sql, array('cid' => $competencyid, 'cid2' => $competencyid));
|
$records = $DB->get_recordset_sql($sql, array('cid' => $competencyid, 'cid2' => $competencyid));
|
||||||
foreach ($records as $record) {
|
foreach ($records as $record) {
|
||||||
unset($record->rid);
|
unset($record->rid);
|
||||||
$competencies[$record->id] = new competency(null, $record);
|
$competencies[$record->c_id] = new competency(null, competency::extract_record($record, 'c_'));
|
||||||
}
|
}
|
||||||
$records->close();
|
$records->close();
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,8 @@ class template_competency extends persistent {
|
||||||
$params[] = 1;
|
$params[] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$sql .= ' ORDER BY tpl.id ASC';
|
||||||
|
|
||||||
$results = $DB->get_records_sql($sql, $params);
|
$results = $DB->get_records_sql($sql, $params);
|
||||||
|
|
||||||
$instances = array();
|
$instances = array();
|
||||||
|
@ -199,11 +201,10 @@ class template_competency extends persistent {
|
||||||
FROM {' . competency::TABLE . '} comp
|
FROM {' . competency::TABLE . '} comp
|
||||||
JOIN {' . self::TABLE . '} tplcomp
|
JOIN {' . self::TABLE . '} tplcomp
|
||||||
ON tplcomp.competencyid = comp.id
|
ON tplcomp.competencyid = comp.id
|
||||||
WHERE tplcomp.templateid = ?';
|
WHERE tplcomp.templateid = ?
|
||||||
|
ORDER BY tplcomp.sortorder ASC';
|
||||||
$params = array($templateid);
|
$params = array($templateid);
|
||||||
|
|
||||||
$sql .= 'ORDER BY tplcomp.sortorder ASC';
|
|
||||||
|
|
||||||
$results = $DB->get_records_sql($sql, $params);
|
$results = $DB->get_records_sql($sql, $params);
|
||||||
|
|
||||||
$instances = array();
|
$instances = array();
|
||||||
|
|
|
@ -263,24 +263,27 @@ class user_competency_course extends persistent {
|
||||||
public static function get_least_proficient_competencies_for_course($courseid, $skip = 0, $limit = 0) {
|
public static function get_least_proficient_competencies_for_course($courseid, $skip = 0, $limit = 0) {
|
||||||
global $DB;
|
global $DB;
|
||||||
|
|
||||||
$fields = competency::get_sql_fields('c');
|
$fields = competency::get_sql_fields('c', 'c_');
|
||||||
$params = array('courseid' => $courseid);
|
$params = array('courseid' => $courseid);
|
||||||
$sql = 'SELECT ' . $fields . ', SUM(COALESCE(ucc.proficiency, 0)) AS timesproficient ' .
|
$sql = 'SELECT ' . $fields . '
|
||||||
' FROM {' . competency::TABLE . '} c
|
FROM (SELECT cc.competencyid, SUM(COALESCE(ucc.proficiency, 0)) AS timesproficient
|
||||||
JOIN {' . course_competency::TABLE . '} cc
|
FROM {' . course_competency::TABLE . '} cc
|
||||||
ON c.id = cc.competencyid
|
LEFT JOIN {' . self::TABLE . '} ucc
|
||||||
LEFT JOIN {' . self::TABLE . '} ucc
|
ON ucc.competencyid = cc.competencyid
|
||||||
ON ucc.competencyid = c.id AND ucc.courseid = cc.courseid
|
AND ucc.courseid = cc.courseid
|
||||||
WHERE cc.courseid = :courseid
|
WHERE cc.courseid = :courseid
|
||||||
GROUP BY c.id
|
GROUP BY cc.competencyid
|
||||||
ORDER BY timesproficient ASC, c.id DESC';
|
) p
|
||||||
|
JOIN {' . competency::TABLE . '} c
|
||||||
|
ON c.id = p.competencyid
|
||||||
|
ORDER BY p.timesproficient ASC, c.id DESC';
|
||||||
|
|
||||||
$results = $DB->get_records_sql($sql, $params, $skip, $limit);
|
$results = $DB->get_records_sql($sql, $params, $skip, $limit);
|
||||||
$a = $DB->get_records_sql('SELECT * from {' . self::TABLE . '}');
|
$a = $DB->get_records_sql('SELECT * from {' . self::TABLE . '}');
|
||||||
|
|
||||||
$comps = array();
|
$comps = array();
|
||||||
foreach ($results as $r) {
|
foreach ($results as $r) {
|
||||||
$c = competency::extract_record($r);
|
$c = competency::extract_record($r, 'c_');
|
||||||
$comps[] = new competency(0, $c);
|
$comps[] = new competency(0, $c);
|
||||||
}
|
}
|
||||||
return $comps;
|
return $comps;
|
||||||
|
|
|
@ -340,24 +340,26 @@ class user_competency_plan extends persistent {
|
||||||
public static function get_least_proficient_competencies_for_template($templateid, $skip = 0, $limit = 0) {
|
public static function get_least_proficient_competencies_for_template($templateid, $skip = 0, $limit = 0) {
|
||||||
global $DB;
|
global $DB;
|
||||||
|
|
||||||
$fields = competency::get_sql_fields('c');
|
$fields = competency::get_sql_fields('c', 'c_');
|
||||||
$params = array('templateid' => $templateid, 'notproficient' => false);
|
$params = array('templateid' => $templateid, 'notproficient' => false);
|
||||||
$sql = 'SELECT ' . $fields . ', COUNT(c.id) AS timesnotproficient ' .
|
$sql = 'SELECT ' . $fields . '
|
||||||
' FROM {' . self::TABLE . '} ucp
|
FROM (SELECT ucp.competencyid, COUNT(ucp.competencyid) AS timesnotproficient
|
||||||
JOIN {' . plan::TABLE . '} p
|
FROM {' . self::TABLE . '} ucp
|
||||||
ON ucp.planid = p.id
|
JOIN {' . plan::TABLE . '} p
|
||||||
|
ON p.id = ucp.planid
|
||||||
|
WHERE p.templateid = :templateid
|
||||||
|
AND (ucp.proficiency = :notproficient OR ucp.proficiency IS NULL)
|
||||||
|
GROUP BY ucp.competencyid
|
||||||
|
) p
|
||||||
JOIN {' . competency::TABLE . '} c
|
JOIN {' . competency::TABLE . '} c
|
||||||
ON ucp.competencyid = c.id
|
ON c.id = p.competencyid
|
||||||
WHERE p.templateid = :templateid
|
ORDER BY p.timesnotproficient DESC, c.id ASC';
|
||||||
AND (ucp.proficiency = :notproficient OR ucp.proficiency IS NULL)
|
|
||||||
GROUP BY c.id
|
|
||||||
ORDER BY timesnotproficient DESC';
|
|
||||||
|
|
||||||
$results = $DB->get_records_sql($sql, $params, $skip, $limit);
|
$results = $DB->get_records_sql($sql, $params, $skip, $limit);
|
||||||
|
|
||||||
$comps = array();
|
$comps = array();
|
||||||
foreach ($results as $r) {
|
foreach ($results as $r) {
|
||||||
$c = competency::extract_record($r);
|
$c = competency::extract_record($r, 'c_');
|
||||||
$comps[] = new competency(0, $c);
|
$comps[] = new competency(0, $c);
|
||||||
}
|
}
|
||||||
return $comps;
|
return $comps;
|
||||||
|
|
|
@ -122,7 +122,8 @@ class user_evidence_competency extends persistent {
|
||||||
JOIN {" . user_evidence::TABLE . "} ue
|
JOIN {" . user_evidence::TABLE . "} ue
|
||||||
ON uec.userevidenceid = ue.id
|
ON uec.userevidenceid = ue.id
|
||||||
AND uc.userid = ue.userid
|
AND uc.userid = ue.userid
|
||||||
AND ue.id = ?";
|
AND ue.id = ?
|
||||||
|
ORDER BY uc.id ASC";
|
||||||
|
|
||||||
$usercompetencies = array();
|
$usercompetencies = array();
|
||||||
$records = $DB->get_recordset_sql($sql, array($userevidenceid));
|
$records = $DB->get_recordset_sql($sql, array($userevidenceid));
|
||||||
|
|
|
@ -290,7 +290,7 @@ class grade_scale extends grade_object {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ask the competency subsystem.
|
// Ask the competency subsystem.
|
||||||
if (\core_competency\api::is_scale_used_anywhere($scaleid)) {
|
if (\core_competency\api::is_scale_used_anywhere($this->id)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue