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 $owner_view = false;
\r
67 if($_SERVER["SERVER_PORT"] == 443) $proto="https://";
68 else $proto = "http://";
69 $sname = $_SERVER["SERVER_NAME"];
71 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
72 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
74 $owner_name = $owner["username"];
77 if(isset($_SESSION["id"])) {
78 if($owner["id"] == $_SESSION["id"]) {
84 error_log("STUFF:".print_r($owner,true));
85 $cloneurl = "git clone $proto$sname$BASE_URL/git/$repo_view_call.git";
86 echo "<textarea rows=1 cols=".strlen($cloneurl).">$cloneurl</textarea><br>";
88 if($owner_view) $owner_extra = " (YOU)";
89 else $owner_extra = "";
\r
91 echo "<h2>".get_gravatar($owner["email"], 30, 'mm', 'g', true)."$repo_view_call - $owner_name$owner_extra</h2>";
92 echo "<b>$desc</b><br>";
95 $bperms_f = gwvpmini_GetRepoPerms(gwvpmini_GetRepoId($repo_view_call));
97 $bperms = $bperms_f["b"];
102 if($bperms == "a") $anyo = " selected";
\r
103 if($bperms == "r") $regd = " selected";
\r
104 if($bperms == "x") $expl = " selected";
\r
106 error_log("BPERMS: $bperms");
108 if($bperms == "x") $cspan = 3;
111 echo "<table border=\"1\"><tr valign=\"top\"><tr><th colspan=\"$cspan\">Permissions</th></tr><td>";
112 echo "<form method=\"post\" action=\"$BASE_URL/updaterepobaseperms/$repo_view_call\">";
113 echo "<select name=\"base_perms\">";
114 echo "<option value=\"a\"$anyo>Anyone can read</option>";
115 echo "<option value=\"r\"$regd>Only registered users can read</option>";
116 echo "<option value=\"x\"$expl>Explicit read permissions</option>";
118 echo "<input type=\"submit\" name=\"Set\" value=\"Set\">";
121 echo "</td><td><b>Readers</b><br>";
122 echo "<form method=\"post\" action=\"$BASE_URL/reporemovereaders/$repo_view_call\">";
124 foreach($bperms_f as $key=>$val) {
126 $dets = gwvpmini_getUser(null, null, $key);
127 echo get_gravatar($dets["email"], 18, 'mm', 'g', true)." <input type=\"checkbox\" name=\"$key\"> ".$dets["username"]."<br>";
131 if($nl==1) echo "<input type=\"submit\" name=\"remove\" value=\"Remove Selected\">";
133 echo "<form method=\"post\" action=\"$BASE_URL/repoaddreader/$repo_view_call\">";
134 echo "<input type=\"text\" name=\"readerusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
138 echo "</td><td><b>Contributors</b><br>";
139 echo "<form method=\"post\" action=\"$BASE_URL/reporemovecontribs/$repo_view_call\">";
141 foreach($bperms_f as $key=>$val) {
\r
143 $dets = gwvpmini_getUser(null, null, $key);
\r
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\">";
\r
151 echo "<form method=\"post\" action=\"$BASE_URL/repoaddcontrib/$repo_view_call\">";
152 echo "<input type=\"text\" name=\"contribusername\"> <input type=\"submit\" name=\"Add\" value=\"Add\">";
154 echo "</td></tr></table>";
156 //echo "command: git log --git-dir=$repo_base/$repo_view_call.git --pretty=format:\"%H\" -10";
157 $rs = popen("git --git-dir=$repo_base/$repo_view_call.git log --pretty=format:\"%H\" -10", "r");
158 $commitids = array();
163 if($flin !== false) {
164 $commitids[$i] = trim($flin);
173 if($commitids != false) {
174 echo "<hr>Commits<br>";
175 echo "<table border=\"1\">";
176 echo "<tr><th>Committed By</th><th>Date</th><th>Commit Log Entry</th></tr>";
177 foreach($commitids as $ids) {
178 $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");
180 $flin1 = trim(fgets($rs));
181 $flin2 = trim(fgets($rs));
182 $flin3 = trim(fgets($rs));
184 $flin4 = fread($rs, 8192);
186 $flon = gwvpmini_emailToUserLink($flin2);
188 $flon = "$flin3 (external)";
191 echo "<tr><td>".get_gravatar($flin2, 18, 'mm', 'g', true)."$flon</td><td>$flin1</td><td>$flin4</td></tr>";
195 echo "No commit information available yet<br>";
199 function gwvpmini_UpdateRepoBasePerms()
201 global $BASE_URL, $repo_view_call;
203 if(isset($_REQUEST["q"])) {
\r
204 $query = $_REQUEST["q"];
\r
205 $qspl = explode("/", $query);
206 error_log("PLOOP:qview".print_r($qspl, true));
\r
209 if(isset($qspl[1])) $repo_view_call = $qspl[1];
211 error_log("PLOOP: no repo name");
212 header("Location: $BASE_URL/view/$repo_view_call");
216 $newperms = $_REQUEST["base_perms"];
218 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
219 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
221 $owner_name = $owner["username"];
224 if(isset($_SESSION["id"])) {
\r
225 if($owner["id"] == $_SESSION["id"]) {
\r
226 $owner_view = true;
\r
230 $rid = gwvpmini_GetRepoId($repo_view_call);
233 gwvpmini_SendMessage("error", "failure updating permission for repo");
234 error_log("PLOOP: attempt to update from non-owner");
236 error_log("PLOOP: updateds: ".print_r($_REQUEST, true));
237 gwvpmini_ChangeRepoPerm($rid, "b", $_REQUEST["base_perms"]);
238 gwvpmini_SendMessage("info", "Base permissions for repo updated");
241 header("Location: $BASE_URL/view/$repo_view_call");
244 function gwvpmini_AddRepoReader()
246 global $BASE_URL, $repo_view_call;
\r
248 if(isset($_REQUEST["q"])) {
\r
249 $query = $_REQUEST["q"];
\r
250 $qspl = explode("/", $query);
\r
251 error_log("PLOOP:qview".print_r($qspl, true));
\r
254 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
256 error_log("PLOOP: no repo name");
257 // TODO: btw, this makes no sense
\r
258 header("Location: $BASE_URL/view/$repo_view_call");
\r
262 $newperms = $_REQUEST["base_perms"];
\r
264 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
265 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
267 $owner_name = $owner["username"];
\r
269 $owner_view = false;
\r
270 if(isset($_SESSION["id"])) {
\r
271 if($owner["id"] == $_SESSION["id"]) {
\r
272 $owner_view = true;
\r
276 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
277 error_log("PLOOP: attempt to update from non-owner");
278 header("Location: $BASE_URL/view/$repo_view_call");
282 $auid = gwvpmini_GetUserId($_REQUEST["readerusername"]);
284 if($auid == $_SESSION["id"]) {
285 gwvpmini_SendMessage("error", "You cannot add yourself as a reader as you already own the repo");
286 header("Location: $BASE_URL/view/$repo_view_call");
\r
291 $rid = gwvpmini_GetRepoId($repo_view_call);
293 gwvpmini_ChangeRepoPerm($rid, $auid, 1);
294 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["readerusername"]." as a reader");
295 header("Location: $BASE_URL/view/$repo_view_call");
\r
298 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["readerusername"]);
299 header("Location: $BASE_URL/view/$repo_view_call");
306 function gwvpmini_AddRepoContributor()
308 global $BASE_URL, $repo_view_call;
\r
310 if(isset($_REQUEST["q"])) {
\r
311 $query = $_REQUEST["q"];
\r
312 $qspl = explode("/", $query);
\r
313 error_log("PLOOP:qview".print_r($qspl, true));
\r
316 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
318 error_log("PLOOP: no repo name");
\r
319 // TODO: btw, this makes no sense
\r
320 header("Location: $BASE_URL/view/$repo_view_call");
\r
324 $newperms = $_REQUEST["base_perms"];
\r
326 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
327 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
329 $owner_name = $owner["username"];
\r
331 $owner_view = false;
\r
332 if(isset($_SESSION["id"])) {
\r
333 if($owner["id"] == $_SESSION["id"]) {
\r
334 $owner_view = true;
\r
338 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
339 error_log("PLOOP: attempt to update from non-owner");
\r
340 header("Location: $BASE_URL/view/$repo_view_call");
\r
344 $auid = gwvpmini_GetUserId($_REQUEST["contribusername"]);
\r
346 if($auid == $_SESSION["id"]) {
\r
347 gwvpmini_SendMessage("error", "You cannot add yourself as a contributor as you already own the repo");
\r
348 header("Location: $BASE_URL/view/$repo_view_call");
\r
353 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
355 gwvpmini_ChangeRepoPerm($rid, $auid, 2);
\r
356 gwvpmini_SendMessage("info", "Added user ".$_REQUEST["contribusername"]." as a contributor");
\r
357 header("Location: $BASE_URL/view/$repo_view_call");
\r
360 gwvpmini_SendMessage("error", "Couldnt find user with username of ".$_REQUEST["contribusername"]);
\r
361 header("Location: $BASE_URL/view/$repo_view_call");
\r
366 function gwvpmini_RemoveRepoContributor()
369 global $BASE_URL, $repo_view_call;
\r
371 if(isset($_REQUEST["q"])) {
\r
372 $query = $_REQUEST["q"];
\r
373 $qspl = explode("/", $query);
\r
374 error_log("PLOOP:qview".print_r($qspl, true));
\r
377 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
379 error_log("PLOOP: no repo name");
\r
380 // TODO: btw, this makes no sense
\r
381 header("Location: $BASE_URL/view/$repo_view_call");
\r
386 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
387 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
389 $owner_name = $owner["username"];
\r
391 $owner_view = false;
\r
392 if(isset($_SESSION["id"])) {
\r
393 if($owner["id"] == $_SESSION["id"]) {
\r
394 $owner_view = true;
\r
398 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
399 error_log("PLOOP: attempt to update from non-owner");
\r
400 header("Location: $BASE_URL/view/$repo_view_call");
\r
404 $rid = gwvpmini_GetRepoId($repo_view_call);
406 $bperms_f = gwvpmini_GetRepoPerms($rid);
408 foreach($bperms_f as $key=>$val) {
410 if(isset($_REQUEST["$key"])) {
411 gwvpmini_ChangeRepoPerm($rid, $key, 0);
416 gwvpmini_SendMessage("info", "Repo permissions updated");
417 header("Location: $BASE_URL/view/$repo_view_call");
\r
423 function gwvpmini_RemoveRepoReader()
\r
426 global $BASE_URL, $repo_view_call;
\r
428 if(isset($_REQUEST["q"])) {
\r
429 $query = $_REQUEST["q"];
\r
430 $qspl = explode("/", $query);
\r
431 error_log("PLOOP:qview".print_r($qspl, true));
\r
434 if(isset($qspl[1])) $repo_view_call = $qspl[1];
\r
436 error_log("PLOOP: no repo name");
\r
437 // TODO: btw, this makes no sense
\r
438 header("Location: $BASE_URL/view/$repo_view_call");
\r
443 $owner = gwvpmini_GetRepoOwnerDetailsFromName($repo_view_call);
\r
444 $desc = gwvpmini_GetRepoDescFromName($repo_view_call);
\r
446 $owner_name = $owner["username"];
\r
448 $owner_view = false;
\r
449 if(isset($_SESSION["id"])) {
\r
450 if($owner["id"] == $_SESSION["id"]) {
\r
451 $owner_view = true;
\r
455 gwvpmini_SendMessage("error", "failure updating permission for repo");
\r
456 error_log("PLOOP: attempt to update from non-owner");
\r
457 header("Location: $BASE_URL/view/$repo_view_call");
\r
461 $rid = gwvpmini_GetRepoId($repo_view_call);
\r
463 $bperms_f = gwvpmini_GetRepoPerms($rid);
\r
465 foreach($bperms_f as $key=>$val) {
\r
467 if(isset($_REQUEST["$key"])) {
\r
468 gwvpmini_ChangeRepoPerm($rid, $key, 0);
\r
473 gwvpmini_SendMessage("info", "Repo permissions updated");
\r
474 header("Location: $BASE_URL/view/$repo_view_call");
\r