added user registration confirmation, email "from" setting, lots of
[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] == "confremoveuser") {
37                                                 return "gwvpmini_ConfRemoveUser";
38                                         }
39                                 } else {\r
40                                         error_log("i got here, where next?");\r
41                                         return "gwvpmini_AdminMainPage";\r
42                                 }\r
43                         } else return false;\r
44                 }\r
45                 else return false;\r
46         }\r
47 \r
48         return false;\r
49 }
50
51 function gwvpmini_RemoveUserPage()
52 {
53         gwvpmini_goMainPage("gwvpmini_RemoveUserPageBody");
54         
55 }
56
57 function gwvpmini_AdminMainPage()
58 {
59         gwvpmini_goMainPage("gwvpmini_AdminMainPageBody");
60 }
61
62 function gwvpmini_AdminMainPageBody()
63 {
64         global $BASE_URL;
65         global $can_register, $reg_reqs_confirm, $confirm_from_address;
66         
67         if($can_register) {
68                 $register = "Registration Enabled (<a href=\"$BASE_URL/admin/changereg\">Disable</a>)";
69         } else {
70                 $register = "Registration Disabled (<a href=\"$BASE_URL/admin/changereg\">Enable</a>)";
71         }
72         
73         if($reg_reqs_confirm) {
74                 $regconfirm = "Registration Requires Confirmation (<a href=\"$BASE_URL/admin/changeconfirm\">Disable</a>)";
75         } else {
76                 $regconfirm = "Registration Doesnt Require Confirmation (<a href=\"$BASE_URL/admin/changeconfirm\">Enable</a>)";
77         }
78         $totalusers = gwvpmini_GetNUsers();
79         echo "<table><tr valign=\"top\"><td>";
80         echo "<h2>Users - $totalusers</h2>";
81         echo "$register<br>$regconfirm<br>";
82         echo "<form method=\"post\" action=\"$BASE_URL/admin/changefromemail\">";
83         echo "Address emails are sent from <input type=\"text\" name=\"fromemail\" value=\"$confirm_from_address\"><input type=\"submit\" name=\"Update\" value=\"Update\"><br>";
84         echo "</form>"; 
85
86         echo "<table border=\"1\">";
87         echo "<tr><th>Username</th><th>Email Address</th><th>Full Name</th><th>Description</th><th>Status</th><th>Control</th></tr>";
88         foreach(gwvpmini_GetUsers() as $key => $val) {
89                 $id = $key;
90                 $un = $val["username"];
91                 $em = $val["email"];
92                 $fn = $val["fullname"];
93                 $ds = $val["desc"];
94                 $st_t = $val["status"];
95                 $st_l = $val["level"];
96                 
97                 $level = "WTF";
98                 if($st_l == 0) $level = "User";
99                 if($st_l == 1) $level = "Admin";
100                 
101                 $status = "";
102                 if($st_t[0] == "1") {
103                         $status = ", disabled";
104                 }
105                 if($st_t[0] == "2") {
106                         $vl = explode(":", $st_t);
107                         error_log("VL: ".print_r($vl, true));
108                         $status = " Awaiting Confirmation (<a href=\"$BASE_URL/register/confirmreg/".$vl[1]."\">Confirm</a>)";
109                 }
110                 
111                 $st = "$level$status";
112                 
113                 $unlval = "<a href=\"$BASE_URL/user/$un\">$un</a>";
114                 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> <a href=\"$BASE_URL/admin/disableuser&id=$id\">Disable</a></td></tr>";
115         }
116         
117         
118         echo "</table>";
119         echo "</td><td>";
120         echo "<h3>Create User</h3>";
121         echo "<form method=\"post\" action=\"$BASE_URL/admin/user/create\">";
122         echo "<table border=\"1\">";\r
123         echo "<tr><th>Username</th><td><input type=\"text\" name=\"username\"></td></tr>";
124         echo "<tr><th>Password</th><td><input type=\"password\" name=\"password\"></td></tr>";
125         echo "<tr><th>Confirm Password</th><td><input type=\"password\" name=\"confpassword\"></td></tr>";
126         echo "<tr><th>Full Name</th><td><input type=\"text\" name=\"fullname\"></td></tr>";
127         echo "<tr><th>Description</th><td><input type=\"text\" name=\"desc\"></td></tr>";
128         echo "<tr><th>Email</th><td><input type=\"text\" name=\"email\"></td></tr>";
129         echo "<tr><th>Confirm Email</th><td><input type=\"text\" name=\"confemail\"></td></tr>";
130         echo "<tr><th>Admin?</th><td><input type=\"checkbox\" name=\"isadmin\"></td></tr>";
131         echo "<tr><td colspan=\"2\"><input type=\"submit\" name=\"Add\" value=\"Add\"></td></tr>";
132         echo "</table>";
133         echo "</form>";
134         echo "</td></tr></table>";
135         
136         $totalrepos = gwvpmini_GetNRepos();
137         echo "<h2>Repo's - $totalrepos</h2>";
138         echo "<table border=\"1\">";
139         echo "<tr><th>Repo Name</th><th>Repo Desc</th><th>Owner</th><th>Control</th></tr>";
140         foreach(gwvpmini_GetRepos() as $key => $val) {
141                 $id = $key;
142                 $rn = $val["name"];
143                 $ds = $val["desc"];
144                 $ow = $val["owner"];
145                 echo "<tr><td><a href=\"$BASE_URL/view/$rn\">$rn</a></td><td>$ds</td><td>$ow</td><td><a href=\"$BASE_URL/admin/removeuser&id=$id\">Remove</a> <a href=\"$BASE_URL/admin/disableuser&id=$id\">Disable</a></td></tr>";
146         }
147         echo "</table>";
148 }\r
149
150
151 function gwvpmini_AdminUserCreate()
152 {
153         global $BASE_URL;
154         
155         $name = $_REQUEST["username"];
156         $pass1 = $_REQUEST["password"];
157         $pass2 = $_REQUEST["confpassword"];\r
158         $fname = $_REQUEST["fullname"];
159         $desc = $_REQUEST["desc"];
160         $email1 = $_REQUEST["email"];\r
161         $email2 = $_REQUEST["confemail"];
162         if(isset($_REQUEST["isadmin"])) $level = 1;
163         else $level = 0;\r
164         
165         $id = gwvpmini_GetUserId($name);
166         
167         if(!$id) {
168                 if($pass1 != $pass2) {
169                         gwvpmini_SendMessage("error", "Passwords dont match");
170                         header("Location: $BASE_URL/admin");
171                         return;
172                 }
173                 if($email1 != $email2) {
174                         gwvpmini_SendMessage("error", "Email Addresses dont match");
175                         header("Location: $BASE_URL/admin");
176                         return;
177                 }
178                 
179                 gwvpmini_AddUser($name, $pass1, $fname, $email1, $desc, $level, 0);
180                 gwvpmini_SendMessage("info", "User $fname created");
181         } else {
182                 gwvpmini_SendMessage("error", "User $name already exists, cant create");
183         }
184         
185         header("Location: $BASE_URL/admin");
186         return;
187         
188 }
189
190
191 function gwvpmini_ChangeRegistration()
192 {
193         global $can_register, $BASE_URL;
194         
195         if($can_register) {
196                 gwvpmini_setConfigVal("canregister", "0");
197                 gwvpmini_SendMessage("info", "Registration disabled");
198         } else {
199                 gwvpmini_setConfigVal("canregister", "1");\r
200                 gwvpmini_SendMessage("info", "Registration enabled");
201         }
202         
203         header("Location: $BASE_URL/admin");
204 }
205
206
207 function gwvpmini_ChangeRegConfig()
208 {
209         global $reg_reqs_confirm, $BASE_URL;\r
210         \r
211         if($reg_reqs_confirm) {\r
212                 gwvpmini_setConfigVal("registerrequiresconfirm", "0");\r
213                 gwvpmini_SendMessage("info", "Registration Confirmation disabled");\r
214         } else {\r
215                 gwvpmini_setConfigVal("registerrequiresconfirm", "1");\r
216                 gwvpmini_SendMessage("info", "Registration Confirmation enabled");\r
217         }\r
218         \r
219         header("Location: $BASE_URL/admin");
220 }
221
222 function gwvpmini_ChangeFromAddress()
223 {
224         global $BASE_URL;
225         
226         $newfrom = $_REQUEST["fromemail"];\r
227         \r
228         gwvpmini_setConfigVal("eamilfromaddress", "$newfrom");\r
229         gwvpmini_SendMessage("info", "Email from address updated to \"$newfrom\"");\r
230         \r
231         header("Location: $BASE_URL/admin");\r
232         
233 }
234
235 function gwvpmini_RemoveUserPageBody()
236 {
237         global $BASE_URL;
238         
239         $uid = -1;
240         if(isset($_REQUEST["q"])) {\r
241                 $query = $_REQUEST["q"];\r
242                 $qspl = explode("/", $query);\r
243                 if(isset($qspl[2])) {
244                         $uid = $qspl[2];\r
245                 }
246         }
247         
248         if($uid != -1) {
249                 $details = gwvpmini_GetUsers($uid, 1);
250                 $username = $details[$uid]["username"];
251                 $fullname = $details[$uid]["fullname"];
252                 $email = $details[$uid]["email"];
253                 $desc = $details[$uid]["desc"];
254                 
255                 error_log("user dets:".print_r($details, true));
256                 
257                 echo "<h2>Remove User?</h2>";
258                 echo "Are you sure you wish to remove the user, $username ($uid) - $fullname - $email - $desc?<br>";
259                 echo "<a href=\"$BASE_URL/admin/confremoveuser/$uid\">Yes</a> <a href=\"$BASE_URL/admin\">No</a><br>";
260         } else {
261                 echo "<h2>How?</h2>";
262                 echo "You got here in a weird way or the uid of the user you were trying to delete is invalid<br>";
263                 echo "<a href=\"$BASE_URL/admin\">Go Back</a>";
264         }
265         
266 }
267
268 function gwvpmini_ConfRemoveUser()\r
269 {\r
270         global $BASE_URL;\r
271 \r
272         $uid = -1;\r
273         if(isset($_REQUEST["q"])) {\r
274                 $query = $_REQUEST["q"];\r
275                 $qspl = explode("/", $query);\r
276                 if(isset($qspl[2])) {\r
277                         $uid = $qspl[2];\r
278                 }\r
279         }\r
280 \r
281         if($uid > 0) {
282                 $details = gwvpmini_getUser(null, null, $uid);
283                 $uname = $details["username"];
284                 gwvpmini_RemoveUser($uid);
285                 gwvpmini_SendMessage("info", "User $uname ($uid) has been removed");\r
286         } else {
287                 gwvpmini_SendMessage("info", "Problem deleteing user with uid $uid");
288         }\r
289
290         header("Location: $BASE_URL/admin");\r
291 }\r
292
293 ?>