mirror of
https://github.com/moodle/moodle.git
synced 2025-03-25 01:50:55 +01:00
Merge branch 'wip-MDL-51241-master' of git://github.com/abgreeve/moodle
This commit is contained in:
commit
c9830ddbb7
@ -256,15 +256,17 @@ function cohort_get_available_cohorts($currentcontext, $withmembers = 0, $offset
|
||||
$groupbysql = '';
|
||||
$havingsql = '';
|
||||
if ($withmembers) {
|
||||
$groupbysql = " GROUP BY $fieldssql";
|
||||
$fieldssql .= ', s.memberscnt';
|
||||
$subfields = "c.id, COUNT(DISTINCT cm.userid) AS memberscnt";
|
||||
$groupbysql = " GROUP BY c.id";
|
||||
$fromsql = " LEFT JOIN {cohort_members} cm ON cm.cohortid = c.id ";
|
||||
$fieldssql .= ', COUNT(DISTINCT cm.userid) AS memberscnt';
|
||||
if (in_array($withmembers,
|
||||
array(COHORT_COUNT_ENROLLED_MEMBERS, COHORT_WITH_ENROLLED_MEMBERS_ONLY, COHORT_WITH_NOTENROLLED_MEMBERS_ONLY))) {
|
||||
list($esql, $params2) = get_enrolled_sql($currentcontext);
|
||||
$fromsql .= " LEFT JOIN ($esql) u ON u.id = cm.userid ";
|
||||
$params = array_merge($params2, $params);
|
||||
$fieldssql .= ', COUNT(DISTINCT u.id) AS enrolledcnt';
|
||||
$fieldssql .= ', s.enrolledcnt';
|
||||
$subfields .= ', COUNT(DISTINCT u.id) AS enrolledcnt';
|
||||
}
|
||||
if ($withmembers == COHORT_WITH_MEMBERS_ONLY) {
|
||||
$havingsql = " HAVING COUNT(DISTINCT cm.userid) > 0";
|
||||
@ -280,13 +282,20 @@ function cohort_get_available_cohorts($currentcontext, $withmembers = 0, $offset
|
||||
$params = array_merge($params, $searchparams);
|
||||
}
|
||||
|
||||
$sql = "SELECT $fieldssql
|
||||
FROM {cohort} c
|
||||
$fromsql
|
||||
WHERE $wheresql
|
||||
$groupbysql
|
||||
$havingsql
|
||||
ORDER BY c.name, c.idnumber";
|
||||
if ($withmembers) {
|
||||
$sql = "SELECT " . str_replace('c.', 'cohort.', $fieldssql) . "
|
||||
FROM {cohort} cohort
|
||||
JOIN (SELECT $subfields
|
||||
FROM {cohort} c $fromsql
|
||||
WHERE $wheresql $groupbysql $havingsql
|
||||
) s ON cohort.id = s.id
|
||||
ORDER BY cohort.name, cohort.idnumber";
|
||||
} else {
|
||||
$sql = "SELECT $fieldssql
|
||||
FROM {cohort} c $fromsql
|
||||
WHERE $wheresql
|
||||
ORDER BY c.name, c.idnumber";
|
||||
}
|
||||
|
||||
return $DB->get_records_sql($sql, $params, $offset, $limit);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user