show newest repositories in list at first
authorChristian Weiske <cweiske@cweiske.de>
Wed, 14 May 2014 06:12:12 +0000 (08:12 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Wed, 14 May 2014 06:12:12 +0000 (08:12 +0200)
data/config.default.php
src/phorkie/Repositories.php
www/list.php

index 3b5066dfc5ac094f6f4ffcded08ce9064d523ca0..dd3219583303764c7fadd58f0f118ee529ef53f5 100644 (file)
@@ -14,6 +14,7 @@ $GLOBALS['phorkie']['cfg'] = array(
     'geshi'         => 'MediaWiki/geshi/geshi/geshi.php',
     'index'         => 'new',//"new" or "list"
     'perPage'       => 10,
+    'defaultListPage' => 'last',//a number or "last"
     'notificator'   => array(
         /* send out pingback/webmentions when a remote paste is forked */
         'linkback'  => true,
index a75f2c23a62d23ca93f6e57ee340592317ce9f2d..729ff23afbab88e5664d45fa6330016388b68532 100644 (file)
@@ -40,7 +40,7 @@ class Repositories
     /**
      * Get a list of repository objects
      *
-     * @param integer $page    Page number, beginning with 0
+     * @param integer $page    Page number, beginning with 0, or "last"
      * @param integer $perPage Number of repositories per page
      *
      * @return array Array of Repositories first, number of repositories second
@@ -50,15 +50,25 @@ class Repositories
         chdir($this->gitDir);
         $dirs = glob('*.git', GLOB_ONLYDIR);
         sort($dirs, SORT_NUMERIC);
+        if ($page === 'last') {
+            //always show the last 10
+            $page = intval(count($dirs) / $perPage);
+            $start = count($dirs) - $perPage;
+            if ($start < 0) {
+                $start = 0;
+            }
+            $some = array_slice($dirs, $start, $perPage);
+        } else {
+            $some = array_slice($dirs, $page * $perPage, $perPage);
+        }
 
-        $some = array_slice($dirs, $page * $perPage, $perPage);
         $repos = array();
         foreach ($some as $oneDir) {
             $r = new Repository();
             $r->loadById(substr($oneDir, 0, -4));
             $repos[] = $r;
         }
-        return array($repos, count($dirs));
+        return array($repos, count($dirs), $page);
     }
 }
 
index 88ad31dc66a20f7e3cef0fd00d558ecee0019fd8..7c60ceb5b2ff63e50a2e282a6a6f94a1ca16e3b0 100644 (file)
@@ -7,7 +7,7 @@ $reqWritePermissions = false;
 require_once 'www-header.php';
 $rs = new Repositories();
 
-$page = 0;
+$page = $GLOBALS['phorkie']['cfg']['defaultListPage'];
 if (isset($_GET['page'])) {
     if (!is_numeric($_GET['page'])) {
         throw new Exception_Input('List page is not numeric');
@@ -16,7 +16,7 @@ if (isset($_GET['page'])) {
 }
 
 $perPage = $GLOBALS['phorkie']['cfg']['perPage'];
-list($repos, $repoCount) = $rs->getList($page, $perPage);
+list($repos, $repoCount, $page) = $rs->getList($page, $perPage);
 
 $pager = new Html_Pager(
     $repoCount, $perPage, $page + 1, 'list/%d'