X-Git-Url: http://git.pjr.cc/?a=blobdiff_plain;f=gwvpmini%2Fgwvpmini_view.php;h=642a9bc4beebd06fc131b1b513d244d6efd5e2f8;hb=c6ae91bb2641911a7bf9b0ee8e3b6da182de0b79;hp=96ee359dfe7b4e9f91b5768700d842c9f0c66846;hpb=abfd6ab968291688d09edfbefb38c88f1a33c919;p=gwvp-mini.git diff --git a/gwvpmini/gwvpmini_view.php b/gwvpmini/gwvpmini_view.php index 96ee359..642a9bc 100644 --- a/gwvpmini/gwvpmini_view.php +++ b/gwvpmini/gwvpmini_view.php @@ -10,7 +10,7 @@ function gwvpmini_RepoViewCallMe() { global $repo_view_call; - error_log("in admin callme"); + // error_log("in admin callme"); if(isset($_REQUEST["q"])) { $query = $_REQUEST["q"]; $qspl = explode("/", $query); @@ -20,7 +20,26 @@ function gwvpmini_RepoViewCallMe() $repo_view_call = $qspl[1]; return "gwvpmini_RepoViewPage"; } else return false; - } else return false; + } + if($qspl[0] == "updaterepobaseperms") { + return "gwvpmini_UpdateRepoBasePerms"; + } + if($qspl[0] == "repoaddreader") { + return "gwvpmini_AddRepoReader"; + } + if($qspl[0] == "repoaddcontrib") { + return "gwvpmini_AddRepoContributor"; + } + if($qspl[0] == "reporemovereaders") { + return "gwvpmini_RemoveRepoReader"; + } + if($qspl[0] == "reporemovecontribs") { + return "gwvpmini_RemoveRepoContributor"; + } + if($qspl[0] == "repoupdatedesc") { + return "gwvpmini_RepoUpdateDescription"; + } + return false; } else return false; } @@ -46,13 +65,121 @@ function gwvpmini_RepoViewPageBody() $repo_base = gwvpmini_getConfigVal("repodir"); + $bperms_f = gwvpmini_GetRepoPerms(gwvpmini_GetRepoId($repo_view_call)); + $bperms = $bperms_f["b"]; + + $owner_view = false; + if($_SERVER["SERVER_PORT"] == 443) $proto="https://"; else $proto = "http://"; $sname = $_SERVER["SERVER_NAME"]; - echo "

$repo_view_call by owner

"; - echo "Desc
"; - echo "
"; + $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call); + $desc = gwvpmini_GetRepoDescFromName($repo_view_call); + $editdesc = preg_replace("/\/", "\n", $desc); + + $rid = gwvpmini_GetRepoId($repo_view_call); + + $owner_name = $owner["username"]; + + // TODO: fix this so that if user has no read access to repo, they cant see it + if(isset($_SESSION["id"])) { + if($owner["id"] == $_SESSION["id"]) { + $owner_view = true; + } else if ($bperms != "r") { + // check user level perms + $perm = gwvpmini_GetRepoPerm($rid, $_SESSION["id"]); + if($perm < 1) { + header("Location: $BASE_URL"); + return; + } + } + } else { + if($bperms != "a") { + header("Location: $BASE_URL"); + return; + } + } + + + // error_log("STUFF:".print_r($owner,true)); + if($bperms != "a") $login = $_SESSION["username"].":password@"; + else $login = ""; + $cloneurl = "git clone $proto$login$sname$BASE_URL/git/$repo_view_call.git"; + echo "
"; + + if($owner_view) $owner_extra = " (YOU)"; + else $owner_extra = ""; + + echo "

".gwvpmini_HtmlGravatar($owner["email"], 30)."$repo_view_call - $owner_name$owner_extra

"; + if(!$owner_view) echo "$desc
"; + + if($owner_view) { + echo "
"; + echo "

Description


"; + echo "
"; + + + + + $anyo = ""; + $regd = ""; + $expl = ""; + if($bperms == "a") $anyo = " selected"; + if($bperms == "r") $regd = " selected"; + if($bperms == "x") $expl = " selected"; + + // error_log("BPERMS: $bperms"); + + if($bperms == "x") $cspan = 3; + else $cspan = 2; + + echo "
Permissions
"; + echo "
"; + echo ""; + echo ""; + echo "
"; + if($bperms == "x") { + echo "
Readers
"; + echo "
"; + $nl = 0; + foreach($bperms_f as $key=>$val) { + if($val == 1) { + $dets = gwvpmini_getUser(null, null, $key); + echo gwvpmini_HtmlGravatar($dets["email"], 18, " ")." ".$dets["username"]."
"; + $nl = 1; + } + } + if($nl==1) echo ""; + echo "
"; + echo "
"; + echo " "; + echo "

"; + } + + echo "
Contributors
"; + echo "
"; + $nl = 0; + foreach($bperms_f as $key=>$val) { + if($val == 2) { + $dets = gwvpmini_getUser(null, null, $key); + echo gwvpmini_HtmlGravatar($dets["email"], 18, " ")." ".$dets["username"]."
"; + $nl = 1; + } + } + if($nl==1) echo ""; + echo "
"; + + echo "
"; + echo " "; + echo "

"; + echo "
"; + + } //echo "command: git log --git-dir=$repo_base/$repo_view_call.git --pretty=format:\"%H\" -10"; $rs = popen("git --git-dir=$repo_base/$repo_view_call.git log --pretty=format:\"%H\" -10", "r"); $commitids = array(); @@ -67,7 +194,6 @@ function gwvpmini_RepoViewPageBody() } fclose($rs); } else { - echo "No commit logs yet
"; $commitids = false; } @@ -76,20 +202,351 @@ function gwvpmini_RepoViewPageBody() echo ""; echo ""; foreach($commitids as $ids) { - $rs = popen("git --git-dir=$repo_base/$repo_view_call.git log --pretty=format:\"%at%n%ce%n%s\" $ids -1", "r"); + $rs = popen("git --git-dir=$repo_base/$repo_view_call.git log --pretty=format:\"%at%n%ce%n%an%n%s\" $ids -1 2> /dev/null", "r"); if($rs) { $flin1 = trim(fgets($rs)); - $flin2 = gwvpmini_emailToUserLink(trim(fgets($rs))); + $flin2 = trim(fgets($rs)); + $flin3 = trim(fgets($rs)); while(!feof($rs)) { - $flin3 = fread($rs, 8192); + $flin4 = fread($rs, 8192); + } + $flon = gwvpmini_emailToUserLink($flin2); + if(!$flon) { + $flon = "$flin3 (external)"; } } - echo ""; + echo ""; } echo "
Committed ByDateCommit Log Entry
$flin2$flin1$flin3
".gwvpmini_HtmlGravatar($flin2, 18)."$flon$flin1$flin4
"; + } else { + echo "No commit information available yet
"; + } +} + +function gwvpmini_UpdateRepoBasePerms() +{ + global $BASE_URL, $repo_view_call; + + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + // error_log("PLOOP:qview".print_r($qspl, true)); + } + + if(isset($qspl[1])) $repo_view_call = $qspl[1]; + else { + // error_log("PLOOP: no repo name"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $newperms = $_REQUEST["base_perms"]; + + $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call); + $desc = gwvpmini_GetRepoDescFromName($repo_view_call); + + $owner_name = $owner["username"]; + + $owner_view = false; + if(isset($_SESSION["id"])) { + if($owner["id"] == $_SESSION["id"]) { + $owner_view = true; + } } + $rid = gwvpmini_GetRepoId($repo_view_call); + + if(!$owner_view) { + gwvpmini_SendMessage("error", "failure updating permission for repo"); + // error_log("PLOOP: attempt to update from non-owner"); + } else { + // error_log("PLOOP: updateds: ".print_r($_REQUEST, true)); + gwvpmini_ChangeRepoPerm($rid, "b", $_REQUEST["base_perms"]); + gwvpmini_SendMessage("info", "Base permissions for repo updated"); + } + + header("Location: $BASE_URL/view/$repo_view_call"); } + +function gwvpmini_AddRepoReader() +{ + global $BASE_URL, $repo_view_call; + + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + // error_log("PLOOP:qview".print_r($qspl, true)); + } + + if(isset($qspl[1])) $repo_view_call = $qspl[1]; + else { + // error_log("PLOOP: no repo name"); + // TODO: btw, this makes no sense + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $newperms = $_REQUEST["base_perms"]; + + $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call); + $desc = gwvpmini_GetRepoDescFromName($repo_view_call); + + $owner_name = $owner["username"]; + + $owner_view = false; + if(isset($_SESSION["id"])) { + if($owner["id"] == $_SESSION["id"]) { + $owner_view = true; + } + } + if(!$owner_view) { + gwvpmini_SendMessage("error", "failure updating permission for repo"); + // error_log("PLOOP: attempt to update from non-owner"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $auid = gwvpmini_GetUserId($_REQUEST["readerusername"]); + + if($auid == $_SESSION["id"]) { + gwvpmini_SendMessage("error", "You cannot add yourself as a reader as you already own the repo"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + if($auid > 0) { + $rid = gwvpmini_GetRepoId($repo_view_call); + + gwvpmini_ChangeRepoPerm($rid, $auid, 1); + gwvpmini_SendMessage("info", "Added user ".$_REQUEST["readerusername"]." as a reader"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } else { + gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["readerusername"]); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + +} + +function gwvpmini_AddRepoContributor() +{ + global $BASE_URL, $repo_view_call; + + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + // error_log("PLOOP:qview".print_r($qspl, true)); + } + + if(isset($qspl[1])) $repo_view_call = $qspl[1]; + else { + // error_log("PLOOP: no repo name"); + // TODO: btw, this makes no sense + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $newperms = $_REQUEST["base_perms"]; + + $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call); + $desc = gwvpmini_GetRepoDescFromName($repo_view_call); + + $owner_name = $owner["username"]; + + $owner_view = false; + if(isset($_SESSION["id"])) { + if($owner["id"] == $_SESSION["id"]) { + $owner_view = true; + } + } + if(!$owner_view) { + gwvpmini_SendMessage("error", "failure updating permission for repo"); + // error_log("PLOOP: attempt to update from non-owner"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $auid = gwvpmini_GetUserId($_REQUEST["contribusername"]); + + if($auid == $_SESSION["id"]) { + gwvpmini_SendMessage("error", "You cannot add yourself as a contributor as you already own the repo"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + if($auid > 0) { + $rid = gwvpmini_GetRepoId($repo_view_call); + + gwvpmini_ChangeRepoPerm($rid, $auid, 2); + gwvpmini_SendMessage("info", "Added user ".$_REQUEST["contribusername"]." as a contributor"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } else { + gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["contribusername"]); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } +} + +function gwvpmini_RemoveRepoContributor() +{ + + global $BASE_URL, $repo_view_call; + + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + // error_log("PLOOP:qview".print_r($qspl, true)); + } + + if(isset($qspl[1])) $repo_view_call = $qspl[1]; + else { + // error_log("PLOOP: no repo name"); + // TODO: btw, this makes no sense + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + + $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call); + $desc = gwvpmini_GetRepoDescFromName($repo_view_call); + + $owner_name = $owner["username"]; + + $owner_view = false; + if(isset($_SESSION["id"])) { + if($owner["id"] == $_SESSION["id"]) { + $owner_view = true; + } + } + if(!$owner_view) { + gwvpmini_SendMessage("error", "failure updating permission for repo"); + // error_log("PLOOP: attempt to update from non-owner"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $rid = gwvpmini_GetRepoId($repo_view_call); + + $bperms_f = gwvpmini_GetRepoPerms($rid); + + foreach($bperms_f as $key=>$val) { + if($val == 2) { + if(isset($_REQUEST["$key"])) { + gwvpmini_ChangeRepoPerm($rid, $key, 0); + } + } + } + + gwvpmini_SendMessage("info", "Repo permissions updated"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + +} + + +function gwvpmini_RemoveRepoReader() +{ + global $BASE_URL, $repo_view_call; + + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + // error_log("PLOOP:qview".print_r($qspl, true)); + } + + if(isset($qspl[1])) $repo_view_call = $qspl[1]; + else { + // error_log("PLOOP: no repo name"); + // TODO: btw, this makes no sense + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + + $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call); + $desc = gwvpmini_GetRepoDescFromName($repo_view_call); + + $owner_name = $owner["username"]; + + $owner_view = false; + if(isset($_SESSION["id"])) { + if($owner["id"] == $_SESSION["id"]) { + $owner_view = true; + } + } + if(!$owner_view) { + gwvpmini_SendMessage("error", "failure updating permission for repo"); + // error_log("PLOOP: attempt to update from non-owner"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $rid = gwvpmini_GetRepoId($repo_view_call); + + $bperms_f = gwvpmini_GetRepoPerms($rid); + + foreach($bperms_f as $key=>$val) { + if($val == 1) { + if(isset($_REQUEST["$key"])) { + gwvpmini_ChangeRepoPerm($rid, $key, 0); + } + } + } + + gwvpmini_SendMessage("info", "Repo permissions updated"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + +} + +function gwvpmini_RepoUpdateDescription() +{ + global $BASE_URL, $repo_view_call; + + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + // error_log("PLOOP:qview".print_r($qspl, true)); + } + + if(isset($qspl[1])) $repo_view_call = $qspl[1]; + else { + // error_log("PLOOP: no repo name"); + // TODO: btw, this makes no sense + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + + $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call); + $desc = gwvpmini_GetRepoDescFromName($repo_view_call); + + $owner_name = $owner["username"]; + + $owner_view = false; + if(isset($_SESSION["id"])) { + if($owner["id"] == $_SESSION["id"]) { + $owner_view = true; + } + } + if(!$owner_view) { + gwvpmini_SendMessage("error", "failure updating description for repo"); + // error_log("PLOOP: attempt to update from non-owner"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; + } + + $rid = gwvpmini_GetRepoId($repo_view_call); + + gwvpmini_UpdateRepoDescription($rid, $_REQUEST["desc"]); + + gwvpmini_SendMessage("info", "Repo description updated"); + header("Location: $BASE_URL/view/$repo_view_call"); + return; +} ?> \ No newline at end of file