]> git.mjollnir.org Git - moodle.git/commitdiff
Added full paging to all displays of logs! :-)
authormoodler <moodler>
Fri, 22 Aug 2003 06:07:18 +0000 (06:07 +0000)
committermoodler <moodler>
Fri, 22 Aug 2003 06:07:18 +0000 (06:07 +0000)
course/lib.php
course/log.php
course/user.php
lib/datalib.php
lib/weblib.php

index c7e6f5b6d2b85d39998a9cec10c209622bebbb60..dd29fe0a45a789a179960a0140ec56e758c22fc9 100644 (file)
@@ -86,6 +86,7 @@ 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()) {
         choose_from_menu ($courses, "id", $course->id, "");
     } else {
@@ -117,17 +118,17 @@ function make_log_url($module, $url) {
 }
 
 
-function print_log($course, $user=0, $date=0, $order="ORDER BY l.time ASC") {
+function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $perpage=100, $url="") {
 // It is assumed that $date is the GMT time of midnight for that day, 
 // and so the next 86400 seconds worth of logs are printed.
 
     global $CFG;
 
     if ($course->category) {
-        $selector = "WHERE l.course='$course->id' AND l.userid = u.id";
+        $selector = "l.course='$course->id' AND l.userid = u.id";
 
     } else {
-        $selector = "WHERE l.userid = u.id";  // Show all courses
+        $selector = "l.userid = u.id";  // Show all courses
         if ($ccc = get_courses(-1)) {
             foreach ($ccc as $cc) {
                 $courses[$cc->id] = "$cc->shortname";
@@ -144,9 +145,7 @@ function print_log($course, $user=0, $date=0, $order="ORDER BY l.time ASC") {
         $selector .= " AND l.time > '$date' AND l.time < '$enddate'";
     }
 
-    $order = $order." LIMIT ".COURSE_MAX_LOGS_PER_PAGE;   // To keep it manageable
-
-    if (!$logs = get_logs($selector, $order)) {
+    if (!$logs = get_logs($selector, $order, $page*$perpage, $perpage, $totalcount)) {
         notify("No logs found!");
         print_footer($course);
         exit;
@@ -155,16 +154,15 @@ function print_log($course, $user=0, $date=0, $order="ORDER BY l.time ASC") {
     $count=0;
     $tt = getdate(time());
     $today = mktime (0, 0, 0, $tt["mon"], $tt["mday"], $tt["year"]);
-    if (($totalcountlogs = count($logs)) == COURSE_MAX_LOGS_PER_PAGE) {
-        $totalcountlogs = "$totalcountlogs (+)";
-    }
 
     $strftimedatetime = get_string("strftimedatetime");
 
     echo "<p align=center>";
-    print_string("displayingrecords", "", $totalcountlogs);
+    print_string("displayingrecords", "", $totalcount);
     echo "</p>";
 
+    print_paging_bar($totalcount, $page, $perpage, "$url&perpage=$perpage&");
+
     echo "<table border=0 align=center cellpadding=3 cellspacing=3>";
     foreach ($logs as $log) {
 
@@ -189,6 +187,8 @@ function print_log($course, $user=0, $date=0, $order="ORDER BY l.time ASC") {
         echo "</tr>";
     }
     echo "</table>";
+
+    print_paging_bar($totalcount, $page, $perpage, "$url&perpage=$perpage&");
 }
 
 
index 68442e0c5b9135f0ee5eedb3b2fccdb03e94dda7..cfea8d0b12dfab0bce7bfff2c83f2a23213a9fec 100644 (file)
@@ -7,6 +7,8 @@
     require_variable($id);    // Course ID
     optional_variable($user, 0); // User to display
     optional_variable($date, 0); // Date to display
+    optional_variable($page, "0");     // which page to show
+    optional_variable($perpage, "100"); // how many per page
 
     require_login();
 
@@ -29,7 +31,7 @@
     $stradministration = get_string("administration");
 
 
-    if ($user || $date) {
+    if (!empty($_GET['chooselog'])) {
         $userinfo = get_string("allparticipants");
         $dateinfo = get_string("alldays");
 
@@ -57,7 +59,8 @@
 
         print_log_selector_form($course, $user, $date);
 
-        print_log($course, $user, $date, "ORDER BY l.time DESC");
+        print_log($course, $user, $date, "l.time DESC", $page, $perpage, 
+                  "log.php?id=$course->id&chooselog=1&user=$user&date=$date");
 
     } else {
         if ($course->category) {
index 9743e0f91bd52eb587aed7aed55c0c6320f56ca0..a4fb8047f8bddf4bb9b4b9ca4af5008df84c2c2e 100644 (file)
@@ -10,6 +10,8 @@
     require_variable($id);       // course id
     require_variable($user);     // user id
     optional_variable($mode, "todaylogs");
+    optional_variable($page, "0");
+    optional_variable($perpage, "100");
 
     require_login();
 
             echo "<HR><CENTER>";
             print_log_graph($course, $user->id, "userday.png");
             echo "</CENTER>";
-            print_log($course, $user->id, usergetmidnight(time()), "ORDER BY l.time DESC");
+            print_log($course, $user->id, usergetmidnight(time()), "l.time DESC", $page, $perpage, 
+                      "user.php?id=$course->id&user=$user->id&mode=$mode");
             break;
 
         case "alllogs" :
             echo "<HR><CENTER>";
             print_log_graph($course, $user->id, "usercourse.png");
             echo "</CENTER>";
-            print_log($course, $user->id, 0, "ORDER BY l.time DESC");
+            print_log($course, $user->id, 0, "l.time DESC", $page, $perpage, 
+                      "user.php?id=$course->id&user=$user->id&mode=$mode");
             break;
 
         case "outline" :
index 9bc9732066796a2e46da16c7a2ee93a1149c1274..4bafe4848be4d9988c706e688d77a38cf9a3b9f3 100644 (file)
@@ -1554,15 +1554,37 @@ function add_to_log($course, $module, $action, $url="", $info="") {
 }
 
 
-function get_logs($select, $order) {
+function get_logs($select, $order="l.time DESC", $limitfrom="", $limitnum="", &$totalcount) {
     global $CFG;
 
+    if ($limitfrom !== "") {
+        switch ($CFG->dbtype) {
+            case "mysql":
+                 $limit = "LIMIT $limitfrom,$limitnum";
+                 break;
+            case "postgres7":
+                 $limit = "LIMIT $limitnum OFFSET $limitfrom";
+                 break;
+            default: 
+                 $limit = "LIMIT $limitnum,$limitfrom";
+        }
+    } else {
+        $limit = "";
+    }
+
+    if ($order) {
+        $order = "ORDER BY $order";
+    }
+
+    $selectsql = "{$CFG->prefix}log l, {$CFG->prefix}user u WHERE $select";
+
+    $totalcount = count_records_sql("SELECT COUNT(*) FROM $selectsql");
+
     return get_records_sql("SELECT l.*, u.firstname, u.lastname, u.picture 
-                              FROM {$CFG->prefix}log l, 
-                                   {$CFG->prefix}user u 
-                                   $select $order");
+                                FROM $selectsql $order $limit"); 
 }
 
+
 function get_logs_usercourse($userid, $courseid, $coursestart) {
     global $CFG;
 
index 978294fc54c420a7ec84b56295985d79222d72a7..f36f8efea1a9b1fd65ec62220cf54268f0d24f24 100644 (file)
@@ -1618,7 +1618,7 @@ function obfuscate_mailto($email, $label="") {
 function print_paging_bar($totalcount, $page, $perpage, $baseurl) {
 /// Prints a single paging bar to provide access to other pages  (usually in a search)
 
-    $maxdisplay = 20;
+    $maxdisplay = 18;
 
     if ($totalcount > $perpage) {
         echo "<center>";
@@ -1626,7 +1626,7 @@ function print_paging_bar($totalcount, $page, $perpage, $baseurl) {
         $lastpage = ceil($totalcount / $perpage);
         if ($page > 15) {
             $startpage = $page - 10;
-            echo "&nbsp...";
+            echo "&nbsp<a href=\"{$baseurl}page=0\">1</a>&nbsp;...";
         } else {
             $startpage = 0;
         }
@@ -1643,7 +1643,8 @@ function print_paging_bar($totalcount, $page, $perpage, $baseurl) {
             $currpage++;
         }
         if ($currpage < $lastpage) {
-            echo "&nbsp...";
+            $lastpageactual = $lastpage - 1;
+            echo "&nbsp;...<a href=\"{$baseurl}page=$lastpageactual\">$lastpage</a>&nbsp;";
         }
         $pagenum = $page + 1;
         if ($pagenum != $displaypage) {