X-Git-Url: http://git.pjr.cc/?p=gwvp.git;a=blobdiff_plain;f=gwvplib%2Fgwvprepoadmin.php;h=cb533bfaeb67457fefae8068786fb6fe483fa307;hp=106ff4b94aa56bc0b371b145513f823d353c165a;hb=4f4bf1da18181d412cd755143e016ede587cc1d6;hpb=c1987fad28f920a3a90943c8cae1dbdf267e5454 diff --git a/gwvplib/gwvprepoadmin.php b/gwvplib/gwvprepoadmin.php index 106ff4b..cb533bf 100644 --- a/gwvplib/gwvprepoadmin.php +++ b/gwvplib/gwvprepoadmin.php @@ -6,11 +6,14 @@ $MENU_ITEMS["20repos"]["link"] = "$BASE_URL/admin/repos"; function gwvp_RepoAdminCallMe() { + + error_log("in repoadmin callme"); if(isset($_REQUEST["q"])) { $query = $_REQUEST["q"]; $qspl = explode("/", $query); if(isset($qspl[0]) && isset($qspl[1])) { if($qspl[0] == "admin" && $qspl[1] == "repos") { + error_log("i got here, where next?"); if(isset($qspl[2])) { switch($qspl[2]) { case "create": @@ -19,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"; } @@ -33,6 +45,11 @@ function gwvp_RepoAdminCallMe() return false; } +function gwvp_ManageRepoPage() +{ + gwvp_goMainPage("gwvp_ManageRepoPageBody"); +} + function gwvp_RepoAdminPage() { gwvp_goMainPage("gwvp_RepoAdminPageBody"); @@ -43,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; @@ -50,20 +144,47 @@ 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(gwvp_createGitRepo($reponame)) { + //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"]); + // 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, $_SESSION["id"], $repodesc, null, $defperms)) { gwvp_SendMessage("info", "Repo, $reponame, created"); - header("Location: $BASE_URL/admin/repos"); } + header("Location: $BASE_URL/admin/repos"); } function gwvp_CreateRepoPageBody() { - global $BASE_URL, $repo_base; + global $BASE_URL; + + $repo_base = gwvp_getConfigVal("repodir"); $reponameobv = ""; $repodescobv = ""; @@ -72,12 +193,30 @@ function gwvp_CreateRepoPageBody() if(isset($_REQUEST["repodescobv"])) $repodescobv = $_REQUEST["repodescobv"]; echo "

Create a Repo

"; - echo "
"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + echo ""; + + echo "
Repository Name
Repository Description
Repository BundleCreate a bundle for pro-creating the git repository (export your git bundle with \"git bundle create /tmp/filename --branches\")
"; + echo "Typically you wouldn't use this as its easier to \"push\" to the repo after its created by adding it as a remote and pushing your local master branch
Default Permisison Set"; + echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; echo "
Repository Name
Repository Description
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
"; - + + + echo "
Permissions can be changed in repository management later
"; + + + + + echo "
"; echo "
"; } @@ -90,23 +229,301 @@ function gwvp_RepoAdminPageBody() echo "

Repo Management

"; echo "Create a Repo
"; + if(isset($_SESSION["isloggedin"])) { + echo "

Your Repo's

"; + $ownreps = gwvp_getOwnedRepos($_SESSION["id"]); + if($ownreps != false) { + echo ""; + echo ""; + foreach($ownreps as $repos) { + $mjay = print_r($repos, true); + error_log("snafu: $mjay"); + $reponame = $repos["name"]; + $repodesc = $repos["description"]; + $rid = $repos["id"]; + echo ""; + } + echo "
Repo NameRepo description
$reponame$repodescManage
"; + } else { + echo "You own no repositories"; + } + echo "
"; + } + // 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 ""; foreach($rlist as $u_res) { + $rid = $u_res["id"]; $rname = $u_res["name"]; $rdesc = $u_res["description"]; - $rown = $u_res["owner"]; - echo ""; + $rown = gwvp_getUserName($u_res["owner"]); + $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$rown
$rname$rdesc$rown$manordets
"; return; } +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