X-Git-Url: http://git.pjr.cc/?p=gwvp.git;a=blobdiff_plain;f=gwvplib%2Fgwvprepoadmin.php;h=cb533bfaeb67457fefae8068786fb6fe483fa307;hp=49073c07dfb6409ad5dc9db34973b91a53fc3ce5;hb=942b821d861aba1da43ef6c999141853e9f8b3a8;hpb=4c20cd2f33699e549a06995d9c5ab1374cceeaee diff --git a/gwvplib/gwvprepoadmin.php b/gwvplib/gwvprepoadmin.php index 49073c0..cb533bf 100644 --- a/gwvplib/gwvprepoadmin.php +++ b/gwvplib/gwvprepoadmin.php @@ -6,24 +6,524 @@ $MENU_ITEMS["20repos"]["link"] = "$BASE_URL/admin/repos"; function gwvp_RepoAdminCallMe() { + + error_log("in repoadmin callme"); if(isset($_REQUEST["q"])) { $query = $_REQUEST["q"]; - if($query == "admin/repos") return "gwvp_RepoAdminPage"; + $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": + return "gwvp_CreateRepoPage"; + break; + 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"; + } + } else { + return "gwvp_RepoAdminPage"; + } + } + } else return false; } return false; } +function gwvp_ManageRepoPage() +{ + gwvp_goMainPage("gwvp_ManageRepoPageBody"); +} + function gwvp_RepoAdminPage() { gwvp_goMainPage("gwvp_RepoAdminPageBody"); } +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; + + $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"]); + // 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"); + + +} + +function gwvp_CreateRepoPageBody() +{ + global $BASE_URL; + + $repo_base = gwvp_getConfigVal("repodir"); + + $reponameobv = ""; + $repodescobv = ""; + + if(isset($_REQUEST["reponameobv"])) $reponameobv = $_REQUEST["reponameobv"]; + if(isset($_REQUEST["repodescobv"])) $repodescobv = $_REQUEST["repodescobv"]; + + echo "

Create a Repo

"; + 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 "
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 "
"; +} function gwvp_RepoAdminPageBody() { - echo "I am a repo admin page body"; + // first we need a menu + global $BASE_URL; + + 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 = 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$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