X-Git-Url: http://git.pjr.cc/?p=gwvp.git;a=blobdiff_plain;f=gwvplib%2Fgwvprepoadmin.php;h=cb533bfaeb67457fefae8068786fb6fe483fa307;hp=07bab8eafb84f1206262eb5b56f93ce16ef21c16;hb=4f4bf1da18181d412cd755143e016ede587cc1d6;hpb=fd4cf08e3ec4b127996696c2c11062f676dc39c5
diff --git a/gwvplib/gwvprepoadmin.php b/gwvplib/gwvprepoadmin.php
index 07bab8e..cb533bf 100644
--- a/gwvplib/gwvprepoadmin.php
+++ b/gwvplib/gwvprepoadmin.php
@@ -22,6 +22,15 @@ function gwvp_RepoAdminCallMe()
case "docreate":
return "gwvp_DoCreateRepoPage";
break;
+ case "manage":
+ return "gwvp_ManageRepoPage";
+ break;
+ case "updateperms":
+ return "gwvp_UpdateRepoPerms";
+ break;
+ case "details":
+ return "gwvp_RepoDetailsPage";
+ break;
default:
return "gwvp_RepoAdminPage";
}
@@ -36,6 +45,11 @@ function gwvp_RepoAdminCallMe()
return false;
}
+function gwvp_ManageRepoPage()
+{
+ gwvp_goMainPage("gwvp_ManageRepoPageBody");
+}
+
function gwvp_RepoAdminPage()
{
gwvp_goMainPage("gwvp_RepoAdminPageBody");
@@ -46,6 +60,83 @@ function gwvp_CreateRepoPage()
gwvp_goMainPage("gwvp_CreateRepoPageBody");
}
+function gwvp_RepoDetailsPage()
+{
+ gwvp_goMainPage("gwvp_RepoDetailsPageBody");
+}
+
+function gwvp_RepoDetailsPageBody()
+{
+ echo "I am a repo details page";
+}
+
+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;
@@ -53,15 +144,35 @@ function gwvp_DoCreateRepoPage()
$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 \"$reponame\" 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");
@@ -71,7 +182,9 @@ function gwvp_DoCreateRepoPage()
function gwvp_CreateRepoPageBody()
{
- global $BASE_URL, $repo_base;
+ global $BASE_URL;
+
+ $repo_base = gwvp_getConfigVal("repodir");
$reponameobv = "";
$repodescobv = "";
@@ -90,9 +203,9 @@ function gwvp_CreateRepoPageBody()
echo "
Default Permisison Set | ";
echo "";
@@ -120,13 +233,15 @@ function gwvp_RepoAdminPageBody()
echo "Your Repo's";
$ownreps = gwvp_getOwnedRepos($_SESSION["id"]);
if($ownreps != false) {
- echo "";
- echo "Repo Name | ";
+ echo "";
+ echo "Repo Name | Repo description | ";
foreach($ownreps as $repos) {
$mjay = print_r($repos, true);
error_log("snafu: $mjay");
$reponame = $repos["name"];
- echo "$reponame | ";
+ $repodesc = $repos["description"];
+ $rid = $repos["id"];
+ echo "$reponame | $repodesc | Manage | ";
}
echo " ";
} else {
@@ -139,26 +254,276 @@ function gwvp_RepoAdminPageBody()
// next we need a repo list - with perms checking - ug
// 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
+ echo "All Repositories";
$rlist = gwvp_GetRepoList();
- echo "Repo Name | Repo Description | Repo Owner | Control | ";
+ echo "Repo Name | Repo Description | Repo Owner | ";
foreach($rlist as $u_res) {
$rid = $u_res["id"];
$rname = $u_res["name"];
$rdesc = $u_res["description"];
$rown = gwvp_getUserName($u_res["owner"]);
- echo "$rname | $rdesc | $rown | Modify | ";
+ $manordetslink = "details";
+ $manordets = "Details";
+ if(isset($_SESSION["id"])) {
+ if(gwvp_resolvRepoPerms($_SESSION["id"], $rid)>3) {
+ $manordetslink = "manage";
+ $manordets = "Manage";
+ }
+ }
+ echo "$rname | $rdesc | $rown | $manordets | ";
}
echo " ";
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 "Repository Management";
+ echo "$owndby's Repository $reponame ";
+
+ echo "";
+
+
+ echo "Repository Permissions";
+ echo "";
+}
?>
\ No newline at end of file
|