git branching and pushing is doing my head in
[gwvp-mini.git] / gwvpmini / gwvpmini_admin.php
1 <?php
2
3
4 if($IS_WEB_REQUEST) {
5         if(gwvpmini_isLoggedIn()) if(gwvpmini_isUserAdmin()) {
6                 $MENU_ITEMS["20repos"]["text"] = "Administration";\r
7                 $MENU_ITEMS["20repos"]["link"] = "$BASE_URL/admin";
8                 $CALL_ME_FUNCTIONS["admin"] = "gwvpmini_AdminCallMe";
9         }
10         
11         
12         $reg = gwvpmini_getConfigVal("gravatarenabled");
13         
14         $use_gravatar = false;\r
15         if($reg == null) {\r
16                 gwvpmini_setConfigVal("gravatarenabled", "1");\r
17         } else if($reg == 1) {\r
18                 $use_gravatar = true;\r
19         } else {\r
20                 $use_gravatar = false;\r
21         }\r
22         \r
23         global $use_gravatar;
24 }
25
26 function gwvpmini_AdminCallMe()\r
27 {\r
28 \r
29         //error_log("in admin callme");\r
30         if(isset($_REQUEST["q"])) {\r
31                 $query = $_REQUEST["q"];\r
32                 $qspl = explode("/", $query);\r
33                 if(isset($qspl[0])) {\r
34                         if($qspl[0] == "admin") {\r
35                                 if(isset($qspl[1])) {\r
36                                         if($qspl[1] == "user") {\r
37                                                 return "gwvpmini_AdminUserCreate";\r
38                                         }
39                                         if($qspl[1] == "changereg") {
40                                                 return "gwvpmini_ChangeRegistration";
41                                         }
42                                         if($qspl[1] == "changeconfirm") {
43                                                 return "gwvpmini_ChangeRegConfig";
44                                         }
45                                         if($qspl[1] == "changefromemail") {
46                                                 return "gwvpmini_ChangeFromAddress";
47                                         }
48                                         if($qspl[1] == "removeuser") {
49                                                 return "gwvpmini_RemoveUserPage";
50                                         }\r
51                                         if($qspl[1] == "removerepo") {
52                                                 return "gwvpmini_RemoveRepoPage";
53                                         }
54                                         if($qspl[1] == "confremoveuser") {
55                                                 return "gwvpmini_ConfRemoveUser";
56                                         }
57                                         if($qspl[1] == "confremoverepo") {
58                                                 return "gwvpmini_ConfRemoveRepo";
59                                         }
60                                         if($qspl[1] == "switchenable") {
61                                                 return "gwvpmini_SwitchEnableUser";
62                                         }
63                                         if($qspl[1] == "switchenablerepo") {
64                                                 return "gwvpmini_SwitchEnableRepo";
65                                         }
66                                         if($qspl[1] == "changegravs") {
67                                                 return "gwvpmini_SwitchGravatars";
68                                         }
69                                 } else {\r
70                                         error_log("i got here, where next?");\r
71                                         return "gwvpmini_AdminMainPage";\r
72                                 }\r
73                         } else return false;\r
74                 }\r
75                 else return false;\r
76         }\r
77 \r
78         return false;\r
79 }
80 \r
81 function gwvpmini_RemoveRepoPage()\r
82 {\r
83         gwvpmini_goMainPage("gwvpmini_RemoveRepoPageBody");\r
84 \r
85 }\r
86 \r
87
88 function gwvpmini_RemoveUserPage()
89 {
90         gwvpmini_goMainPage("gwvpmini_RemoveUserPageBody");
91         
92 }
93
94 function gwvpmini_AdminMainPage()
95 {
96         gwvpmini_goMainPage("gwvpmini_AdminMainPageBody");
97 }
98
99 function gwvpmini_AdminMainPageBody()
100 {
101         global $BASE_URL;
102         global $can_register, $reg_reqs_confirm, $confirm_from_address, $use_gravatar;
103         
104         if($can_register) {
105                 $register = "Registration Enabled (<a href=\"$BASE_URL/admin/changereg\">Disable</a>)";
106         } else {
107                 $register = "Registration Disabled (<a href=\"$BASE_URL/admin/changereg\">Enable</a>)";
108         }
109         
110         if($reg_reqs_confirm) {
111                 $regconfirm = "Registration Requires Confirmation (<a href=\"$BASE_URL/admin/changeconfirm\">Disable</a>)";
112         } else {
113                 $regconfirm = "Registration Doesnt Require Confirmation (<a href=\"$BASE_URL/admin/changeconfirm\">Enable</a>)";
114         }
115         
116         if($use_gravatar) {
117                 $usegrav = "Gravatars are enabled (<a href=\"$BASE_URL/admin/changegravs\">Disable</a>)";
118         } else {
119                 $usegrav = "Gravatars are disabled (<a href=\"$BASE_URL/admin/changegravs\">Enable</a>)";
120         }
121         
122         $totalusers = gwvpmini_GetNUsers();
123         echo "<table><tr valign=\"top\"><td>";
124         echo "<h2>Users - $totalusers</h2>";
125         echo "$register<br>$regconfirm<br>$usegrav<br>";
126         echo "<form method=\"post\" action=\"$BASE_URL/admin/changefromemail\">";
127         echo "Address emails are sent from <input type=\"text\" name=\"fromemail\" value=\"$confirm_from_address\"><input type=\"submit\" name=\"Update\" value=\"Update\"><br>";
128         echo "</form>"; 
129
130         echo "<table border=\"1\">";
131         echo "<tr><th>Username</th><th>Email Address</th><th>Full Name</th><th>Description</th><th>Status</th><th>Control</th></tr>";
132         foreach(gwvpmini_GetUsers() as $key => $val) {
133                 $id = $key;
134                 $un = $val["username"];
135                 $em = $val["email"];
136                 $fn = $val["fullname"];
137                 $ds = $val["desc"];
138                 $st_t = $val["status"];
139                 $st_l = $val["level"];
140                 
141                 $astat = "0";
142                 $cstat = "WTF";
143                 $level = "WTF";
144                 if($st_l == 0) $level = "User";
145                 if($st_l == 1) $level = "Admin";
146                 
147                 $status = "";
148                 if($st_t[0] == "1") {
149                         $status = ", disabled";
150                         $astat = 0;
151                         $cstat = "Enable";
152                 } else if ($st_t[0] == "0") {
153                         $astat = 1;
154                         $cstat = "Disable";
155                 } else  if($st_t[0] == "2") {
156                         $vl = explode(":", $st_t);
157                         error_log("VL: ".print_r($vl, true));
158                         $status = " Awaiting Confirmation (<a href=\"$BASE_URL/register/confirmreg/".$vl[1]."\">Confirm</a>)";
159                 }
160                 
161                 $st = "$level$status";
162                 
163                 $unlval = "<a href=\"$BASE_URL/user/$un\">$un</a>";
164                 echo "<tr><td>$unlval</td><td>$em</td><td>$fn</td><td>$ds</td><td>$st</td><td><a href=\"$BASE_URL/admin/removeuser/$id\">Remove</a> ";
165                 if ($st_t[0] == "0"||$st_t[0] == "1") echo "<a href=\"$BASE_URL/admin/switchenable/$astat/$id\">$cstat</a></td></tr>";
166                 else echo "</td></tr>";
167         }
168         
169         
170         echo "</table>";
171         echo "</td><td>";
172         echo "<h3>Create User</h3>";
173         echo "<form method=\"post\" action=\"$BASE_URL/admin/user/create\">";
174         echo "<table border=\"1\">";\r
175         echo "<tr><th>Username</th><td><input type=\"text\" name=\"username\"></td></tr>";
176         echo "<tr><th>Password</th><td><input type=\"password\" name=\"password\"></td></tr>";
177         echo "<tr><th>Confirm Password</th><td><input type=\"password\" name=\"confpassword\"></td></tr>";
178         echo "<tr><th>Full Name</th><td><input type=\"text\" name=\"fullname\"></td></tr>";
179         echo "<tr><th>Description</th><td><input type=\"text\" name=\"desc\"></td></tr>";
180         echo "<tr><th>Email</th><td><input type=\"text\" name=\"email\"></td></tr>";
181         echo "<tr><th>Confirm Email</th><td><input type=\"text\" name=\"confemail\"></td></tr>";
182         echo "<tr><th>Admin?</th><td><input type=\"checkbox\" name=\"isadmin\"></td></tr>";
183         echo "<tr><td colspan=\"2\"><input type=\"submit\" name=\"Add\" value=\"Add\"></td></tr>";
184         echo "</table>";
185         echo "</form>";
186         echo "</td></tr></table>";
187         
188         $totalrepos = gwvpmini_GetNRepos();
189         echo "<h2>Repo's - $totalrepos</h2>";
190         echo "<table border=\"1\">";
191         echo "<tr><th>Repo Name</th><th>Repo Desc</th><th>Owner</th><th>Control</th></tr>";
192         foreach(gwvpmini_GetRepos() as $key => $val) {
193                 $id = $key;
194                 $rn = $val["name"];
195                 $ds = $val["desc"];
196                 $ow = $val["owner"];
197                 $st = $val["status"];
198                 $udet = gwvpmini_getUser(null, null, $ow);
199                 if(!$udet) {
200                         $owl = "Orphaned";
201                 } else {
202                         $owl = $udet["username"]." (".$udet["id"].") - ".$udet["fullname"]." (".$udet["email"].") - <a href=\"mailto:".$udet["email"]."\">Email Owner</a>";
203                 }
204                 
205                 if($st == 1) {
206                         $stat = 0;
207                         $cstat = "Enable";
208                 } else {
209                         $stat = 1;\r
210                         $cstat = "Disable";
211                 }
212                 
213                 echo "<tr><td><a href=\"$BASE_URL/view/$rn\">$rn</a></td><td>$ds</td><td>$owl</td><td><a href=\"$BASE_URL/admin/removerepo/$id\">Remove</a> <a href=\"$BASE_URL/admin/switchenablerepo/$stat/$id\">$cstat</a></td></tr>";
214                 
215         }
216         echo "</table>";
217 }\r
218
219
220 function gwvpmini_AdminUserCreate()
221 {
222         global $BASE_URL;
223         
224         $name = $_REQUEST["username"];
225         $pass1 = $_REQUEST["password"];
226         $pass2 = $_REQUEST["confpassword"];\r
227         $fname = $_REQUEST["fullname"];
228         $desc = $_REQUEST["desc"];
229         $email1 = $_REQUEST["email"];\r
230         $email2 = $_REQUEST["confemail"];
231         if(isset($_REQUEST["isadmin"])) $level = 1;
232         else $level = 0;\r
233         
234         $id = gwvpmini_GetUserId($name);
235         
236         if(!$id) {
237                 if($pass1 != $pass2) {
238                         gwvpmini_SendMessage("error", "Passwords dont match");
239                         header("Location: $BASE_URL/admin");
240                         return;
241                 }
242                 if($email1 != $email2) {
243                         gwvpmini_SendMessage("error", "Email Addresses dont match");
244                         header("Location: $BASE_URL/admin");
245                         return;
246                 }
247                 
248                 gwvpmini_AddUser($name, $pass1, $fname, $email1, $desc, $level, 0);
249                 gwvpmini_SendMessage("info", "User $fname created");
250         } else {
251                 gwvpmini_SendMessage("error", "User $name already exists, cant create");
252         }
253         
254         header("Location: $BASE_URL/admin");
255         return;
256         
257 }
258
259
260 function gwvpmini_ChangeRegistration()
261 {
262         global $can_register, $BASE_URL;
263         
264         if($can_register) {
265                 gwvpmini_setConfigVal("canregister", "0");
266                 gwvpmini_SendMessage("info", "Registration disabled");
267         } else {
268                 gwvpmini_setConfigVal("canregister", "1");\r
269                 gwvpmini_SendMessage("info", "Registration enabled");
270         }
271         
272         header("Location: $BASE_URL/admin");
273 }
274
275
276 function gwvpmini_ChangeRegConfig()
277 {
278         global $reg_reqs_confirm, $BASE_URL;\r
279         \r
280         if($reg_reqs_confirm) {\r
281                 gwvpmini_setConfigVal("registerrequiresconfirm", "0");\r
282                 gwvpmini_SendMessage("info", "Registration Confirmation disabled");\r
283         } else {\r
284                 gwvpmini_setConfigVal("registerrequiresconfirm", "1");\r
285                 gwvpmini_SendMessage("info", "Registration Confirmation enabled");\r
286         }\r
287         \r
288         header("Location: $BASE_URL/admin");
289 }
290
291 function gwvpmini_ChangeFromAddress()
292 {
293         global $BASE_URL;
294         
295         $newfrom = $_REQUEST["fromemail"];\r
296         \r
297         gwvpmini_setConfigVal("eamilfromaddress", "$newfrom");\r
298         gwvpmini_SendMessage("info", "Email from address updated to \"$newfrom\"");\r
299         \r
300         header("Location: $BASE_URL/admin");\r
301         
302 }
303
304 function gwvpmini_RemoveUserPageBody()
305 {
306         global $BASE_URL;
307         
308         $uid = -1;
309         if(isset($_REQUEST["q"])) {\r
310                 $query = $_REQUEST["q"];\r
311                 $qspl = explode("/", $query);\r
312                 if(isset($qspl[2])) {
313                         $uid = $qspl[2];\r
314                 }
315         }
316         
317         if($uid != -1) {
318                 $details = gwvpmini_GetUsers($uid, 1);
319                 $username = $details[$uid]["username"];
320                 $fullname = $details[$uid]["fullname"];
321                 $email = $details[$uid]["email"];
322                 $desc = $details[$uid]["desc"];
323                 
324                 error_log("user dets:".print_r($details, true));
325                 
326                 echo "<h2>Remove User?</h2>";
327                 echo "Are you sure you wish to remove the user, $username ($uid) - $fullname - $email - $desc?<br>";
328                 echo "<a href=\"$BASE_URL/admin/confremoveuser/$uid\">Yes</a> <a href=\"$BASE_URL/admin\">No</a><br>";
329         } else {
330                 echo "<h2>How?</h2>";
331                 echo "You got here in a weird way or the uid of the user you were trying to delete is invalid<br>";
332                 echo "<a href=\"$BASE_URL/admin\">Go Back</a>";
333         }
334         
335 }
336
337 function gwvpmini_RemoveRepoPageBody()\r
338 {\r
339         global $BASE_URL;\r
340 \r
341         $rid = -1;
342         $uid = -1;\r
343         if(isset($_REQUEST["q"])) {\r
344                 $query = $_REQUEST["q"];\r
345                 $qspl = explode("/", $query);\r
346                 if(isset($qspl[2])) {\r
347                         $rid = $qspl[2];\r
348                 }\r
349         }
350         
351         $repdet = gwvpmini_getRepo(null, null, $rid);
352         if($repdet != false) $uid = $repdet["ownerid"];
353         $usedet = gwvpmini_getUser(null, null, $uid);\r
354         \r
355 \r
356         if($rid != -1) {
357                 $rname = $repdet["name"];
358                 $rdesc = $repdet["desc"];
359                 if($usedet == false) {
360                         $ownedby = "which is unowned (Orphaned)";
361                 } else {
362                         $ownedby = "owned by <b>$username</b> ($uid) - \"$fullname\"";
363                 }
364                 $username = $usedet["username"];
365                 $fullname = $usedet["fullname"];
366                 \r
367 \r
368                 error_log("user dets:".print_r($details, true));\r
369 \r
370                 echo "<h2>Remove User?</h2>";\r
371                 echo "Are you sure you wish to remove the repo, <b>$rname</b> ($rid) - \"$rdesc\" $ownedby?<br>";\r
372                 echo "<a href=\"$BASE_URL/admin/confremoverepo/$rid\">Yes</a> <a href=\"$BASE_URL/admin\">No</a><br>";\r
373         } else {\r
374                 echo "<h2>How?</h2>";\r
375                 echo "You got here in a weird way or the uid of the repo you were trying to delete is invalid<br>";\r
376                 echo "<a href=\"$BASE_URL/admin\">Go Back</a>";\r
377         }\r
378 \r
379 }
380
381 function gwvpmini_ConfRemoveRepo()\r
382 {\r
383         global $BASE_URL;\r
384
385         
386         error_log("CONF REMOVE REPO");
387         \r
388         $rid = -1;\r
389         if(isset($_REQUEST["q"])) {\r
390                 $query = $_REQUEST["q"];\r
391                 $qspl = explode("/", $query);\r
392                 if(isset($qspl[2])) {\r
393                         $rid = $qspl[2];\r
394                 }\r
395         }\r
396 \r
397         if($rid > 0) {\r
398                 $details = gwvpmini_getRepo(null, null, $rid);\r
399                 $rname = $details["name"];\r
400                 gwvpmini_RemoveRepo($rid);\r
401                 gwvpmini_SendMessage("info", "Repo $rname ($rid) has been removed");\r
402         } else {\r
403                 gwvpmini_SendMessage("info", "Problem deleteing repo with rid $rid");\r
404         }\r
405 \r
406         header("Location: $BASE_URL/admin");\r
407 }
408
409 function gwvpmini_ConfRemoveUser()\r
410 {\r
411         global $BASE_URL;\r
412 \r
413         $uid = -1;\r
414         if(isset($_REQUEST["q"])) {\r
415                 $query = $_REQUEST["q"];\r
416                 $qspl = explode("/", $query);\r
417                 if(isset($qspl[2])) {\r
418                         $uid = $qspl[2];\r
419                 }\r
420         }\r
421 \r
422         if($uid > 0) {
423                 $details = gwvpmini_getUser(null, null, $uid);
424                 $uname = $details["username"];
425                 gwvpmini_RemoveUser($uid);
426                 gwvpmini_SendMessage("info", "User $uname ($uid) has been removed");\r
427         } else {
428                 gwvpmini_SendMessage("info", "Problem deleteing user with uid $uid");
429         }\r
430
431         header("Location: $BASE_URL/admin");\r
432 }
433
434 function gwvpmini_SwitchEnableUser()\r
435 {
436         global $BASE_URL;\r
437         \r
438         $uid = -1;
439         $newst = -1;\r
440         if(isset($_REQUEST["q"])) {\r
441                 $query = $_REQUEST["q"];\r
442                 $qspl = explode("/", $query);\r
443                 if(isset($qspl[2])) {\r
444                         $newst = $qspl[2];\r
445                 }
446                 if(isset($qspl[3])) {
447                         $uid = $qspl[3];
448                 }\r
449         }
450         
451         if($newst == 1) $stat = "disabled";
452         else $stat = "enabled";\r
453         \r
454         if($uid > 0 && ($newst == 1 || $newst == 0)) {\r
455                 $details = gwvpmini_getUser(null, null, $uid);\r
456                 $uname = $details["username"];\r
457                 if($newst == 1) gwvpmini_DisableUser($uid);
458                 if($newst == 0) gwvpmini_EnableUser($uid);\r
459                 gwvpmini_SendMessage("info", "User $uname ($uid) has been $stat");\r
460         } else {\r
461                 gwvpmini_SendMessage("info", "Problem disabling user with uid $uid");\r
462         }\r
463         \r
464         header("Location: $BASE_URL/admin");\r
465         
466 }
467
468 function gwvpmini_SwitchEnableRepo()
469 {
470         global $BASE_URL;\r
471         \r
472         $rid = -1;\r
473         $newst = -1;\r
474         if(isset($_REQUEST["q"])) {\r
475                 $query = $_REQUEST["q"];\r
476                 $qspl = explode("/", $query);\r
477                 if(isset($qspl[2])) {\r
478                         $newst = $qspl[2];\r
479                 }\r
480                 if(isset($qspl[3])) {\r
481                         $rid = $qspl[3];\r
482                 }\r
483         }\r
484         \r
485         if($newst == 1) $stat = "disabled";\r
486         else $stat = "enabled";\r
487         \r
488         if($rid > 0 && ($newst == 1 || $newst == 0)) {\r
489                 $details = gwvpmini_getRepo(null, null, $rid);\r
490                 if($newst == 1) gwvpmini_DisableRepo($rid);\r
491                 if($newst == 0) gwvpmini_EnableRepo($rid);\r
492                 gwvpmini_SendMessage("info", "Repo $uname ($rid) has been $stat");\r
493         } else {\r
494                 gwvpmini_SendMessage("info", "Problem disabling repo with rid $rid");\r
495         }\r
496         \r
497         header("Location: $BASE_URL/admin");
498 }
499
500 function gwvpmini_SwitchGravatars()
501 {
502         global $BASE_URL, $use_gravatar;\r
503         \r
504         if($newst == 1) $stat = "disabled";\r
505         else $stat = "enabled";\r
506         
507         if($use_gravatar) {
508                 gwvpmini_setConfigVal("gravatarenabled", "0");
509         } else {
510                 gwvpmini_setConfigVal("gravatarenabled", "1");
511         }
512         \r
513         gwvpmini_SendMessage("info", "Gravatars $stat");\r
514         \r
515         header("Location: $BASE_URL/admin");
516 }
517 ?>