d892cb591e169945945eb8646904dd10a3bbeddb
[minimedit.git] / widget / login / commits.php
1 <?php
2 if (!function_exists('popen')) {
3         print "<p>Niet beschikbaar op deze server!</p>\n";
4         return;
5 }
6
7 $pagesize = intval(@$Place['n'] ?: @$_GET['n']) ?: 20;
8 $gitcmd = "git log -n $pagesize --pretty='%at\t%an\t%s'";
9
10 if ( $offset = intval(@$_GET['start']) ) {
11         $gitcmd .= " --skip=$offset";
12 }
13
14 if ( $log = popen($gitcmd, 'r') ) {
15         $lines = 0;
16         print "<ul>\n";
17         while ( $line = fgets($log) ) {
18                 list ($atime, $author, $message) = explode("\t", $line, 3);
19                 list ($author) = explode(' ', $author); # first name only
20                 printf('<li>%s <small class="date">%s • %s</small></li>'."\n",
21                         htmlspecialchars($message),
22                         htmlspecialchars($author), strftime('%F %H:%M', $atime)
23                 );
24                 $lines++;
25         }
26         print "</ul>\n\n";
27         pclose($log);
28
29         $navbase = $Page->handler == 'login/commits' ? '?' : '/login/commits?';
30         $nav = [];
31         $nav[] = sprintf('Pagina %d', ceil($offset / $pagesize) + 1);
32         if ($lines >= $pagesize) {
33                 $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $offset + $pagesize, 'eerder');
34         }
35         if ($offset > $pagesize) {
36                 $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $offset - $pagesize, 'later');
37         }
38         if ($offset > 0) {
39                 $nav[] = sprintf('<a href="%s">%s</a>', $navbase, 'laatste');
40         }
41         printf('<p class="nav">%s</p>'."\n\n", implode(' • ', $nav));
42 }