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