]> git.mjollnir.org Git - moodle.git/commitdiff
merged fix for MDL-9613, spliting the queries into 2 for site/course block respectively
authortoyomoyo <toyomoyo>
Thu, 6 Sep 2007 06:25:40 +0000 (06:25 +0000)
committertoyomoyo <toyomoyo>
Thu, 6 Sep 2007 06:25:40 +0000 (06:25 +0000)
blocks/online_users/block_online_users.php

index 2a52de9e5b7dd42cafcb4b208db7e829d8bdf450..8029c2c54114cfcea71bd90023693545644582dc 100644 (file)
@@ -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 .= "<ul class='list'>\n";
             foreach ($users as $user) {
                 $this->content->text .= '<li class="listentry">';
-                $timeago = format_time(time() - max($user->timeaccess, $user->lastaccess)); //bruno to calculate correctly on frontpage 
+                $timeago = format_time(time() - $user->lastaccess); //bruno to calculate correctly on frontpage 
                 if ($user->username == 'guest') {
                     $this->content->text .= '<div class="user">'.print_user_picture($user->id, $COURSE->id, $user->picture, 16, true, false, '', false);
                     $this->content->text .= get_string('guestuser').'</div>';