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