From: moodler Date: Fri, 22 Aug 2003 06:07:18 +0000 (+0000) Subject: Added full paging to all displays of logs! :-) X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=519d369f60e954709df59607f63ea3f4b384d038;p=moodle.git Added full paging to all displays of logs! :-) --- 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 "
"; echo "
"; + echo ""; 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 "

"; - print_string("displayingrecords", "", $totalcountlogs); + print_string("displayingrecords", "", $totalcount); echo "

"; + print_paging_bar($totalcount, $page, $perpage, "$url&perpage=$perpage&"); + echo ""; foreach ($logs as $log) { @@ -189,6 +187,8 @@ function print_log($course, $user=0, $date=0, $order="ORDER BY l.time ASC") { echo ""; } echo "
"; + + 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 "
"; print_log_graph($course, $user->id, "userday.png"); echo "
"; - 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 "
"; print_log_graph($course, $user->id, "usercourse.png"); echo "
"; - 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 "
"; @@ -1626,7 +1626,7 @@ function print_paging_bar($totalcount, $page, $perpage, $baseurl) { $lastpage = ceil($totalcount / $perpage); if ($page > 15) { $startpage = $page - 10; - echo " ..."; + echo " 1 ..."; } else { $startpage = 0; } @@ -1643,7 +1643,8 @@ function print_paging_bar($totalcount, $page, $perpage, $baseurl) { $currpage++; } if ($currpage < $lastpage) { - echo " ..."; + $lastpageactual = $lastpage - 1; + echo " ...$lastpage "; } $pagenum = $page + 1; if ($pagenum != $displaypage) {