From e26d9338ddc5f0f0440947e60013a57b82043783 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 30 Oct 2012 17:01:57 -0400
Subject: [PATCH] Refactor GC period into an integer for simpler translations

---
 src/com/gitblit/wicket/pages/RootSubPage.java |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/RootSubPage.java b/src/com/gitblit/wicket/pages/RootSubPage.java
index f7572b1..891c892 100644
--- a/src/com/gitblit/wicket/pages/RootSubPage.java
+++ b/src/com/gitblit/wicket/pages/RootSubPage.java
@@ -15,9 +15,17 @@
  */
 package com.gitblit.wicket.pages;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.markup.html.basic.Label;
 
+import com.gitblit.Constants.AccessRestrictionType;
+import com.gitblit.Constants.AuthorizationControl;
+import com.gitblit.GitBlit;
+import com.gitblit.models.RepositoryModel;
+import com.gitblit.models.UserModel;
 import com.gitblit.utils.StringUtils;
 
 /**
@@ -45,4 +53,39 @@
 		add(new Label("pageSubName", subName));
 		super.setupPage("", pageName);
 	}
+	
+	protected List<String> getAccessRestrictedRepositoryList(boolean includeWildcards, UserModel user) {
+		// build list of access-restricted projects
+		String lastProject = null;
+		List<String> repos = new ArrayList<String>();
+		if (includeWildcards) {
+			// all repositories
+			repos.add(".*");
+			// all repositories excluding personal repositories
+			repos.add("[^~].*");
+		}
+		
+		for (String repo : GitBlit.self().getRepositoryList()) {
+			RepositoryModel repositoryModel = GitBlit.self().getRepositoryModel(repo);
+			if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)
+					&& repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED)) {
+				if (user != null &&
+						(repositoryModel.isOwner(user.username) || repositoryModel.isUsersPersonalRepository(user.username))) {
+					// exclude Owner or personal repositories
+					continue;
+				}
+				if (includeWildcards) {
+					if (lastProject == null || !lastProject.equalsIgnoreCase(repositoryModel.projectPath)) {
+						lastProject = repositoryModel.projectPath.toLowerCase();
+						if (!StringUtils.isEmpty(repositoryModel.projectPath)) {
+							// regex for all repositories within a project
+							repos.add(repositoryModel.projectPath + "/.*");
+						}
+					}
+				}
+				repos.add(repo.toLowerCase());
+			}
+		}
+		return repos;
+	}
 }

--
Gitblit v1.9.1