login/commits: git show of hash parameter
[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 $baseurl = 'login/commits';
8 $pagesize = intval(@$Page->place['n'] ?: @$_GET['n']) ?: 20;
9 $gitcmd = "git log -n $pagesize --pretty='%h\t%at\t%an\t%s'";
10
11 if ( $offset = intval(@$_GET['start']) ) {
12         $gitcmd .= " --skip=$offset";
13 }
14
15 if ( $log = popen($gitcmd, 'r') ) {
16         $lines = 0;
17         print "<ul>\n";
18         while ( $line = fgets($log) ) {
19                 list ($id, $atime, $author, $message) = explode("\t", $line, 4);
20                 list ($author) = explode(' ', $author); # first name only
21                 $html = htmlspecialchars(rtrim($message));
22                 $html .= sprintf(' <small class="date">%s • %s</small>',
23                         htmlspecialchars($author), strftime('%F %H:%M', $atime)
24                 );
25                 $html = sprintf('<a href="%s">%s</a>',
26                         "/$baseurl/$id", $html
27                 );
28                 print "<li>$html</li>\n";
29                 $lines++;
30         }
31         print "</ul>\n\n";
32         pclose($log);
33
34         $limit = $offset + $lines + 1; # assume one more
35         print $Page->widget('nav', [
36                 'start' => $offset, 'n' => $pagesize, 'total' => $limit,
37                 'link' => $Page->link == $baseurl ? NULL : $baseurl,
38         ]);
39 }