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";
49 function gwvpmini_RepoViewPage()
\r
51 global $repo_view_call, $MENU_ITEMS, $BASE_URL;
\r
53 $MENU_ITEMS["40thisrepo"]["text"] = "$repo_view_call";
\r
54 $MENU_ITEMS["40thisrepo"]["link"] = "$BASE_URL/view/$repo_view_call";
\r
56 gwvpmini_goMainPage("gwvpmini_RepoViewPageBody");
\r
59 function gwvpmini_RepoViewPageBody()
61 global $repo_view_call, $MENU_ITEMS, $BASE_URL;
63 $repo_base = gwvpmini_getConfigVal("repodir");
\r
65 $bperms_f = gwvpmini_GetRepoPerms(gwvpmini_GetRepoId($repo_view_call));
66 $bperms = $bperms_f["b"];
68 $owner_view = false;
\r
70 if($_SERVER["SERVER_PORT"] == 443) $proto="https://";
71 else $proto = "http://";
72 $sname = $_SERVER["SERVER_NAME"];
74 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
75 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
77 $owner_name = $owner["username"];
79 // TODO: fix this so that if user has no read access to repo, they cant see it
80 if(isset($_SESSION["id"])) {
81 if($owner["id"] == $_SESSION["id"]) {
83 } else if ($bperms != "r") {
84 // check user level perms
85 $perm = gwvpmini_GetRepoPerm($rid, $_SESSION["id"]);
87 header("Location: $BASE_URL");
\r
93 header("Location: $BASE_URL");
99 error_log("STUFF:".print_r($owner,true));
100 if($bperms != "a") $login = $_SESSION["username"]."@password:";
102 $cloneurl = "git clone $proto$login$sname$BASE_URL/git/$repo_view_call.git";
103 echo "<textarea rows=1 cols=".strlen($cloneurl).">$cloneurl</textarea><br>";
105 if($owner_view) $owner_extra = " (YOU)";
106 else $owner_extra = "";
\r
108 echo "<h2>".get_gravatar($owner["email"], 30, 'mm', 'g', true)."$repo_view_call - $owner_name$owner_extra</h2>";
109 echo "<b>$desc</b><br>";
119 if($bperms == "a") $anyo = " selected";
\r
120 if($bperms == "r") $regd = " selected";
\r
121 if($bperms == "x") $expl = " selected";
\r
123 error_log("BPERMS: $bperms");
125 if($bperms == "x") $cspan = 3;
128 echo "<table border=\"1\"><tr valign=\"top\"><tr><th colspan=\"$cspan\">Permissions</th></tr><td>";
129 echo "<form method=\"post\" action=\"$BASE_URL/updaterepobaseperms/$repo_view_call\">";
130 echo "<select name=\"base_perms\">";
131 echo "<option value=\"a\"$anyo>Anyone can read</option>";
132 echo "<option value=\"r\"$regd>Only registered users can read</option>";
133 echo "<option value=\"x\"$expl>Explicit read permissions</option>";
135 echo "<input type=\"submit\" name=\"Set\" value=\"Set\">";
138 echo "</td><td><b>Readers</b><br>";
139 echo "<form method=\"post\" action=\"$BASE_URL/reporemovereaders/$repo_view_call\">";
141 foreach($bperms_f as $key=>$val) {
143 $dets = gwvpmini_getUser(null, null, $key);
144 echo get_gravatar($dets["email"], 18, 'mm', 'g', true)." <input type=\"checkbox\" name=\"$key\"> ".$dets["username"]."<br>";
148 if($nl==1) echo "<input type=\"submit\" name=\"remove\" value=\"Remove Selected\">";
150 echo "<form method=\"post\" action=\"$BASE_URL/repoaddreader/$repo_view_call\">";
151 echo "<input type=\"text\" name=\"readerusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
155 echo "</td><td><b>Contributors</b><br>";
156 echo "<form method=\"post\" action=\"$BASE_URL/reporemovecontribs/$repo_view_call\">";
158 foreach($bperms_f as $key=>$val) {
\r
160 $dets = gwvpmini_getUser(null, null, $key);
\r
161 echo get_gravatar($dets["email"], 18, 'mm', 'g', true)." <input type=\"checkbox\" name=\"$key\"> ".$dets["username"]."<br>";
165 if($nl==1) echo "<input type=\"submit\" name=\"remove\" value=\"Remove Selected\">";
\r
168 echo "<form method=\"post\" action=\"$BASE_URL/repoaddcontrib/$repo_view_call\">";
169 echo "<input type=\"text\" name=\"contribusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
171 echo "</td></tr></table>";
173 //echo "command: git log --git-dir=$repo_base/$repo_view_call.git --pretty=format:\"%H\" -10";
174 $rs = popen("git --git-dir=$repo_base/$repo_view_call.git log --pretty=format:\"%H\" -10", "r");
175 $commitids = array();
180 if($flin !== false) {
181 $commitids[$i] = trim($flin);
190 if($commitids != false) {
191 echo "<hr>Commits<br>";
192 echo "<table border=\"1\">";
193 echo "<tr><th>Committed By</th><th>Date</th><th>Commit Log Entry</th></tr>";
194 foreach($commitids as $ids) {
195 $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");
197 $flin1 = trim(fgets($rs));
198 $flin2 = trim(fgets($rs));
199 $flin3 = trim(fgets($rs));
201 $flin4 = fread($rs, 8192);
203 $flon = gwvpmini_emailToUserLink($flin2);
205 $flon = "$flin3 (external)";
208 echo "<tr><td>".get_gravatar($flin2, 18, 'mm', 'g', true)."$flon</td><td>$flin1</td><td>$flin4</td></tr>";
212 echo "No commit information available yet<br>";
216 function gwvpmini_UpdateRepoBasePerms()
218 global $BASE_URL, $repo_view_call;
220 if(isset($_REQUEST["q"])) {
\r
221 $query = $_REQUEST["q"];
\r
222 $qspl = explode("/", $query);
223 error_log("PLOOP:qview".print_r($qspl, true));
\r
226 if(isset($qspl[1])) $repo_view_call = $qspl[1];
228 error_log("PLOOP: no repo name");
229 header("Location: $BASE_URL/view/$repo_view_call");
233 $newperms = $_REQUEST["base_perms"];
235 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
236 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
238 $owner_name = $owner["username"];
241 if(isset($_SESSION["id"])) {
\r
242 if($owner["id"] == $_SESSION["id"]) {
\r
243 $owner_view = true;
\r
247 $rid = gwvpmini_GetRepoId($repo_view_call);
250 gwvpmini_SendMessage("error", "failure updating permission for repo");
251 error_log("PLOOP: attempt to update from non-owner");
253 error_log("PLOOP: updateds: ".print_r($_REQUEST, true));
254 gwvpmini_ChangeRepoPerm($rid, "b", $_REQUEST["base_perms"]);
255 gwvpmini_SendMessage("info", "Base permissions for repo updated");
258 header("Location: $BASE_URL/view/$repo_view_call");
261 function gwvpmini_AddRepoReader()
263 global $BASE_URL, $repo_view_call;
\r
265 if(isset($_REQUEST["q"])) {
\r
266 $query = $_REQUEST["q"];
\r
267 $qspl = explode("/", $query);
\r
268 error_log("PLOOP:qview".print_r($qspl, true));
\r
271 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
273 error_log("PLOOP: no repo name");
274 // TODO: btw, this makes no sense
\r
275 header("Location: $BASE_URL/view/$repo_view_call");
\r
279 $newperms = $_REQUEST["base_perms"];
\r
281 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
282 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
284 $owner_name = $owner["username"];
\r
286 $owner_view = false;
\r
287 if(isset($_SESSION["id"])) {
\r
288 if($owner["id"] == $_SESSION["id"]) {
\r
289 $owner_view = true;
\r
293 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
294 error_log("PLOOP: attempt to update from non-owner");
295 header("Location: $BASE_URL/view/$repo_view_call");
299 $auid = gwvpmini_GetUserId($_REQUEST["readerusername"]);
301 if($auid == $_SESSION["id"]) {
302 gwvpmini_SendMessage("error", "You cannot add yourself as a reader as you already own the repo");
303 header("Location: $BASE_URL/view/$repo_view_call");
\r
308 $rid = gwvpmini_GetRepoId($repo_view_call);
310 gwvpmini_ChangeRepoPerm($rid, $auid, 1);
311 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["readerusername"]." as a reader");
312 header("Location: $BASE_URL/view/$repo_view_call");
\r
315 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["readerusername"]);
316 header("Location: $BASE_URL/view/$repo_view_call");
323 function gwvpmini_AddRepoContributor()
325 global $BASE_URL, $repo_view_call;
\r
327 if(isset($_REQUEST["q"])) {
\r
328 $query = $_REQUEST["q"];
\r
329 $qspl = explode("/", $query);
\r
330 error_log("PLOOP:qview".print_r($qspl, true));
\r
333 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
335 error_log("PLOOP: no repo name");
\r
336 // TODO: btw, this makes no sense
\r
337 header("Location: $BASE_URL/view/$repo_view_call");
\r
341 $newperms = $_REQUEST["base_perms"];
\r
343 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
344 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
346 $owner_name = $owner["username"];
\r
348 $owner_view = false;
\r
349 if(isset($_SESSION["id"])) {
\r
350 if($owner["id"] == $_SESSION["id"]) {
\r
351 $owner_view = true;
\r
355 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
356 error_log("PLOOP: attempt to update from non-owner");
\r
357 header("Location: $BASE_URL/view/$repo_view_call");
\r
361 $auid = gwvpmini_GetUserId($_REQUEST["contribusername"]);
\r
363 if($auid == $_SESSION["id"]) {
\r
364 gwvpmini_SendMessage("error", "You cannot add yourself as a contributor as you already own the repo");
\r
365 header("Location: $BASE_URL/view/$repo_view_call");
\r
370 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
372 gwvpmini_ChangeRepoPerm($rid, $auid, 2);
\r
373 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["contribusername"]." as a contributor");
\r
374 header("Location: $BASE_URL/view/$repo_view_call");
\r
377 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["contribusername"]);
\r
378 header("Location: $BASE_URL/view/$repo_view_call");
\r
383 function gwvpmini_RemoveRepoContributor()
386 global $BASE_URL, $repo_view_call;
\r
388 if(isset($_REQUEST["q"])) {
\r
389 $query = $_REQUEST["q"];
\r
390 $qspl = explode("/", $query);
\r
391 error_log("PLOOP:qview".print_r($qspl, true));
\r
394 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
396 error_log("PLOOP: no repo name");
\r
397 // TODO: btw, this makes no sense
\r
398 header("Location: $BASE_URL/view/$repo_view_call");
\r
403 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
404 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
406 $owner_name = $owner["username"];
\r
408 $owner_view = false;
\r
409 if(isset($_SESSION["id"])) {
\r
410 if($owner["id"] == $_SESSION["id"]) {
\r
411 $owner_view = true;
\r
415 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
416 error_log("PLOOP: attempt to update from non-owner");
\r
417 header("Location: $BASE_URL/view/$repo_view_call");
\r
421 $rid = gwvpmini_GetRepoId($repo_view_call);
423 $bperms_f = gwvpmini_GetRepoPerms($rid);
425 foreach($bperms_f as $key=>$val) {
427 if(isset($_REQUEST["$key"])) {
428 gwvpmini_ChangeRepoPerm($rid, $key, 0);
433 gwvpmini_SendMessage("info", "Repo permissions updated");
434 header("Location: $BASE_URL/view/$repo_view_call");
\r
440 function gwvpmini_RemoveRepoReader()
\r
443 global $BASE_URL, $repo_view_call;
\r
445 if(isset($_REQUEST["q"])) {
\r
446 $query = $_REQUEST["q"];
\r
447 $qspl = explode("/", $query);
\r
448 error_log("PLOOP:qview".print_r($qspl, true));
\r
451 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
453 error_log("PLOOP: no repo name");
\r
454 // TODO: btw, this makes no sense
\r
455 header("Location: $BASE_URL/view/$repo_view_call");
\r
460 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
461 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
463 $owner_name = $owner["username"];
\r
465 $owner_view = false;
\r
466 if(isset($_SESSION["id"])) {
\r
467 if($owner["id"] == $_SESSION["id"]) {
\r
468 $owner_view = true;
\r
472 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
473 error_log("PLOOP: attempt to update from non-owner");
\r
474 header("Location: $BASE_URL/view/$repo_view_call");
\r
478 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
480 $bperms_f = gwvpmini_GetRepoPerms($rid);
\r
482 foreach($bperms_f as $key=>$val) {
\r
484 if(isset($_REQUEST["$key"])) {
\r
485 gwvpmini_ChangeRepoPerm($rid, $key, 0);
\r
490 gwvpmini_SendMessage("info", "Repo permissions updated");
\r
491 header("Location: $BASE_URL/view/$repo_view_call");
\r