mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 12:40:01 +01:00
Moved Penny's funky sql function into dmllib.php
This commit is contained in:
parent
637644fbd1
commit
867f5adb73
@ -228,7 +228,7 @@
|
||||
$table->setup();
|
||||
|
||||
|
||||
$primary_roles = stats_get_primary_role_subselect();
|
||||
$primary_roles = sql_primary_role_subselect(); // In dmllib.php
|
||||
$sql = 'SELECT DISTINCT prs.userid, u.firstname,u.lastname,u.idnumber,count(l.action) as count FROM ('.$primary_roles.') prs'
|
||||
.' JOIN '.$CFG->prefix.'user u ON u.id = prs.userid LEFT JOIN '.$CFG->prefix.'log l ON prs.userid = l.userid '
|
||||
.' AND prs.courseid = l.course AND l.time > '.$timefrom.' AND l.course = '.$course->id.' AND l.module = \''.$module->name.'\' '
|
||||
|
@ -1308,6 +1308,43 @@ function sql_order_by_text($fieldname, $numchars=32) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns SQL to be used as a subselect to find the primary role of users.
|
||||
* Penny (the author) is very keen for this to be implemented as a view in
|
||||
* future versions.
|
||||
*
|
||||
* eg if this function returns a string called $primaryroles, then you could:
|
||||
* $sql = 'SELECT COUNT(DISTINCT prs.userid) FROM ('.$primary_roles.') prs
|
||||
* WHERE prs.primary_roleid='.$role->id.' AND prs.courseid='.$course->id.
|
||||
* ' AND prs.contextlevel = '.CONTEXT_COURSE;
|
||||
*
|
||||
* @return string the piece of SQL code to be used in your FROM( ) statement.
|
||||
*/
|
||||
function sql_primary_role_subselect() {
|
||||
global $CFG;
|
||||
return 'SELECT ra.userid,
|
||||
ra.roleid AS primary_roleid,
|
||||
ra.contextid,
|
||||
r.sortorder,
|
||||
r.name,
|
||||
r.description,
|
||||
r.shortname,
|
||||
c.instanceid AS courseid,
|
||||
c.contextlevel
|
||||
FROM '.$CFG->prefix.'role_assignments ra
|
||||
INNER JOIN '.$CFG->prefix.'role r ON ra.roleid = r.id
|
||||
INNER JOIN '.$CFG->prefix.'context c ON ra.contextid = c.id
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM '.$CFG->prefix.'role_assignments i_ra
|
||||
INNER JOIN '.$CFG->prefix.'role i_r ON i_ra.roleid = i_r.id
|
||||
WHERE ra.userid = i_ra.userid AND
|
||||
ra.contextid = i_ra.contextid AND
|
||||
i_r.sortorder < r.sortorder
|
||||
) ';
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare a SQL WHERE clause to select records where the given fields match the given values.
|
||||
*
|
||||
|
@ -138,7 +138,7 @@ function stats_cron_daily () {
|
||||
continue;
|
||||
}
|
||||
|
||||
$primary_roles = stats_get_primary_role_subselect();
|
||||
$primary_roles = sql_primary_role_subselect(); // In dmllib.php
|
||||
foreach ($roles as $role) {
|
||||
// ENROLMENT FIRST....
|
||||
// ALL users with this role...
|
||||
@ -1315,28 +1315,4 @@ function stats_upgrade_table_for_roles ($period) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function stats_get_primary_role_subselect() {
|
||||
global $CFG;
|
||||
return 'SELECT ra.userid,
|
||||
ra.roleid AS primary_roleid,
|
||||
ra.contextid,
|
||||
r.sortorder,
|
||||
r.name,
|
||||
r.description,
|
||||
r.shortname,
|
||||
c.instanceid AS courseid,
|
||||
c.contextlevel
|
||||
FROM '.$CFG->prefix.'role_assignments ra
|
||||
INNER JOIN '.$CFG->prefix.'role r ON ra.roleid = r.id
|
||||
INNER JOIN '.$CFG->prefix.'context c ON ra.contextid = c.id
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM '.$CFG->prefix.'role_assignments i_ra
|
||||
INNER JOIN '.$CFG->prefix.'role i_r ON i_ra.roleid = i_r.id
|
||||
WHERE ra.userid = i_ra.userid AND
|
||||
ra.contextid = i_ra.contextid AND
|
||||
i_r.sortorder < r.sortorder
|
||||
) ';
|
||||
}
|
||||
|
||||
?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user