case "docreate":
return "gwvp_DoCreateRepoPage";
break;
+ case "manage":
+ return "gwvp_ManageRepoPage";
+ break;
+ case "updateperms":
+ return "gwvp_UpdateRepoPerms";
+ break;
default:
return "gwvp_RepoAdminPage";
}
return false;
}
+function gwvp_ManageRepoPage()
+{
+ gwvp_goMainPage("gwvp_ManageRepoPageBody");
+}
+
function gwvp_RepoAdminPage()
{
gwvp_goMainPage("gwvp_RepoAdminPageBody");
gwvp_goMainPage("gwvp_CreateRepoPageBody");
}
+function gwvp_UpdateRepoPerms()
+{
+ global $LOGIN_TYPE, $BASE_URL;
+
+ $rid = -1;
+ if(isset($_REQUEST["q"])) {
+ $query = $_REQUEST["q"];
+ $qspl = explode("/", $query);
+ $rid = $qspl[3];
+ }
+
+ // a visible addition
+ if(isset($_REQUEST["visadd"])) {
+ foreach($_REQUEST["vismembersout"] as $mems) {
+ //gwvp_addRepoPermission($repoid, $permtype, $permref);
+ gwvp_addRepoPermission($rid, "visible", $mems);
+ }
+ }
+
+ // a visible removal
+ if(isset($_REQUEST["visremove"])) {
+ foreach($_REQUEST["vismembersin"] as $rems) {
+ error_log("Remove permid, $rems");
+ gwvp_removeRepoPermission($rems);
+ }
+ }
+
+ // a read addition
+ if(isset($_REQUEST["readadd"])) {
+ foreach($_REQUEST["readmembersout"] as $mems) {
+ //gwvp_addRepoPermission($repoid, $permtype, $permref);
+ gwvp_addRepoPermission($rid, "read", $mems);
+ }
+ }
+
+ // a read removal
+ if(isset($_REQUEST["readremove"])) {
+ foreach($_REQUEST["readmembersin"] as $rems) {
+ error_log("Remove permid, $rems");
+ gwvp_removeRepoPermission($rems);
+ }
+ }
+
+ // a write addition
+ if(isset($_REQUEST["writeadd"])) {
+ foreach($_REQUEST["writemembersout"] as $mems) {
+ //gwvp_addRepoPermission($repoid, $permtype, $permref);
+ gwvp_addRepoPermission($rid, "write", $mems);
+ }
+ }
+
+ // a write removal
+ if(isset($_REQUEST["writeremove"])) {
+ foreach($_REQUEST["writemembersin"] as $rems) {
+ error_log("Remove permid, $rems");
+ gwvp_removeRepoPermission($rems);
+ }
+ }
+
+ gwvp_SendMessage("info", "Permissions Updated");
+ header("Location: $BASE_URL/admin/repos/manage/$rid");
+ return;
+}
+
+//function gwvp_createGitRepo($name, $ownerid, $desc, $defaultperms=0, $bundle=null)
+
+
function gwvp_DoCreateRepoPage()
{
global $BASE_URL;
$reponame = $_REQUEST["reponame"];
$repodesc = $_REQUEST["repodesc"];
+ $defperms = 0;
+
+ if(isset($_REQUEST["defperms"])) {
+ switch($_REQUEST["defperms"]) {
+ case "permsall":
+ $defperms = 0;
+ break;
+ case "permsmeonly":
+ $defperms = 1;
+ break;
+ case "permsinvisible":
+ $defperms = 2;
+ break;
+ default:
+ $defperms = 2;
+ }
+ }
+
// TODO: this code is bollocks, need to redo
if(gwvp_repoExists($reponame)) {
gwvp_SendMessage("error", "a repository with the name <b>\"$reponame\"</b> already exists");
//header("Location: $BASE_URL/admin/repos/create?reponameobv=$reponame&repodescobv=$repodesc");
} else if($_FILES["bundlefile"]["size"] > 0) { // if(isset($_FILES["bundlefile"]["size"])) <--- this needs to happen here TODO
error_log("bundle file tmpname is ".$_FILES["bundlefile"]["tmp_name"]);
- gwvp_createGitRepo($reponame, $_FILES["bundlefile"]["tmp_name"]);
+ // function gwvp_createGitRepo($name, $ownerid, $desc, $defaultperms=0, $bundle=null)
+ // TODO: deal with default perms
+ gwvp_createGitRepo($reponame, $_SESSION["id"], $repodesc, $_FILES["bundlefile"]["tmp_name"], $defperms);
gwvp_SendMessage("info", "Repo, $reponame, created");
- } else if(gwvp_createGitRepo($reponame)) {
+ } else if(gwvp_createGitRepo($reponame, $_SESSION["id"], $repodesc, null, $defperms)) {
gwvp_SendMessage("info", "Repo, $reponame, created");
}
header("Location: $BASE_URL/admin/repos");
function gwvp_CreateRepoPageBody()
{
- global $BASE_URL, $repo_base;
+ global $BASE_URL;
+
+ $repo_base = gwvp_getConfigVal("repodir");
$reponameobv = "";
$repodescobv = "";
echo "<tr><td>Default Permisison Set</td><td bgcolor=\"#eeeeee\">";
echo "<table>";
- echo "<tr><td><input type=\"checkbox\" name=\"permsall\" checked></td><td>Anyone Can Read, Only you can write</td></tr>";
- echo "<tr><td><input type=\"checkbox\" name=\"permsmeonly\"></td><td>Anyone can see the repository exists, but only you can read or write to it</td></tr>";
- echo "<tr><td><input type=\"checkbox\" name=\"permsinvisible\"></td><td>Repository only visible to you</td></tr>";
+ echo "<tr><td><input type=\"radio\" name=\"defperms\" value=\"permsall\" checked></td><td>Anyone Can Read, Only you can write</td></tr>";
+ echo "<tr><td><input type=\"radio\" name=\"defperms\" value=\"permsmeonly\"></td><td>Anyone can see the repository exists, but only you can read or write to it</td></tr>";
+ echo "<tr><td><input type=\"radio\" name=\"defperms\" value=\"permsinvisible\"></td><td>Repository only visible to you</td></tr>";
echo "</table>";
echo "<h3>Your Repo's</h3>";
$ownreps = gwvp_getOwnedRepos($_SESSION["id"]);
if($ownreps != false) {
- echo "<table>";
- echo "<tr><th>Repo Name</th></tr>";
+ echo "<table border=\"1\">";
+ echo "<tr><th>Repo Name</th><th>Repo description</th></tr>";
foreach($ownreps as $repos) {
$mjay = print_r($repos, true);
error_log("snafu: $mjay");
$reponame = $repos["name"];
- echo "<tr><td>$reponame</td></tr>";
+ $repodesc = $repos["description"];
+ $rid = $repos["id"];
+ echo "<tr><td>$reponame</td><td>$repodesc</td><td><a href=\"$BASE_URL/admin/repos/manage/$rid\">Manage</a></td></tr>";
}
echo "</table>";
} else {
// i must also remember that the home page will also contain a list of repos and that this page is solely for maintance
// and creation of repos - so i dont need to get over-worked about the info stored on this page outside of those activities
$rlist = gwvp_GetRepoList();
- echo "<table border=\"1\"><tr><th>Repo Name</th><th>Repo Description</th><th>Repo Owner</th><th>Control</th></tr>";
+ echo "<table border=\"1\"><tr><th>Repo Name</th><th>Repo Description</th><th>Repo Owner</th></tr>";
foreach($rlist as $u_res) {
$rid = $u_res["id"];
$rname = $u_res["name"];
$rdesc = $u_res["description"];
$rown = gwvp_getUserName($u_res["owner"]);
- echo "<tr><td>$rname</td><td>$rdesc</td><td>$rown</td><td><a href=\"$BASE_URL/admin/repos/modify/$rid\">Modify</a></td></tr>";
+ echo "<tr><td>$rname</td><td>$rdesc</td><td>$rown</td><td><a href=\"$BASE_URL/admin/repos/manage/$rid\">Details</a></td></tr>";
}
echo "</table>";
return;
}
-// this funciton returns one of three things
-function gwvp_resolvRepoPerms($userid, $repoid)
+function gwvp_DisemableRefId($who)
{
+ if($who == "anon") return "Everyone";
+ if($who == "authed") return "All Authenticated User";
+
+ $epl = explode(":", $who);
+ if($epl[0] == "user") {
+ $username = gwvp_getUserName($epl[1]);
+ return "User: $username";
+ } else if ($epl[0] == "group") {
+ $grdent = gwvp_getGroup($epl[1]);
+ $groupname = $grdent["name"];
+ return "Group: $groupname";
+ } else return "unknown";
}
+function gwvp_ManageRepoPageBody()
+{
+ global $LOGIN_TYPE, $BASE_URL;
+
+ $rid = -1;
+ if(isset($_REQUEST["q"])) {
+ $query = $_REQUEST["q"];
+ $qspl = explode("/", $query);
+ $rid = $qspl[3];
+ }
+
+ $repodets = gwvp_GetRepo($rid);
+ $reponame = $repodets["name"];
+ $repodesc = $repodets["description"];
+ $repoownid = $repodets["owner"];
+ $owndby = gwvp_getUserName($repoownid);
+ $users = gwvp_getUsers();
+ $groups = gwvp_getGroups();
+ $repoperms = gwvp_getRepoPermissions($rid);
+
+
+ echo "<h2>Repository Management</h2>";
+ echo "<b>$owndby's</b> Repository <i>$reponame</i><br>";
+
+ echo "<form method=\"post\" action=\"$BASE_URL/admin/repos/update/$rid\">";
+
+ echo "<table>";
+ echo "<tr><td>Description</td><td><input type=\"text\" name=\"desc\" value=\"$repodesc\"></td></tr>";
+ echo "</table>";
+ echo "<input type=\"submit\" name=\"update\" value=\"Update\"><br>";
+ echo "</form>";
+
+ echo "<form method=\"post\" action=\"$BASE_URL/admin/repos/updateperms/$rid\">";
+ echo "<table>";
+ echo "<tr bgcolor=\"#eeeee0\"><th>Visibility</th><th>Read/Clone</th><th>Write/Push</th></tr>";
+ echo "<tr><td bgcolor=\"#eeeeff\">";
+
+
+
+
+ // visibility section
+ $visin[0] = 0;
+ echo "<table>";
+ echo "<tr><td>Allowed</td><td></td><td>All</td></tr>";
+ echo "<tr><td>";
+ // list allowed users
+ echo "<select name=\"vismembersin[]\" size=\"20\" multiple=\"true\">";
+ foreach($repoperms as $v_perms) {
+ if($v_perms["type"] == "visible") {
+ $who = $v_perms["ref"]; // now we need to disemble ref
+ $pid = $v_perms["id"];
+ $refid = gwvp_DisemableRefId($who);
+
+ $visin[$who] = true;
+
+ echo "<option value=\"$pid\">$refid</option>";
+ }
+ }
+
+ echo "</select>";
+
+ echo "</td><td>";
+ // buttons
+ echo "<input type=\"submit\" name=\"visadd\" value=\"<<\"><br>";
+ echo "<input type=\"submit\" name=\"visremove\" value=\">>\"><br>";
+
+ echo "</td><td>";
+ // list all users/groups/specials
+ echo "<select name=\"vismembersout[]\" size=\"20\" multiple=\"true\">";
+ if(!isset($visin["anon"])) echo "<option value=\"anon\">Everyone</option>";
+ if(!isset($visin["authed"])) echo "<option value=\"authed\">All Authenticated User</option>";
+ foreach($groups as $u_groups) {
+ $gname = $u_groups["name"];
+ $gid = $u_groups["id"];
+ if(!gwvp_IsGroupAdmin(null, $gid)) if(!isset($visin["group:$gid"])) echo "<option value=\"group:$gid\">Group: $gname</option>";
+ }
+ foreach($users as $u_users) {
+ $uid = $u_users["id"];
+ $email = $u_users["email"];
+ $username = $u_users["username"];
+ $fullname = $u_users["fullname"];
+ if(!gwvp_IsUserAdmin(null, null, $uid)) if(!isset($visin["user:$uid"])) echo "<option value=\"user:$uid\">User: $username</option>";
+ }
+ echo "</select>";
+
+ echo "</td></tr>";
+ echo "</table>";
+ // end visibility section
+
+
+ echo "</td><td bgcolor=\"#eeffee\">";
+ // Read/clone/pull section
+ $readin[0] = 0;
+ echo "<table>";
+ echo "<tr><td>Allowed</td><td></td><td>All</td></tr>";
+ echo "<tr><td>";
+ // list allowed users
+ echo "<select name=\"readmembersin[]\" size=\"20\" multiple=\"true\">";
+ foreach($repoperms as $v_perms) {
+ if($v_perms["type"] == "read") {
+ $who = $v_perms["ref"]; // now we need to disemble ref
+ $pid = $v_perms["id"];
+ $refid = gwvp_DisemableRefId($who);
+
+ $readin[$who] = true;
+
+ echo "<option value=\"$pid\">$refid</option>";
+ }
+ }
+
+ echo "</select>";
+
+ echo "</td><td>";
+ // buttons
+ echo "<input type=\"submit\" name=\"readadd\" value=\"<<\"><br>";
+ echo "<input type=\"submit\" name=\"readremove\" value=\">>\"><br>";
+
+ echo "</td><td>";
+ // list all users/groups/specials
+ echo "<select name=\"readmembersout[]\" size=\"20\" multiple=\"true\">";
+ if(!isset($readin["anon"])) echo "<option value=\"anon\">Everyone</option>";
+ if(!isset($readin["authed"])) echo "<option value=\"authed\">All Authenticated User</option>";
+ foreach($groups as $u_groups) {
+ $gname = $u_groups["name"];
+ $gid = $u_groups["id"];
+ if(!gwvp_IsGroupAdmin(null, $gid)) if(!isset($readin["group:$gid"])) echo "<option value=\"group:$gid\">Group: $gname</option>";
+ }
+ foreach($users as $u_users) {
+ $uid = $u_users["id"];
+ $email = $u_users["email"];
+ $username = $u_users["username"];
+ $fullname = $u_users["fullname"];
+ if(!gwvp_IsUserAdmin(null, null, $uid)) if(!isset($readin["user:$uid"])) echo "<option value=\"user:$uid\">User: $username</option>";
+ }
+ echo "</select>";
+
+ echo "</td></tr>";
+ echo "</table>";
+ // end read/clone/pull section
+
+
+ echo "</td><td bgcolor=\"#ffeeee\">";
+ // write/push section
+ $writein[0] = 0;
+ echo "<table>";
+ echo "<tr><td>Allowed</td><td></td><td>All</td></tr>";
+ echo "<tr><td>";
+ // list allowed users
+ echo "<select name=\"writemembersin[]\" size=\"20\" multiple=\"true\">";
+ foreach($repoperms as $v_perms) {
+ if($v_perms["type"] == "write") {
+ $who = $v_perms["ref"]; // now we need to disemble ref
+ $pid = $v_perms["id"];
+ $refid = gwvp_DisemableRefId($who);
+
+ $writein[$who] = true;
+
+ echo "<option value=\"$pid\">$refid</option>";
+ }
+ }
+
+ echo "</select>";
+
+ echo "</td><td>";
+ // buttons
+ echo "<input type=\"submit\" name=\"writeadd\" value=\"<<\"><br>";
+ echo "<input type=\"submit\" name=\"writeremove\" value=\">>\"><br>";
+
+ echo "</td><td>";
+ // list all users/groups/specials
+ echo "<select name=\"writemembersout[]\" size=\"20\" multiple=\"true\">";
+ if(!isset($writein["anon"])) echo "<option value=\"anon\">Everyone</option>";
+ if(!isset($writein["authed"])) echo "<option value=\"authed\">All Authenticated User</option>";
+ foreach($groups as $u_groups) {
+ $gname = $u_groups["name"];
+ $gid = $u_groups["id"];
+ if(!gwvp_IsGroupAdmin(null, $gid)) if(!isset($writein["group:$gid"])) echo "<option value=\"group:$gid\">Group: $gname</option>";
+ }
+ foreach($users as $u_users) {
+ $uid = $u_users["id"];
+ $email = $u_users["email"];
+ $username = $u_users["username"];
+ $fullname = $u_users["fullname"];
+ if(!gwvp_IsUserAdmin(null, null, $uid)) if(!isset($writein["user:$uid"])) echo "<option value=\"user:$uid\">User: $username</option>";
+ }
+ echo "</select>";
+
+ echo "</td></tr>";
+ echo "</table>";
+ // end write/push section
+
+ echo "</td></tr>";
+
+ echo "</table>";
+ echo "</form>";
+}
?>
\ No newline at end of file