X-Git-Url: http://git.pjr.cc/?a=blobdiff_plain;f=gwvpmini%2Fgwvpmini_view.php;h=642a9bc4beebd06fc131b1b513d244d6efd5e2f8;hb=eaa989c5b3d6534276be3c32e089d4ec2b45e395;hp=36b310c7e8022fd74710c02a2f8497ba6cd5d953;hpb=662bbd47c5883a08db0487c748ca6ae3706376ed;p=gwvp-mini.git diff --git a/gwvpmini/gwvpmini_view.php b/gwvpmini/gwvpmini_view.php index 36b310c..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,21 +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"]; $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"]; - error_log("STUFF:".print_r($owner,true)); - $cloneurl = "git clone $proto$sname$BASE_URL/git/$repo_view_call.git"; - echo "
"; + // 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; + } + } + - echo "

".get_gravatar($owner["email"], 30, 'mm', 'g', true)."$repo_view_call - $owner_name

"; - echo "$desc
"; + // 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(); @@ -83,7 +202,7 @@ 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%an%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 = trim(fgets($rs)); @@ -96,13 +215,338 @@ function gwvpmini_RepoViewPageBody() $flon = "$flin3 (external)"; } } - echo ""; + echo ""; } echo "
Committed ByDateCommit Log Entry
".get_gravatar($flin2, 18, 'mm', 'g', true)."$flon$flin1$flin4
".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