diff options
| author | Michael Save <savetheinternet@tinyboard.org> | 2012-01-09 10:20:13 +1100 |
|---|---|---|
| committer | Michael Save <savetheinternet@tinyboard.org> | 2012-01-09 10:20:13 +1100 |
| commit | 9969e37105e87a946546e78f917fc1b730073898 (patch) | |
| tree | 6cc439510242b1ee5547556dd67ae6ce8576d2c3 /mod.php | |
| parent | c7d72306ed4175a0b44a0ca31c5f0e1d4a96b449 (diff) | |
paginate modlog
Diffstat (limited to 'mod.php')
| -rw-r--r-- | mod.php | 69 |
1 files changed, 48 insertions, 21 deletions
@@ -268,40 +268,67 @@ 'mod'=>true ) ); - } elseif(preg_match('/^\/log$/', $query)) { + } elseif(preg_match('/^\/log(\/(\d+))?$/', $query, $match)) { if(!hasPermission($config['mod']['modlog'])) error($config['error']['noaccess']); + $page = isset($match[2]) ? $match[2] : 1; + $boards = Array(); $_boards = listBoards(); foreach($_boards as &$_b) { $boards[$_b['id']] = $_b['uri']; } - $body = '<table class="modlog"><tr><th>' . _('User') . '</th><th>' . _('IP address') . '</th><th>' . _('Ago') . '</th><th>' . _('Board') . '</th><th>' . _('Action') . '</th></tr>'; - - $query = prepare("SELECT `mods`.`id`,`username`,`ip`,`board`,`time`,`text` FROM `modlogs` INNER JOIN `mods` ON `mod` = `mods`.`id` ORDER BY `time` DESC LIMIT :limit"); + $query = prepare("SELECT `mods`.`id`,`username`,`ip`,`board`,`time`,`text` FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` ORDER BY `time` DESC LIMIT :offset, :limit"); $query->bindValue(':limit', $config['mod']['modlog_page'], PDO::PARAM_INT); + $query->bindValue(':offset', ($page - 1) * $config['mod']['modlog_page'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - while($log = $query->fetch()) { - $log['text'] = utf8tohtml($log['text']); - $log['text'] = preg_replace('/(\d+\.\d+\.\d+\.\d+)/', '<a href="?/IP/$1">$1</a>', $log['text']); + if(!$query->rowCount()) { + $body = '<p class="unimportant" style="text-align:center">(Nothing to display.)</p>'; + } else { + $body = '<table class="modlog">' . + '<tr>' . + '<th>' . _('User') . '</th>' . + '<th>' . _('IP address') . '</th>' . + '<th>' . _('Ago') . '</th>' . + '<th>' . _('Board') . '</th>' . + '<th>' . _('Action') . '</th>' . + '</tr>'; + while($log = $query->fetch()) { + $log['text'] = utf8tohtml($log['text']); + $log['text'] = preg_replace('/(\d+\.\d+\.\d+\.\d+)/', '<a href="?/IP/$1">$1</a>', $log['text']); - $body .= '<tr>' . - '<td class="minimal"><a href="?/users/' . $log['id'] . '">' . $log['username'] . '</a></td>' . - '<td class="minimal"><a href="?/IP/' . $log['ip'] . '">' . $log['ip'] . '</a></td>' . - '<td class="minimal">' . ago($log['time']) . '</td>' . - '<td class="minimal">' . - ($log['board'] ? - (isset($boards[$log['board']]) ? - '<a href="?/' . $boards[$log['board']] . '/' . $config['file_index'] . '">' . sprintf($config['board_abbreviation'], $boards[$log['board']]) . '</a></td>' - : '<em>deleted?</em>') - : '-') . - '<td>' . $log['text'] . '</td>' . - '</tr>'; - } + $body .= '<tr>' . + '<td class="minimal">' . + ($log['username'] ? + '<a href="?/new_PM/' . $log['id'] . '">' . $log['username'] . '</a>' + : '<em>deleted?</em>') . + '</td>' . + '<td class="minimal"><a href="?/IP/' . $log['ip'] . '">' . $log['ip'] . '</a></td>' . + '<td class="minimal">' . ago($log['time']) . '</td>' . + '<td class="minimal">' . + ($log['board'] ? + (isset($boards[$log['board']]) ? + '<a href="?/' . $boards[$log['board']] . '/' . $config['file_index'] . '">' . sprintf($config['board_abbreviation'], $boards[$log['board']]) . '</a></td>' + : '<em>deleted?</em>') + : '-') . + '<td>' . $log['text'] . '</td>' . + '</tr>'; + } - $body .= '</table>'; + $body .= '</table>'; + + $query = prepare("SELECT COUNT(*) AS `count` FROM `modlogs`"); + $query->execute() or error(db_error($query)); + $count = $query->fetch(); + + $body .= '<p class="unimportant" style="text-align:center;word-wrap:break-word">'; + for($x = 0; $x < $count['count'] / $config['mod']['modlog_page']; $x ++) { + $body .= '<a href="?/log/' . ($x+1) . '">[' . ($x + 1) . ']</a> '; + } + $body .= '</p>'; + } echo Element('page.html', Array( 'config'=>$config, |
