From 519d369f60e954709df59607f63ea3f4b384d038 Mon Sep 17 00:00:00 2001 From: moodler <moodler> Date: Fri, 22 Aug 2003 06:07:18 +0000 Subject: [PATCH] Added full paging to all displays of logs! :-) --- course/lib.php | 20 ++++++++++---------- course/log.php | 7 +++++-- course/user.php | 8 ++++++-- lib/datalib.php | 30 ++++++++++++++++++++++++++---- lib/weblib.php | 7 ++++--- 5 files changed, 51 insertions(+), 21 deletions(-) diff --git a/course/lib.php b/course/lib.php index c7e6f5b6d2..dd29fe0a45 100644 --- a/course/lib.php +++ b/course/lib.php @@ -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&"); } diff --git a/course/log.php b/course/log.php index 68442e0c5b..cfea8d0b12 100644 --- a/course/log.php +++ b/course/log.php @@ -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) { diff --git a/course/user.php b/course/user.php index 9743e0f91b..a4fb8047f8 100644 --- a/course/user.php +++ b/course/user.php @@ -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(); @@ -68,14 +70,16 @@ 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" : diff --git a/lib/datalib.php b/lib/datalib.php index 9bc9732066..4bafe4848b 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -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; diff --git a/lib/weblib.php b/lib/weblib.php index 978294fc54..f36f8efea1 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -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 " ..."; + echo " <a href=\"{$baseurl}page=0\">1</a> ..."; } else { $startpage = 0; } @@ -1643,7 +1643,8 @@ function print_paging_bar($totalcount, $page, $perpage, $baseurl) { $currpage++; } if ($currpage < $lastpage) { - echo " ..."; + $lastpageactual = $lastpage - 1; + echo " ...<a href=\"{$baseurl}page=$lastpageactual\">$lastpage</a> "; } $pagenum = $page + 1; if ($pagenum != $displaypage) { -- 2.39.5