2 global $HOME_PAGE_PROVIDERS;
5 $CALL_ME_FUNCTIONS["repoview"] = "gwvpmini_RepoViewCallMe";
9 function gwvpmini_RepoViewCallMe()
11 global $repo_view_call;
13 error_log("in admin callme");
\r
14 if(isset($_REQUEST["q"])) {
\r
15 $query = $_REQUEST["q"];
\r
16 $qspl = explode("/", $query);
\r
17 if(isset($qspl[0])) {
\r
18 if($qspl[0] == "view") {
\r
20 $repo_view_call = $qspl[1];
21 return "gwvpmini_RepoViewPage";
\r
22 } else return false;
\r
24 if($qspl[0] == "updaterepobaseperms") {
25 return "gwvpmini_UpdateRepoBasePerms";
27 if($qspl[0] == "repoaddreader") {
28 return "gwvpmini_AddRepoReader";
30 if($qspl[0] == "repoaddcontrib") {
31 return "gwvpmini_AddRepoContributor";
33 if($qspl[0] == "reporemovereaders") {
34 return "gwvpmini_RemoveRepoReader";
36 if($qspl[0] == "reporemovecontribs") {
37 return "gwvpmini_RemoveRepoContributor";
39 if($qspl[0] == "repoupdatedesc") {
40 return "gwvpmini_RepoUpdateDescription";
52 function gwvpmini_RepoViewPage()
\r
54 global $repo_view_call, $MENU_ITEMS, $BASE_URL;
\r
56 $MENU_ITEMS["40thisrepo"]["text"] = "$repo_view_call";
\r
57 $MENU_ITEMS["40thisrepo"]["link"] = "$BASE_URL/view/$repo_view_call";
\r
59 gwvpmini_goMainPage("gwvpmini_RepoViewPageBody");
\r
62 function gwvpmini_RepoViewPageBody()
64 global $repo_view_call, $MENU_ITEMS, $BASE_URL;
66 $repo_base = gwvpmini_getConfigVal("repodir");
\r
68 $bperms_f = gwvpmini_GetRepoPerms(gwvpmini_GetRepoId($repo_view_call));
69 $bperms = $bperms_f["b"];
71 $owner_view = false;
\r
73 if($_SERVER["SERVER_PORT"] == 443) $proto="https://";
74 else $proto = "http://";
75 $sname = $_SERVER["SERVER_NAME"];
77 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
78 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
79 $editdesc = preg_replace("/\<br\>/", "\n", $desc);
81 $rid = gwvpmini_GetRepoId($repo_view_call);
83 $owner_name = $owner["username"];
85 // TODO: fix this so that if user has no read access to repo, they cant see it
86 if(isset($_SESSION["id"])) {
87 if($owner["id"] == $_SESSION["id"]) {
89 } else if ($bperms != "r") {
90 // check user level perms
91 $perm = gwvpmini_GetRepoPerm($rid, $_SESSION["id"]);
93 header("Location: $BASE_URL");
\r
99 header("Location: $BASE_URL");
105 error_log("STUFF:".print_r($owner,true));
106 if($bperms != "a") $login = $_SESSION["username"].":password@";
108 $cloneurl = "git clone $proto$login$sname$BASE_URL/git/$repo_view_call.git";
109 echo "<textarea rows=1 cols=".strlen($cloneurl).">$cloneurl</textarea><br>";
111 if($owner_view) $owner_extra = " (YOU)";
112 else $owner_extra = "";
\r
114 echo "<h2>".gwvpmini_HtmlGravatar($owner["email"], 30)."$repo_view_call - $owner_name$owner_extra</h2>";
115 if(!$owner_view) echo "<b>$desc</b><br>";
118 echo "<form method=\"post\" action=\"$BASE_URL/repoupdatedesc/$repo_view_call\">";
\r
119 echo "<h3>Description<h3><textarea name=\"desc\" cols=\"120\" rows=\"5\">$editdesc</textarea><br><input type=\"submit\" name=\"Update\" value=\"Update\">";
\r
120 echo "</form><br>";
\r
128 if($bperms == "a") $anyo = " selected";
\r
129 if($bperms == "r") $regd = " selected";
\r
130 if($bperms == "x") $expl = " selected";
\r
132 error_log("BPERMS: $bperms");
134 if($bperms == "x") $cspan = 3;
137 echo "<table border=\"1\"><tr valign=\"top\"><tr><th colspan=\"$cspan\">Permissions</th></tr><td>";
138 echo "<form method=\"post\" action=\"$BASE_URL/updaterepobaseperms/$repo_view_call\">";
139 echo "<select name=\"base_perms\">";
140 echo "<option value=\"a\"$anyo>Anyone can read</option>";
141 echo "<option value=\"r\"$regd>Only registered users can read</option>";
142 echo "<option value=\"x\"$expl>Explicit read permissions</option>";
144 echo "<input type=\"submit\" name=\"Set\" value=\"Set\">";
147 echo "</td><td><b>Readers</b><br>";
148 echo "<form method=\"post\" action=\"$BASE_URL/reporemovereaders/$repo_view_call\">";
150 foreach($bperms_f as $key=>$val) {
152 $dets = gwvpmini_getUser(null, null, $key);
153 echo gwvpmini_HtmlGravatar($dets["email"], 18, " ")."<input type=\"checkbox\" name=\"$key\"> ".$dets["username"]."<br>";
157 if($nl==1) echo "<input type=\"submit\" name=\"remove\" value=\"Remove Selected\">";
159 echo "<form method=\"post\" action=\"$BASE_URL/repoaddreader/$repo_view_call\">";
160 echo "<input type=\"text\" name=\"readerusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
164 echo "</td><td><b>Contributors</b><br>";
165 echo "<form method=\"post\" action=\"$BASE_URL/reporemovecontribs/$repo_view_call\">";
167 foreach($bperms_f as $key=>$val) {
\r
169 $dets = gwvpmini_getUser(null, null, $key);
\r
170 echo gwvpmini_HtmlGravatar($dets["email"], 18, " ")."<input type=\"checkbox\" name=\"$key\"> ".$dets["username"]."<br>";
174 if($nl==1) echo "<input type=\"submit\" name=\"remove\" value=\"Remove Selected\">";
\r
177 echo "<form method=\"post\" action=\"$BASE_URL/repoaddcontrib/$repo_view_call\">";
178 echo "<input type=\"text\" name=\"contribusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
180 echo "</td></tr></table>";
183 //echo "command: git log --git-dir=$repo_base/$repo_view_call.git --pretty=format:\"%H\" -10";
184 $rs = popen("git --git-dir=$repo_base/$repo_view_call.git log --pretty=format:\"%H\" -10", "r");
185 $commitids = array();
190 if($flin !== false) {
191 $commitids[$i] = trim($flin);
200 if($commitids != false) {
201 echo "<hr>Commits<br>";
202 echo "<table border=\"1\">";
203 echo "<tr><th>Committed By</th><th>Date</th><th>Commit Log Entry</th></tr>";
204 foreach($commitids as $ids) {
205 $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");
207 $flin1 = trim(fgets($rs));
208 $flin2 = trim(fgets($rs));
209 $flin3 = trim(fgets($rs));
211 $flin4 = fread($rs, 8192);
213 $flon = gwvpmini_emailToUserLink($flin2);
215 $flon = "$flin3 (external)";
218 echo "<tr><td>".gwvpmini_HtmlGravatar($flin2, 18)."$flon</td><td>$flin1</td><td>$flin4</td></tr>";
222 echo "No commit information available yet<br>";
226 function gwvpmini_UpdateRepoBasePerms()
228 global $BASE_URL, $repo_view_call;
230 if(isset($_REQUEST["q"])) {
\r
231 $query = $_REQUEST["q"];
\r
232 $qspl = explode("/", $query);
233 error_log("PLOOP:qview".print_r($qspl, true));
\r
236 if(isset($qspl[1])) $repo_view_call = $qspl[1];
238 error_log("PLOOP: no repo name");
239 header("Location: $BASE_URL/view/$repo_view_call");
243 $newperms = $_REQUEST["base_perms"];
245 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
246 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
248 $owner_name = $owner["username"];
251 if(isset($_SESSION["id"])) {
\r
252 if($owner["id"] == $_SESSION["id"]) {
\r
253 $owner_view = true;
\r
257 $rid = gwvpmini_GetRepoId($repo_view_call);
260 gwvpmini_SendMessage("error", "failure updating permission for repo");
261 error_log("PLOOP: attempt to update from non-owner");
263 error_log("PLOOP: updateds: ".print_r($_REQUEST, true));
264 gwvpmini_ChangeRepoPerm($rid, "b", $_REQUEST["base_perms"]);
265 gwvpmini_SendMessage("info", "Base permissions for repo updated");
268 header("Location: $BASE_URL/view/$repo_view_call");
271 function gwvpmini_AddRepoReader()
273 global $BASE_URL, $repo_view_call;
\r
275 if(isset($_REQUEST["q"])) {
\r
276 $query = $_REQUEST["q"];
\r
277 $qspl = explode("/", $query);
\r
278 error_log("PLOOP:qview".print_r($qspl, true));
\r
281 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
283 error_log("PLOOP: no repo name");
284 // TODO: btw, this makes no sense
\r
285 header("Location: $BASE_URL/view/$repo_view_call");
\r
289 $newperms = $_REQUEST["base_perms"];
\r
291 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
292 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
294 $owner_name = $owner["username"];
\r
296 $owner_view = false;
\r
297 if(isset($_SESSION["id"])) {
\r
298 if($owner["id"] == $_SESSION["id"]) {
\r
299 $owner_view = true;
\r
303 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
304 error_log("PLOOP: attempt to update from non-owner");
305 header("Location: $BASE_URL/view/$repo_view_call");
309 $auid = gwvpmini_GetUserId($_REQUEST["readerusername"]);
311 if($auid == $_SESSION["id"]) {
312 gwvpmini_SendMessage("error", "You cannot add yourself as a reader as you already own the repo");
313 header("Location: $BASE_URL/view/$repo_view_call");
\r
318 $rid = gwvpmini_GetRepoId($repo_view_call);
320 gwvpmini_ChangeRepoPerm($rid, $auid, 1);
321 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["readerusername"]." as a reader");
322 header("Location: $BASE_URL/view/$repo_view_call");
\r
325 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["readerusername"]);
326 header("Location: $BASE_URL/view/$repo_view_call");
333 function gwvpmini_AddRepoContributor()
335 global $BASE_URL, $repo_view_call;
\r
337 if(isset($_REQUEST["q"])) {
\r
338 $query = $_REQUEST["q"];
\r
339 $qspl = explode("/", $query);
\r
340 error_log("PLOOP:qview".print_r($qspl, true));
\r
343 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
345 error_log("PLOOP: no repo name");
\r
346 // TODO: btw, this makes no sense
\r
347 header("Location: $BASE_URL/view/$repo_view_call");
\r
351 $newperms = $_REQUEST["base_perms"];
\r
353 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
354 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
356 $owner_name = $owner["username"];
\r
358 $owner_view = false;
\r
359 if(isset($_SESSION["id"])) {
\r
360 if($owner["id"] == $_SESSION["id"]) {
\r
361 $owner_view = true;
\r
365 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
366 error_log("PLOOP: attempt to update from non-owner");
\r
367 header("Location: $BASE_URL/view/$repo_view_call");
\r
371 $auid = gwvpmini_GetUserId($_REQUEST["contribusername"]);
\r
373 if($auid == $_SESSION["id"]) {
\r
374 gwvpmini_SendMessage("error", "You cannot add yourself as a contributor as you already own the repo");
\r
375 header("Location: $BASE_URL/view/$repo_view_call");
\r
380 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
382 gwvpmini_ChangeRepoPerm($rid, $auid, 2);
\r
383 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["contribusername"]." as a contributor");
\r
384 header("Location: $BASE_URL/view/$repo_view_call");
\r
387 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["contribusername"]);
\r
388 header("Location: $BASE_URL/view/$repo_view_call");
\r
393 function gwvpmini_RemoveRepoContributor()
396 global $BASE_URL, $repo_view_call;
\r
398 if(isset($_REQUEST["q"])) {
\r
399 $query = $_REQUEST["q"];
\r
400 $qspl = explode("/", $query);
\r
401 error_log("PLOOP:qview".print_r($qspl, true));
\r
404 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
406 error_log("PLOOP: no repo name");
\r
407 // TODO: btw, this makes no sense
\r
408 header("Location: $BASE_URL/view/$repo_view_call");
\r
413 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
414 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
416 $owner_name = $owner["username"];
\r
418 $owner_view = false;
\r
419 if(isset($_SESSION["id"])) {
\r
420 if($owner["id"] == $_SESSION["id"]) {
\r
421 $owner_view = true;
\r
425 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
426 error_log("PLOOP: attempt to update from non-owner");
\r
427 header("Location: $BASE_URL/view/$repo_view_call");
\r
431 $rid = gwvpmini_GetRepoId($repo_view_call);
433 $bperms_f = gwvpmini_GetRepoPerms($rid);
435 foreach($bperms_f as $key=>$val) {
437 if(isset($_REQUEST["$key"])) {
438 gwvpmini_ChangeRepoPerm($rid, $key, 0);
443 gwvpmini_SendMessage("info", "Repo permissions updated");
444 header("Location: $BASE_URL/view/$repo_view_call");
\r
450 function gwvpmini_RemoveRepoReader()
\r
453 global $BASE_URL, $repo_view_call;
\r
455 if(isset($_REQUEST["q"])) {
\r
456 $query = $_REQUEST["q"];
\r
457 $qspl = explode("/", $query);
\r
458 error_log("PLOOP:qview".print_r($qspl, true));
\r
461 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
463 error_log("PLOOP: no repo name");
\r
464 // TODO: btw, this makes no sense
\r
465 header("Location: $BASE_URL/view/$repo_view_call");
\r
470 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
471 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
473 $owner_name = $owner["username"];
\r
475 $owner_view = false;
\r
476 if(isset($_SESSION["id"])) {
\r
477 if($owner["id"] == $_SESSION["id"]) {
\r
478 $owner_view = true;
\r
482 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
483 error_log("PLOOP: attempt to update from non-owner");
\r
484 header("Location: $BASE_URL/view/$repo_view_call");
\r
488 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
490 $bperms_f = gwvpmini_GetRepoPerms($rid);
\r
492 foreach($bperms_f as $key=>$val) {
\r
494 if(isset($_REQUEST["$key"])) {
\r
495 gwvpmini_ChangeRepoPerm($rid, $key, 0);
\r
500 gwvpmini_SendMessage("info", "Repo permissions updated");
\r
501 header("Location: $BASE_URL/view/$repo_view_call");
\r
506 function gwvpmini_RepoUpdateDescription()
508 global $BASE_URL, $repo_view_call;
\r
510 if(isset($_REQUEST["q"])) {
\r
511 $query = $_REQUEST["q"];
\r
512 $qspl = explode("/", $query);
\r
513 error_log("PLOOP:qview".print_r($qspl, true));
\r
516 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
518 error_log("PLOOP: no repo name");
\r
519 // TODO: btw, this makes no sense
\r
520 header("Location: $BASE_URL/view/$repo_view_call");
\r
525 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
526 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
528 $owner_name = $owner["username"];
\r
530 $owner_view = false;
\r
531 if(isset($_SESSION["id"])) {
\r
532 if($owner["id"] == $_SESSION["id"]) {
\r
533 $owner_view = true;
\r
537 gwvpmini_SendMessage("error", "failure updating description for repo");
\r
538 error_log("PLOOP: attempt to update from non-owner");
\r
539 header("Location: $BASE_URL/view/$repo_view_call");
\r
543 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
545 gwvpmini_UpdateRepoDescription($rid, $_REQUEST["desc"]);
547 gwvpmini_SendMessage("info", "Repo description updated");
\r
548 header("Location: $BASE_URL/view/$repo_view_call");
\r