page: maintain all placeholder includes in widget/
[minimedit.git] / widget / login / commits.php
diff --git a/widget/login/commits.php b/widget/login/commits.php
new file mode 100644 (file)
index 0000000..b86b6c5
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+if (!function_exists('popen')) {
+       print "<p>Niet beschikbaar op deze server!</p>\n";
+       return;
+}
+
+$pagesize = intval(@$Place['n'] ?: @$_GET['n']) ?: 20;
+$gitcmd = "git log -n $pagesize --pretty='%at\t%an\t%s'";
+
+if ( $offset = intval(@$_GET['start']) ) {
+       $gitcmd .= " --skip=$offset";
+}
+
+if ( $log = popen($gitcmd, 'r') ) {
+       $lines = 0;
+       print "<ul>\n";
+       while ( $line = fgets($log) ) {
+               list ($atime, $author, $message) = explode("\t", $line, 3);
+               list ($author) = explode(' ', $author); # first name only
+               printf('<li>%s <small class="date">%s • %s</small></li>'."\n",
+                       $message, $author, strftime('%F %H:%M', $atime)
+               );
+               $lines++;
+       }
+       print "</ul>\n\n";
+       pclose($log);
+
+       $navbase = $Page == 'login/commits' ? '?' : '/login/commits?';
+       $nav = [];
+       $nav[] = sprintf('Pagina %d', ceil($offset / $pagesize) + 1);
+       if ($lines >= $pagesize) {
+               $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $offset + $pagesize, 'eerder');
+       }
+       if ($offset > $pagesize) {
+               $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $offset - $pagesize, 'later');
+       }
+       if ($offset > 0) {
+               $nav[] = sprintf('<a href="%s">%s</a>', $navbase, 'laatste');
+       }
+       printf('<p class="nav">%s</p>'."\n\n", implode(' • ', $nav));
+}