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 ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; echo "
Anyone Can Read, Only you can write
Anyone can see the repository exists, but only you can read or write to it
Repository only visible to you
Anyone Can Read, Only you can write
Anyone can see the repository exists, but only you can read or write to it
Repository only visible to you
"; @@ -120,13 +233,15 @@ function gwvp_RepoAdminPageBody() echo "

Your Repo's

"; $ownreps = gwvp_getOwnedRepos($_SESSION["id"]); if($ownreps != false) { - echo ""; - echo ""; + echo "
Repo Name
"; + echo ""; foreach($ownreps as $repos) { $mjay = print_r($repos, true); error_log("snafu: $mjay"); $reponame = $repos["name"]; - echo ""; + $repodesc = $repos["description"]; + $rid = $repos["id"]; + echo ""; } echo "
Repo NameRepo description
$reponame
$reponame$repodescManage
"; } 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 ""; + echo "
Repo NameRepo DescriptionRepo OwnerControl
"; foreach($rlist as $u_res) { $rid = $u_res["id"]; $rname = $u_res["name"]; $rdesc = $u_res["description"]; $rown = gwvp_getUserName($u_res["owner"]); - echo ""; + $manordetslink = "details"; + $manordets = "Details"; + if(isset($_SESSION["id"])) { + if(gwvp_resolvRepoPerms($_SESSION["id"], $rid)>3) { + $manordetslink = "manage"; + $manordets = "Manage"; + } + } + echo ""; } echo "
Repo NameRepo DescriptionRepo Owner
$rname$rdesc$rownModify
$rname$rdesc$rown$manordets
"; 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 ""; + echo ""; + echo "
Description
"; + echo "
"; + echo "
"; + + + echo "

Repository Permissions

"; + echo "
"; + echo ""; + echo ""; + echo ""; + + echo "
VisibilityRead/CloneWrite/Push
"; + + + + + // visibility section + $visin[0] = 0; + echo ""; + echo ""; + echo ""; + echo "
AllowedAll
"; + // list allowed users + echo ""; + + echo ""; + // buttons + echo "
"; + echo ">\">
"; + + echo "
"; + // list all users/groups/specials + $noutvis = 0; + echo ""; + + echo "
"; + // end visibility section + + + echo "
"; + // Read/clone/pull section + $readin[0] = 0; + echo ""; + echo ""; + echo ""; + echo "
AllowedAll
"; + // list allowed users + echo ""; + + echo ""; + // buttons + echo "
"; + echo ">\">
"; + + echo "
"; + // list all users/groups/specials + echo ""; + + echo "
"; + // end read/clone/pull section + + + echo "
"; + // write/push section + $writein[0] = 0; + echo ""; + echo ""; + echo ""; + echo "
AllowedAll
"; + // list allowed users + echo ""; + + echo ""; + // buttons + echo "
"; + echo ">\">
"; + + echo "
"; + // list all users/groups/specials + echo ""; + + echo "
"; + // end write/push section + + echo "
"; + echo "
"; +} ?> \ No newline at end of file