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