From 15e3eb60537f8d6370e3249ac9613a2b31427d68 Mon Sep 17 00:00:00 2001 From: toyomoyo Date: Thu, 6 Sep 2007 06:25:40 +0000 Subject: [PATCH] merged fix for MDL-9613, spliting the queries into 2 for site/course block respectively --- blocks/online_users/block_online_users.php | 42 +++++++++++----------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/blocks/online_users/block_online_users.php b/blocks/online_users/block_online_users.php index 2a52de9e5b..8029c2c541 100644 --- a/blocks/online_users/block_online_users.php +++ b/blocks/online_users/block_online_users.php @@ -55,29 +55,31 @@ class block_online_users extends block_base { } if ($COURSE->id == SITEID) { // Site-level - $courseselect = ''; - $timeselect = "AND (ul.timeaccess > $timefrom OR u.lastaccess > $timefrom)"; - } else { + $select = "SELECT u.id, u.username, u.firstname, u.lastname, u.picture, max(u.lastaccess) as lastaccess "; + $from = "FROM {$CFG->prefix}user u + $groupmembers "; + $where = "WHERE u.lastaccess > $timefrom + $groupselect "; + $order = "ORDER BY lastaccess DESC "; + + } else { // Course-level $courseselect = "AND ul.courseid = '".$COURSE->id."'"; - $timeselect = "AND ul.timeaccess > $timefrom"; + $select = "SELECT u.id, u.username, u.firstname, u.lastname, u.picture, max(ul.timeaccess) as lastaccess "; + $from = "FROM {$CFG->prefix}user_lastaccess ul, + {$CFG->prefix}user u + $groupmembers "; + $where = "WHERE ul.timeaccess > $timefrom + AND u.id = ul.userid + AND ul.courseid = $COURSE->id + $groupselect "; + $order = "ORDER BY lastaccess DESC "; } - - $users = array(); - - $SQL = "SELECT u.id, u.username, u.firstname, u.lastname, u.picture, u.lastaccess, ul.timeaccess - FROM {$CFG->prefix}user_lastaccess ul, - {$CFG->prefix}user u - $groupmembers - WHERE - ul.userid = u.id - $courseselect - $timeselect - $groupselect - GROUP BY u.id, u.username, u.firstname, u.lastname, u.picture, u.lastaccess, ul.timeaccess - ORDER BY ul.timeaccess DESC"; - + $groupby = "GROUP BY u.id, u.username, u.firstname, u.lastname, u.picture "; + $SQL = $select . $from . $where . $groupby . $order; + + $users = array(); $pcontext = get_related_contexts_string($context); if ($pusers = get_records_sql($SQL, 0, 50)) { // We'll just take the most recent 50 maximum @@ -116,7 +118,7 @@ class block_online_users extends block_base { $this->content->text .= "