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