mirror of
https://github.com/moodle/moodle.git
synced 2025-04-14 13:02:07 +02:00
Merge branch 'MDL-63973-master' of https://github.com/snake/moodle
This commit is contained in:
commit
a356db0db2
@ -82,9 +82,12 @@ class edit_relatedbadge_form extends moodleform {
|
||||
$sql = "SELECT b.id, b.name, b.version, b.language, b.type
|
||||
FROM {badge} b
|
||||
WHERE b.id <> :badgeid
|
||||
AND b.id NOT IN (SELECT br.relatedbadgeid
|
||||
FROM {badge_related} br WHERE br.badgeid = :badgeid1)";
|
||||
$params = array('badgeid' => $badge->id, 'badgeid1' => $badge->id);
|
||||
AND b.id NOT IN (
|
||||
SELECT DISTINCT b.id
|
||||
FROM {badge_related} br
|
||||
JOIN {badge} b ON (br.relatedbadgeid = b.id OR br.badgeid = b.id)
|
||||
WHERE (br.badgeid = :badgeid2 OR br.relatedbadgeid = :badgeid3) AND b.id != :badgeid4)";
|
||||
$params = ['badgeid' => $badge->id, 'badgeid2' => $badge->id, 'badgeid3' => $badge->id, 'badgeid4' => $badge->id];
|
||||
if ($badge->type == BADGE_TYPE_COURSE) {
|
||||
$sql .= " AND (b.courseid = :courseid OR b.type = :badgetype)";
|
||||
$params['courseid'] = $badge->courseid;
|
||||
|
@ -722,8 +722,10 @@ class core_badges_renderer extends plugin_renderer_base {
|
||||
}
|
||||
|
||||
if (has_capability('moodle/badges:configuredetails', $context)) {
|
||||
$related = $DB->count_records_sql("SELECT COUNT(br.badgeid)
|
||||
FROM {badge_related} br WHERE br.badgeid = :badgeid", array('badgeid' => $badgeid));
|
||||
$sql = "SELECT COUNT(br.badgeid)
|
||||
FROM {badge_related} br
|
||||
WHERE (br.badgeid = :badgeid OR br.relatedbadgeid = :badgeid2)";
|
||||
$related = $DB->count_records_sql($sql, ['badgeid' => $badgeid, 'badgeid2' => $badgeid]);
|
||||
$row[] = new tabobject('brelated',
|
||||
new moodle_url('/badges/related.php', array('id' => $badgeid)),
|
||||
get_string('brelated', 'badges', $related)
|
||||
@ -1502,4 +1504,4 @@ class badge_competencies_alignment implements renderable
|
||||
$this->alignments = $alignments;
|
||||
$this->currentbadgeid = $currentbadgeid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -761,7 +761,10 @@ class badge {
|
||||
*/
|
||||
public function delete_related_badge($relatedid) {
|
||||
global $DB;
|
||||
return $DB->delete_records('badge_related', array('badgeid' => $this->id, 'relatedbadgeid' => $relatedid));
|
||||
$sql = "(badgeid = :badgeid AND relatedbadgeid = :relatedid) OR " .
|
||||
"(badgeid = :relatedid2 AND relatedbadgeid = :badgeid2)";
|
||||
$params = ['badgeid' => $this->id, 'badgeid2' => $this->id, 'relatedid' => $relatedid, 'relatedid2' => $relatedid];
|
||||
return $DB->delete_records_select('badge_related', $sql, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -771,7 +774,11 @@ class badge {
|
||||
*/
|
||||
public function has_related() {
|
||||
global $DB;
|
||||
return $DB->record_exists('badge_related', array('badgeid' => $this->id));
|
||||
$sql = "SELECT DISTINCT b.id
|
||||
FROM {badge_related} br
|
||||
JOIN {badge} b ON (br.relatedbadgeid = b.id OR br.badgeid = b.id)
|
||||
WHERE (br.badgeid = :badgeid OR br.relatedbadgeid = :badgeid2) AND b.id != :badgeid3";
|
||||
return $DB->record_exists_sql($sql, ['badgeid' => $this->id, 'badgeid2' => $this->id, 'badgeid3' => $this->id]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -783,11 +790,11 @@ class badge {
|
||||
public function get_related_badges(bool $activeonly = false) {
|
||||
global $DB;
|
||||
|
||||
$params = array('badgeid' => $this->id);
|
||||
$query = "SELECT b.id, b.name, b.version, b.language, b.type
|
||||
$params = array('badgeid' => $this->id, 'badgeid2' => $this->id, 'badgeid3' => $this->id);
|
||||
$query = "SELECT DISTINCT b.id, b.name, b.version, b.language, b.type
|
||||
FROM {badge_related} br
|
||||
JOIN {badge} b ON b.id = br.relatedbadgeid
|
||||
WHERE br.badgeid = :badgeid";
|
||||
JOIN {badge} b ON (br.relatedbadgeid = b.id OR br.badgeid = b.id)
|
||||
WHERE (br.badgeid = :badgeid OR br.relatedbadgeid = :badgeid2) AND b.id != :badgeid3";
|
||||
if ($activeonly) {
|
||||
$query .= " AND b.status <> :status";
|
||||
$params['status'] = BADGE_STATUS_INACTIVE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user