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);
82 $owner_name = $owner["username"];
84 // TODO: fix this so that if user has no read access to repo, they cant see it
85 if(isset($_SESSION["id"])) {
86 if($owner["id"] == $_SESSION["id"]) {
88 } else if ($bperms != "r") {
89 // check user level perms
90 $perm = gwvpmini_GetRepoPerm($rid, $_SESSION["id"]);
92 header("Location: $BASE_URL");
\r
98 header("Location: $BASE_URL");
104 error_log("STUFF:".print_r($owner,true));
105 if($bperms != "a") $login = $_SESSION["username"].":password@";
107 $cloneurl = "git clone $proto$login$sname$BASE_URL/git/$repo_view_call.git";
108 echo "<textarea rows=1 cols=".strlen($cloneurl).">$cloneurl</textarea><br>";
110 if($owner_view) $owner_extra = " (YOU)";
111 else $owner_extra = "";
\r
113 echo "<h2>".get_gravatar($owner["email"], 30, 'mm', 'g', true)."$repo_view_call - $owner_name$owner_extra</h2>";
114 if(!$owner_view) echo "<b>$desc</b><br>";
117 echo "<form method=\"post\" action=\"$BASE_URL/repoupdatedesc/$repo_view_call\">";
\r
118 echo "<h3>Description<h3><textarea name=\"desc\" cols=\"120\" rows=\"5\">$editdesc</textarea><br><input type=\"submit\" name=\"Update\" value=\"Update\">";
\r
119 echo "</form><br>";
\r
127 if($bperms == "a") $anyo = " selected";
\r
128 if($bperms == "r") $regd = " selected";
\r
129 if($bperms == "x") $expl = " selected";
\r
131 error_log("BPERMS: $bperms");
133 if($bperms == "x") $cspan = 3;
136 echo "<table border=\"1\"><tr valign=\"top\"><tr><th colspan=\"$cspan\">Permissions</th></tr><td>";
137 echo "<form method=\"post\" action=\"$BASE_URL/updaterepobaseperms/$repo_view_call\">";
138 echo "<select name=\"base_perms\">";
139 echo "<option value=\"a\"$anyo>Anyone can read</option>";
140 echo "<option value=\"r\"$regd>Only registered users can read</option>";
141 echo "<option value=\"x\"$expl>Explicit read permissions</option>";
143 echo "<input type=\"submit\" name=\"Set\" value=\"Set\">";
146 echo "</td><td><b>Readers</b><br>";
147 echo "<form method=\"post\" action=\"$BASE_URL/reporemovereaders/$repo_view_call\">";
149 foreach($bperms_f as $key=>$val) {
151 $dets = gwvpmini_getUser(null, null, $key);
152 echo get_gravatar($dets["email"], 18, 'mm', 'g', true)." <input type=\"checkbox\" name=\"$key\"> ".$dets["username"]."<br>";
156 if($nl==1) echo "<input type=\"submit\" name=\"remove\" value=\"Remove Selected\">";
158 echo "<form method=\"post\" action=\"$BASE_URL/repoaddreader/$repo_view_call\">";
159 echo "<input type=\"text\" name=\"readerusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
163 echo "</td><td><b>Contributors</b><br>";
164 echo "<form method=\"post\" action=\"$BASE_URL/reporemovecontribs/$repo_view_call\">";
166 foreach($bperms_f as $key=>$val) {
\r
168 $dets = gwvpmini_getUser(null, null, $key);
\r
169 echo get_gravatar($dets["email"], 18, 'mm', 'g', true)." <input type=\"checkbox\" name=\"$key\"> ".$dets["username"]."<br>";
173 if($nl==1) echo "<input type=\"submit\" name=\"remove\" value=\"Remove Selected\">";
\r
176 echo "<form method=\"post\" action=\"$BASE_URL/repoaddcontrib/$repo_view_call\">";
177 echo "<input type=\"text\" name=\"contribusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
179 echo "</td></tr></table>";
182 //echo "command: git log --git-dir=$repo_base/$repo_view_call.git --pretty=format:\"%H\" -10";
183 $rs = popen("git --git-dir=$repo_base/$repo_view_call.git log --pretty=format:\"%H\" -10", "r");
184 $commitids = array();
189 if($flin !== false) {
190 $commitids[$i] = trim($flin);
199 if($commitids != false) {
200 echo "<hr>Commits<br>";
201 echo "<table border=\"1\">";
202 echo "<tr><th>Committed By</th><th>Date</th><th>Commit Log Entry</th></tr>";
203 foreach($commitids as $ids) {
204 $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");
206 $flin1 = trim(fgets($rs));
207 $flin2 = trim(fgets($rs));
208 $flin3 = trim(fgets($rs));
210 $flin4 = fread($rs, 8192);
212 $flon = gwvpmini_emailToUserLink($flin2);
214 $flon = "$flin3 (external)";
217 echo "<tr><td>".get_gravatar($flin2, 18, 'mm', 'g', true)."$flon</td><td>$flin1</td><td>$flin4</td></tr>";
221 echo "No commit information available yet<br>";
225 function gwvpmini_UpdateRepoBasePerms()
227 global $BASE_URL, $repo_view_call;
229 if(isset($_REQUEST["q"])) {
\r
230 $query = $_REQUEST["q"];
\r
231 $qspl = explode("/", $query);
232 error_log("PLOOP:qview".print_r($qspl, true));
\r
235 if(isset($qspl[1])) $repo_view_call = $qspl[1];
237 error_log("PLOOP: no repo name");
238 header("Location: $BASE_URL/view/$repo_view_call");
242 $newperms = $_REQUEST["base_perms"];
244 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
245 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
247 $owner_name = $owner["username"];
250 if(isset($_SESSION["id"])) {
\r
251 if($owner["id"] == $_SESSION["id"]) {
\r
252 $owner_view = true;
\r
256 $rid = gwvpmini_GetRepoId($repo_view_call);
259 gwvpmini_SendMessage("error", "failure updating permission for repo");
260 error_log("PLOOP: attempt to update from non-owner");
262 error_log("PLOOP: updateds: ".print_r($_REQUEST, true));
263 gwvpmini_ChangeRepoPerm($rid, "b", $_REQUEST["base_perms"]);
264 gwvpmini_SendMessage("info", "Base permissions for repo updated");
267 header("Location: $BASE_URL/view/$repo_view_call");
270 function gwvpmini_AddRepoReader()
272 global $BASE_URL, $repo_view_call;
\r
274 if(isset($_REQUEST["q"])) {
\r
275 $query = $_REQUEST["q"];
\r
276 $qspl = explode("/", $query);
\r
277 error_log("PLOOP:qview".print_r($qspl, true));
\r
280 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
282 error_log("PLOOP: no repo name");
283 // TODO: btw, this makes no sense
\r
284 header("Location: $BASE_URL/view/$repo_view_call");
\r
288 $newperms = $_REQUEST["base_perms"];
\r
290 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
291 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
293 $owner_name = $owner["username"];
\r
295 $owner_view = false;
\r
296 if(isset($_SESSION["id"])) {
\r
297 if($owner["id"] == $_SESSION["id"]) {
\r
298 $owner_view = true;
\r
302 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
303 error_log("PLOOP: attempt to update from non-owner");
304 header("Location: $BASE_URL/view/$repo_view_call");
308 $auid = gwvpmini_GetUserId($_REQUEST["readerusername"]);
310 if($auid == $_SESSION["id"]) {
311 gwvpmini_SendMessage("error", "You cannot add yourself as a reader as you already own the repo");
312 header("Location: $BASE_URL/view/$repo_view_call");
\r
317 $rid = gwvpmini_GetRepoId($repo_view_call);
319 gwvpmini_ChangeRepoPerm($rid, $auid, 1);
320 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["readerusername"]." as a reader");
321 header("Location: $BASE_URL/view/$repo_view_call");
\r
324 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["readerusername"]);
325 header("Location: $BASE_URL/view/$repo_view_call");
332 function gwvpmini_AddRepoContributor()
334 global $BASE_URL, $repo_view_call;
\r
336 if(isset($_REQUEST["q"])) {
\r
337 $query = $_REQUEST["q"];
\r
338 $qspl = explode("/", $query);
\r
339 error_log("PLOOP:qview".print_r($qspl, true));
\r
342 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
344 error_log("PLOOP: no repo name");
\r
345 // TODO: btw, this makes no sense
\r
346 header("Location: $BASE_URL/view/$repo_view_call");
\r
350 $newperms = $_REQUEST["base_perms"];
\r
352 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
353 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
355 $owner_name = $owner["username"];
\r
357 $owner_view = false;
\r
358 if(isset($_SESSION["id"])) {
\r
359 if($owner["id"] == $_SESSION["id"]) {
\r
360 $owner_view = true;
\r
364 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
365 error_log("PLOOP: attempt to update from non-owner");
\r
366 header("Location: $BASE_URL/view/$repo_view_call");
\r
370 $auid = gwvpmini_GetUserId($_REQUEST["contribusername"]);
\r
372 if($auid == $_SESSION["id"]) {
\r
373 gwvpmini_SendMessage("error", "You cannot add yourself as a contributor as you already own the repo");
\r
374 header("Location: $BASE_URL/view/$repo_view_call");
\r
379 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
381 gwvpmini_ChangeRepoPerm($rid, $auid, 2);
\r
382 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["contribusername"]." as a contributor");
\r
383 header("Location: $BASE_URL/view/$repo_view_call");
\r
386 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["contribusername"]);
\r
387 header("Location: $BASE_URL/view/$repo_view_call");
\r
392 function gwvpmini_RemoveRepoContributor()
395 global $BASE_URL, $repo_view_call;
\r
397 if(isset($_REQUEST["q"])) {
\r
398 $query = $_REQUEST["q"];
\r
399 $qspl = explode("/", $query);
\r
400 error_log("PLOOP:qview".print_r($qspl, true));
\r
403 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
405 error_log("PLOOP: no repo name");
\r
406 // TODO: btw, this makes no sense
\r
407 header("Location: $BASE_URL/view/$repo_view_call");
\r
412 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
413 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
415 $owner_name = $owner["username"];
\r
417 $owner_view = false;
\r
418 if(isset($_SESSION["id"])) {
\r
419 if($owner["id"] == $_SESSION["id"]) {
\r
420 $owner_view = true;
\r
424 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
425 error_log("PLOOP: attempt to update from non-owner");
\r
426 header("Location: $BASE_URL/view/$repo_view_call");
\r
430 $rid = gwvpmini_GetRepoId($repo_view_call);
432 $bperms_f = gwvpmini_GetRepoPerms($rid);
434 foreach($bperms_f as $key=>$val) {
436 if(isset($_REQUEST["$key"])) {
437 gwvpmini_ChangeRepoPerm($rid, $key, 0);
442 gwvpmini_SendMessage("info", "Repo permissions updated");
443 header("Location: $BASE_URL/view/$repo_view_call");
\r
449 function gwvpmini_RemoveRepoReader()
\r
452 global $BASE_URL, $repo_view_call;
\r
454 if(isset($_REQUEST["q"])) {
\r
455 $query = $_REQUEST["q"];
\r
456 $qspl = explode("/", $query);
\r
457 error_log("PLOOP:qview".print_r($qspl, true));
\r
460 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
462 error_log("PLOOP: no repo name");
\r
463 // TODO: btw, this makes no sense
\r
464 header("Location: $BASE_URL/view/$repo_view_call");
\r
469 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
470 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
472 $owner_name = $owner["username"];
\r
474 $owner_view = false;
\r
475 if(isset($_SESSION["id"])) {
\r
476 if($owner["id"] == $_SESSION["id"]) {
\r
477 $owner_view = true;
\r
481 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
482 error_log("PLOOP: attempt to update from non-owner");
\r
483 header("Location: $BASE_URL/view/$repo_view_call");
\r
487 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
489 $bperms_f = gwvpmini_GetRepoPerms($rid);
\r
491 foreach($bperms_f as $key=>$val) {
\r
493 if(isset($_REQUEST["$key"])) {
\r
494 gwvpmini_ChangeRepoPerm($rid, $key, 0);
\r
499 gwvpmini_SendMessage("info", "Repo permissions updated");
\r
500 header("Location: $BASE_URL/view/$repo_view_call");
\r
505 function gwvpmini_RepoUpdateDescription()
507 global $BASE_URL, $repo_view_call;
\r
509 if(isset($_REQUEST["q"])) {
\r
510 $query = $_REQUEST["q"];
\r
511 $qspl = explode("/", $query);
\r
512 error_log("PLOOP:qview".print_r($qspl, true));
\r
515 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
517 error_log("PLOOP: no repo name");
\r
518 // TODO: btw, this makes no sense
\r
519 header("Location: $BASE_URL/view/$repo_view_call");
\r
524 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
525 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
527 $owner_name = $owner["username"];
\r
529 $owner_view = false;
\r
530 if(isset($_SESSION["id"])) {
\r
531 if($owner["id"] == $_SESSION["id"]) {
\r
532 $owner_view = true;
\r
536 gwvpmini_SendMessage("error", "failure updating description for repo");
\r
537 error_log("PLOOP: attempt to update from non-owner");
\r
538 header("Location: $BASE_URL/view/$repo_view_call");
\r
542 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
544 gwvpmini_UpdateRepoDescription($rid, $_REQUEST["desc"]);
546 gwvpmini_SendMessage("info", "Repo description updated");
\r
547 header("Location: $BASE_URL/view/$repo_view_call");
\r