]> git.mjollnir.org Git - moodle.git/commitdiff
Slight change to log page so that for > 5000 courses or users we don't straight off...
authormjollnir_ <mjollnir_>
Tue, 23 Nov 2004 00:16:24 +0000 (00:16 +0000)
committermjollnir_ <mjollnir_>
Tue, 23 Nov 2004 00:16:24 +0000 (00:16 +0000)
course/lib.php
course/log.php

index a329adda0d7acb513ebc33b3f50e29fbedaa5318..8e02789f84de7ace0b0bd18c7c0a8ec790ef1c3c 100644 (file)
@@ -16,6 +16,10 @@ define('COURSE_MAX_RECENT_PERIOD', 172800);  // Two days, in seconds
 
 define('COURSE_MAX_SUMMARIES_PER_PAGE', 10); // courses
 
+define('COURSE_MAX_COURSES_PER_DROPDOWN',5000); //  max courses in log dropdown before switching to optional
+
+define('COURSE_MAX_USERS_PER_DROPDOWN',5000); //  max users in log dropdown before switching to optional
+
 define("FRONTPAGENEWS",           0);
 define("FRONTPAGECOURSELIST",     1);
 define("FRONTPAGECATEGORYNAMES",  2);
@@ -228,10 +232,48 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0,
 }
 
 function print_log_selector_form($course, $selecteduser=0, $selecteddate="today",
-                                 $modname="", $modid=0, $modaction="", $selectedgroup=-1) {
+                                 $modname="", $modid=0, $modaction="", $selectedgroup=-1,$showcourses=0,$showusers=0) {
 
     global $USER, $CFG;
 
+    // first check to see if we can override showcourses and showusers
+    $numcourses =  count_records_select("course", "", "COUNT(id)");
+    if ($numcourses < COURSE_MAX_COURSES_PER_DROPDOWN && !$showcourses) {
+        $showcourses = 1;
+    }
+   
+    if ($course->category && $selectedgroup) {
+        $sql = 'SELECT COUNT(ut.id) '.
+               'FROM '.$CFG->prefix.'groups_members gm '.
+               ' JOIN '.$CFG->prefix.'user_teachers  ut ON gm.userid=ut.userid '.
+               'WHERE ut.course='.$course->id.' AND gm.groupid='.$selectedgroup;
+        $numteachers = count_records_sql($sql); 
+        // students
+        $sql = 'SELECT COUNT(us.id) '.
+               'FROM '.$CFG->prefix.'groups_members gm '.
+               ' JOIN '.$CFG->prefix.'user_students us ON gm.userid=us.userid '.
+               'WHERE us.course='.$course->id.' AND gm.groupid='.$selectedgroup;
+        $numstudents = count_records_sql($sql); 
+        // add
+        $numusers = $numstudents + $numteachers;
+    }
+    else if ($course->category || !$CFG->allusersaresitestudents) {
+        $sql = "SELECT COUNT(t.id) FROM {$CFG->prefix}user_teachers t
+                            WHERE t.course = '$course->id'";
+        $numusers = count_records_sql($sql);
+        $sql = "SELECT count(s.id) FROM {$CFG->prefix}user_students s 
+                            WHERE s.course = '$course->id'";
+        $numusers = $numusers + count_records_sql($sql);
+    }
+    else if (!$course->category && $CFG->allusersaresitestudents) {
+        $numusers = get_users(false, '', true,'','','','',0,9999,'id');
+    }
+
+    if ($numusers < COURSE_MAX_USERS_PER_DROPDOWN && !$showusers) {
+        $showusers = 1;
+    }
+    
+
     /// Setup for group handling.
     $isteacher = isteacher($course->id);
     $isteacheredit = isteacheredit($course->id);
@@ -251,32 +293,42 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today"
     // Get all the possible users
     $users = array();
 
-    if ($course->category) {
-        /// If using a group, only get users in that group.
-        if ($selectedgroup) {
-            $sql = 'SELECT u.id as id, u.firstname, u.lastname, u.lastaccess '.
-                   'FROM '.$CFG->prefix.'user u,'.$CFG->prefix.'user_students us,'.$CFG->prefix.'groups_members gm, '.
-                        $CFG->prefix.'user_teachers ut '.
-                   'WHERE us.course='.$course->id.' AND gm.groupid='.$selectedgroup.
-                   ' AND (gm.userid=us.userid OR gm.userid=ut.userid) AND gm.userid=u.id';
-            $courseusers = get_records_sql($sql);
+    if ($showusers) {
+        if ($course->category) {
+            /// If using a group, only get users in that group.
+            if ($selectedgroup) {
+                // teachers
+                $sql = 'SELECT u.id as id, u.firstname, u.lastname, u.lastaccess '.
+                    'FROM '.$CFG->prefix.'user u '.
+                    ' JOIN '.$CFG->prefix.'groups_members gm ON gm.userid=u.id '.
+                    ' JOIN '.$CFG->prefix.'user_teachers  ut ON gm.userid=ut.userid '.
+                    'WHERE ut.course='.$course->id.' AND gm.groupid='.$selectedgroup;
+                $courseusers = get_records_sql($sql); 
+                // students
+                $sql = 'SELECT u.id as id, u.firstname, u.lastname, u.lastaccess '.
+                    'FROM '.$CFG->prefix.'user u '.
+                    ' JOIN '.$CFG->prefix.'groups_members gm ON gm.userid=u.id '.
+                    ' JOIN '.$CFG->prefix.'user_students  us ON gm.userid=us.userid '.
+                    'WHERE us.course='.$course->id.' AND gm.groupid='.$selectedgroup;
+                $courseusers = array_merge($couseusers, get_records_sql($sql)); 
+            } else {
+                $courseusers = get_course_users($course->id, '', '', 'u.id, u.firstname, u.lastname');
+            }
         } else {
-            $courseusers = get_course_users($course->id, '', '', 'u.id, u.firstname, u.lastname');
+            $courseusers = get_site_users("u.lastaccess DESC", "u.id, u.firstname, u.lastname");
         }
-    } else {
-        $courseusers = get_site_users("u.lastaccess DESC", "u.id, u.firstname, u.lastname");
-    }
 
-    if ($courseusers) {
-        foreach ($courseusers as $courseuser) {
-            $users[$courseuser->id] = fullname($courseuser, $isteacher);
+        if ($courseusers) {
+            foreach ($courseusers as $courseuser) {
+                $users[$courseuser->id] = fullname($courseuser, $isteacher);
+            }
+        }
+        if ($guest = get_guest()) {
+            $users[$guest->id] = fullname($guest);
         }
-    }
-    if ($guest = get_guest()) {
-        $users[$guest->id] = fullname($guest);
     }
 
-    if (isadmin()) {
+    if (isadmin() && $showcourses) {
         if ($ccc = get_records("course", "", "", "fullname","id,fullname,category")) {
             foreach ($ccc as $cc) {
                 if ($cc->category) {
@@ -365,10 +417,20 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today"
     echo '<center>';
     echo '<form action="log.php" method="get">';
     echo '<input type="hidden" name="chooselog" value="1" />';
-    if (isadmin()) {
+    echo '<input type="hidden" name="showusers" value="'.$showusers.'" />';
+    echo '<input type="hidden" name="showcourses" value="'.$showcourses.'" />';
+    if (isadmin() && $showcourses) { 
         choose_from_menu ($courses, "id", $course->id, "");
     } else {
-        echo '<input type="hidden" name="id" value="'.$course->id.'" />';
+        //        echo '<input type="hidden" name="id" value="'.$course->id.'" />';
+        $courses = array();
+        $courses[$course->id] = $course->fullname . ((empty($course->category)) ? ' (Site) ' : '');
+        choose_from_menu($courses,"id",$course->id,false);
+        if (isadmin()) {
+            $a->url = "log.php?chooselog=0&group=$selectedgroup&user=$selecteduser"
+                ."&id=$course->id&date=$selecteddate&modid=$selectedactivity&showcourses=1&showusers=$showusers";
+            print_string('logtoomanycourses','moodle',$a);
+        }
     }
 
     if ($showgroups) {
@@ -379,7 +441,23 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today"
         choose_from_menu ($groups, "group", $selectedgroup, get_string("allgroups") );
     }
 
-    choose_from_menu ($users, "user", $selecteduser, get_string("allparticipants") );
+    if ($showusers) {
+        choose_from_menu ($users, "user", $selecteduser, get_string("allparticipants") );
+    }
+    else {
+        $users = array();
+        if (!empty($selecteduser)) {
+            $user = get_record('user','id',$selecteduser);
+            $users[$selecteduser] = fullname($user);
+        }
+        else {
+            $users[0] = get_string('allparticipants');
+        }
+        choose_from_menu($users,'user',$selecteduser,false);
+        $a->url = "log.php?chooselog=0&group=$selectedgroup&user=$selecteduser"
+            ."&id=$course->id&date=$selecteddate&modid=$selectedactivity&showusers=1&showcourses=$showcourses";
+        print_string('logtoomanyusers','moodle',$a);
+    }
     choose_from_menu ($dates, "date", $selecteddate, get_string("alldays"));
     choose_from_menu ($activities, "modid", $selectedactivity, get_string("allactivities"), "", "");
     echo '<input type="submit" value="'.get_string('showtheselogs').'" />';
index dddf7f4a188fb1f296462383353fe3334b1bd451..b1ac09dbf9e6b79f2af341e513b990ec0b629ac2 100644 (file)
@@ -12,7 +12,9 @@
     optional_variable($modid, ''); // course_module->id
     optional_variable($modaction, ''); // an action as recorded in the logs
     optional_variable($page, '0');     // which page to show
-    optional_variable($perpage, '100'); // how many per page
+    optional_variable($perpage, '100'); // how many per page 
+    optional_variable($showcourses,0); // whether to show courses if we're over our limit.
+    optional_variable($showusers,0); // whether to show users if we're over our limit.
 
     require_login();
 
@@ -60,7 +62,7 @@
         
         print_heading("$course->fullname: $userinfo, $dateinfo (".usertimezone().")");
 
-        print_log_selector_form($course, $user, $date, $modname, $modid, $modaction, $group);
+        print_log_selector_form($course, $user, $date, $modname, $modid, $modaction, $group, $showcourses, $showusers);
 
         print_log($course, $user, $date, 'l.time DESC', $page, $perpage, 
                   "log.php?id=$course->id&amp;chooselog=1&amp;user=$user&amp;date=$date&amp;modid=$modid&amp;modaction=$modaction&amp;group=$group", 
@@ -77,7 +79,7 @@
 
         print_heading(get_string('chooselogs') .':');
 
-        print_log_selector_form($course);
+        print_log_selector_form($course, $user, $date, $modname, $modid, $modaction, $group, $showcourses, $showusers);
 
         echo '<br />';
         print_heading(get_string('chooselivelogs') .':');