diff --git a/history.php b/history.php index c760e27..32f6261 100644 --- a/history.php +++ b/history.php @@ -28,9 +28,14 @@ class History { } $sel = $page->get_selection($table); - $st = $page->conn->prepare("SELECT $sel FROM $table WHERE $field=:uuid ORDER BY time"); + $limit = $page->settings->limit_per_page; + $offset = History::get_offset($type); + + $st = $page->conn->prepare("SELECT $sel FROM $table WHERE $field=:uuid ORDER BY time DESC LIMIT :limit OFFSET :offset"); $st->bindParam(":uuid", $uuid, PDO::PARAM_STR); + $st->bindParam(":limit", $limit, PDO::PARAM_INT); + $st->bindParam(":offset", $offset, PDO::PARAM_INT); if ($st->execute()) { while ($row = $st->fetch(PDO::FETCH_ASSOC)) { @@ -54,6 +59,16 @@ class History { } return ($a < $b) ? 1 : -1; } + + static function get_offset($table) { + $v = $table[0]; + if (isset($_GET[$v]) && is_string($_GET[$v])) { + if (filter_var($_GET[$v], FILTER_VALIDATE_INT)) { + return (int)$_GET[$v]; + } + } + return 0; + } } $page = new Page("history"); @@ -115,24 +130,35 @@ try { if (!empty($all)) { $page->table_begin(); - $offset = 0; $limit = $page->settings->limit_per_page; + /*$offset = 0; if ($page->settings->show_pager) { $current_page = $page->page - 1; $offset = ($limit * $current_page); $limit += $offset; - } + }*/ + + $totalb = 0; + $totalm = 0; + $totalw = 0; + $totalk = 0; $i = 0; foreach ($all as $row) { $i++; - if ($page->settings->show_pager && $i < $offset) { + /*if ($page->settings->show_pager && $i < $offset) { continue; - } + }*/ if ($i > $limit) break; $type = $row['__table__']; + + if ($type == 'bans') $totalb++; + elseif ($type == 'mutes') $totalm++; + elseif ($type == 'warnings') $totalw++; + elseif ($type == 'kicks') $totalk++; + $page->set_info($page->type_info($type)); $style = 'style="font-size: 13px;"'; @@ -148,6 +174,7 @@ try { 'Reason' => $page->clean($row['reason']), 'Date' => $page->millis_to_date($row['time']), 'Expires' => $page->expiry($row), + //'i' => $i . "/" . $limit . "/" . $total, )); } @@ -162,7 +189,17 @@ try { if ($staffhistory) { $args .= "&staffhistory=1"; } - $page->print_pager($total, $args); + + $prevargs = $args; + + $offb = History::get_offset("b") + $totalb; + $offm = History::get_offset("m") + $totalm; + $offw = History::get_offset("w") + $totalw; + $offk = History::get_offset("k") + $totalk; + + $args .= "&b=$offb&m=$offm&w=$offw&k=$offk"; + + $page->print_pager($total, $args, $prevargs); } } else { echo "No punishments found.
"; diff --git a/includes/page.php b/includes/page.php index 565e0fd..f4d12d0 100644 --- a/includes/page.php +++ b/includes/page.php @@ -339,7 +339,7 @@ class Page { '; } - function print_pager($total = -1, $args = "") { + function print_pager($total = -1, $args = "", $prevargs = "") { $table = $this->table; $page = $this->name . ".php"; @@ -363,7 +363,7 @@ class Page { $pager_prev = "
«
"; if ($prev_active) { - $pager_prev = "$pager_prev"; + $pager_prev = "$pager_prev"; } $pager_next = "
»
";