admin/commits: page indication and navigation
[minimedit.git] / admin / commits.php
1 <?php
2 $pagesize = 20;
3 $gitcmd = "git log -n $pagesize --pretty='%at\t%an\t%s'";
4
5 if ( $offset = intval(@$_GET['start']) ) {
6         $gitcmd .= " --skip=$offset";
7 }
8
9 if ( $log = popen($gitcmd, 'r') ) {
10         $lines = 0;
11         print "<ul>\n";
12         while ( $line = fgets($log) ) {
13                 list ($atime, $author, $message) = explode("\t", $line, 3);
14                 list ($author) = explode(' ', $author); # first name only
15                 printf('<li>%s <small class="date">%s • %s</small></li>'."\n",
16                         $message, $author, strftime('%F %H:%M', $atime)
17                 );
18                 $lines++;
19         }
20         print "</ul>\n\n";
21         pclose($log);
22
23         $nav = [];
24         $nav[] = sprintf('Pagina %d', floor($offset / $pagesize) + 1);
25         if ($offset > 0) {
26                 $nav[] = sprintf('<a href="?start=%d">%s</a>', 0, 'laatste');
27         }
28         if ($offset > $pagesize) {
29                 $nav[] = sprintf('<a href="?start=%d">%s</a>', $offset - $pagesize, 'later');
30         }
31         if ($lines >= $pagesize) {
32                 $nav[] = sprintf('<a href="?start=%d">%s</a>', $offset + $pagesize, 'eerder');
33         }
34         printf("<p>%s</p>\n\n", implode(' • ', $nav));
35 }