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