3 // setup the call me function for useradmin - matches on url of admin/users
4 $CALL_ME_FUNCTIONS["useradmin"] = "gwvp_UserAdminCallMe";
6 $MENU_ITEMS["10users"]["text"] = "Users/Groups";
7 $MENU_ITEMS["10users"]["link"] = "$BASE_URL/admin/users";
10 function gwvp_UserAdminCallMe()
12 if(isset($_REQUEST["q"])) {
13 $query = $_REQUEST["q"];
14 $qspl = explode("/", $query);
15 if(isset($qspl[0]) && isset($qspl[1])) {
16 if($qspl[0] == "admin" && $qspl[1] == "users") {
20 return "gwvp_AddUserPage";
23 return "gwvp_groupMemberChange";
26 return "gwvp_AddGroupPage";
29 return "gwvp_ModifyUserPage";
32 return "gwvp_ModifyGroupPage";
35 return "gwvp_UserAdminPage";
38 return "gwvp_UserAdminPage";
48 function gwvp_AddUserPage()
52 $email = $_REQUEST["email"];
53 $fullname = $_REQUEST["fullname"];
54 $pass1 = $_REQUEST["pass1"];
55 $pass2 = $_REQUEST["pass2"];
56 $username = $_REQUEST["username"];
57 $desc = $_REQUEST["desc"];
58 $sendvalid = isset($_REQUEST["sendvalidation"]);
60 // now for some validation
63 if(!gwvp_checkEmail($email)) {
65 $message .= "EMail address invalid. ";
68 // function gwvp_getUser($username=null, $email=null, $id=null)
69 if(gwvp_getUser(null, $email, null)!=null) {
72 $message .= "EMail address already registered. ";
75 if(gwvp_getUser($username)!= null) {
78 $message .= "Username already exists. ";
81 if($pass1 != $pass2) {
84 $message .= "Passwords dont match. ";
87 if($pass1 == "" && $pass2 == "" && !$sendvalid) {
90 $message .= "Password was blank. ";
93 // otherwise, its all good, proceed with user creation
95 $_SESSION["sendback_owner"] = "users";
96 $sb["email"] = $email;
97 if($staremail) $sb["emailstar"] = true;
98 $sb["fullname"] = $fullname;
99 $sb["username"] = $username;
100 if($starusername) $sb["usernamestar"] = true;
102 if($starpass) $sb["passwordstar"] = true;
104 $_SESSION["sendback"] = true;
105 $_SESSION["sendback_data"] = base64_encode(serialize($sb));
106 gwvp_SendMessage("error", "$message");
107 header("Location: $BASE_URL/admin/users");
111 // TODO: we need to do alot of checking here - that can come later
112 if(gwvp_createUser($email, $fullname, $pass1, $username, $desc, 0)) {
113 gwvp_SendMessage("info", "user $username, $fullname ($email) created");
114 header("Location: $BASE_URL/admin/users");
117 gwvp_SendMessage("error", "error creating user for some unknown reason");
118 header("Location: $BASE_URL/admin/users");
124 echo "<tr><td>EMail</td><td><input type=\"text\" name=\"email\"></td>";
125 echo "<td>Full Name</td><td><input type=\"text\" name=\"fullname\"></td></tr>";
126 echo "<tr><td>Password</td><td><input type=\"text\" name=\"pass1\"></td>";
127 echo "<td>Password Confirm</td><td><input type=\"text\" name=\"pass2\"></td></tr>";
128 echo "<tr><td>Username</td><td><input type=\"text\" name=\"username\"></td>";
129 echo "<td>Description</td><td><input type=\"text\" name=\"desc\"></td></tr>";
134 function gwvp_AddGroupPage()
137 * echo "<tr><td>Group Name</td><td><input type=\"text\" name=\"groupname\"><td></tr>";
138 echo "<tr><td>Admin Group?</td><td><input type=\"checkbox\" name=\"admingroup\" class=\"mycheckbox\"></td></tr>";
139 echo "<tr><td>Owner</td><td><div><select class=\"myselect\" name=\"groupowner\">";
145 * $presetname = " value=\"".$data["groupname"]."\"";
146 $presetdesc = " value=\"".$data["groupdesc"]."\"";
147 $presetgroupadmin = " ".$data["admingroup"]."\"";
148 $presetowner = " value=\"".$data["groupowner"]."\"";
152 $gname = $_REQUEST["groupname"];
153 $isadmin = isset($_REQUEST["admingroup"]);
154 $gdesc = $_REQUEST["groupdesc"];
155 $owner = $_REQUEST["groupowner"];
157 if(gwvp_getGroup(null, $gname)) {
158 $_SESSION["sendback_owner"] = "groups";
159 $_SESSION["sendback"] = true;
161 $data["groupname"] = $gname;
162 $data["groupdesc"] = $gdesc;
163 $data["groupowner"] = $owner;
164 if($isadmin) $data["admingroup"] = "checked";
165 else $data["admingroup"] = "";
166 $data["groupnamestar"] = true;
168 gwvp_SendMessage("error", "Group name in use");
170 $_SESSION["sendback_data"] = base64_encode(serialize($data));
172 header("Location: $BASE_URL/admin/users");
176 // gwvp_createGroup($group_name, $is_admin, $owner_id)
177 gwvp_createGroup("$gname", $gdesc, $isadmin, $owner);
178 // we also need to add the owner to the group
179 gwvp_addGroupMember(gwvp_getUserName($owner), $gname);
182 header("Location: $BASE_URL/admin/users");
187 function gwvp_UserAdminPage()
189 gwvp_goMainPage("gwvp_UserAdminPageBody");
192 function gwvp_ModifyUserPage()
194 gwvp_goMainPage("gwvp_ModifyUserPageBody");
197 function gwvp_ModifyGroupPage()
199 gwvp_goMainPage("gwvp_ModifyGroupPageBody");
202 function gwvp_ModifyUserPageBody()
204 //error_log("modify user body - coming in");
205 if(!gwvp_CheckAuthLevel("admin")) {
206 gwvp_AuthNoPermsBody();
212 if(isset($_REQUEST["q"])) {
213 $query = $_REQUEST["q"];
214 $qspl = explode("/", $query);
218 echo "modify user $uid";
221 function gwvp_groupMemberChange()
223 global $LOGIN_TYPE, $BASE_URL;
227 if(isset($_REQUEST["q"])) {
228 $query = $_REQUEST["q"];
229 $qspl = explode("/", $query);
232 error_log("into groupmemberchange with $gid");
237 if(isset($_REQUEST["add"])) {
238 error_log("$gid add set to ".$_REQUEST["add"]);
240 if(isset($_REQUEST["membersout"])) {
241 foreach($_REQUEST["membersout"] as $uid) {
242 error_log("would add $uid from $gid");
243 gwvp_addGroupMemberByID($uid, $gid);
248 if(isset($_REQUEST["remove"])) {
249 error_log("$gid remove set to ".$_REQUEST["remove"]);
250 // this is a remove op
251 if(isset($_REQUEST["membersin"])) {
252 foreach($_REQUEST["membersin"] as $uid) {
253 error_log("would remote $uid from $gid");
254 gwvp_deleteGroupMemberByID($uid, $gid);
259 error_log("redirect to $BASE_URL/admin/users/modifygroup/$gid");
260 header("Location: $BASE_URL/admin/users/modifygroup/$gid");
261 //gwvp_goMainPage("gwvp_ModifyGroupPageBody");
266 function gwvp_ModifyGroupPageBody()
268 global $LOGIN_TYPE, $BASE_URL;
271 if(isset($_REQUEST["q"])) {
272 $query = $_REQUEST["q"];
273 $qspl = explode("/", $query);
277 $users = gwvp_getUsers();
279 $ginfo = gwvp_getGroup($gid);
280 $groupname = $ginfo["name"];
281 $groupdesc = $ginfo["description"];
282 if($ginfo["isadmin"]) $admin = "checked";
285 echo "<h2>Modify Group - $groupname</h2>";
286 echo "<form method=\"post\" action=\"$BASE_URL/admin/users/groupmodify/$gid\">";
288 echo "<tr><td>Description</td><td><input type=\"text\" name=\"groupdesc\" value=\"$groupdesc\"></td></tr>";
289 echo "<tr><td>Admin</td><td><input type=\"checkbox\" name=\"is_admin\" $admin></td></tr>";
290 echo "<tr><td><input type=\"submit\" name=\"change\" value=\"Change\"></td></tr>";
295 echo "<h3>Group Membership</h3>";
296 echo "<form method=\"post\" action=\"$BASE_URL/admin/users/groupmember/$gid\">";
297 echo "<table border=\"1\"><tr><th>Members</th><th></th><th>All Users</th></tr>";
303 echo "<select name=\"membersin[]\" size=\"20\" multiple=\"true\">";
304 foreach($users as $u_users) {
305 $uid = $u_users["id"];
306 $email = $u_users["email"];
307 $username = $u_users["username"];
308 $fullname = $u_users["fullname"];
309 if(gwvp_IsGroupMember($email, $groupname)) {
310 echo "<option value=\"$uid\">$username, $fullname ($email)</option>";
322 echo "<input type=\"submit\" name=\"add\" value=\"<<\"><br>";
323 echo "<input type=\"submit\" name=\"remove\" value=\">>\"><br>";
331 echo "<select name=\"membersout[]\" size=\"20\" multiple=\"true\">";
332 foreach($users as $u_users) {
333 $uid = $u_users["id"];
334 $email = $u_users["email"];
335 $username = $u_users["username"];
336 $fullname = $u_users["fullname"];
337 if(!gwvp_IsGroupMember($email, $groupname)) {
338 echo "<option value=\"$uid\">$username, $fullname ($email)</option>";
345 echo "</td></tr></table>";
355 function gwvp_UserAdminPageBody()
357 global $LOGIN_TYPE, $BASE_URL;
359 $groups = gwvp_getGroups();
360 $users = gwvp_getUsers();
362 echo "<h2>Users and Groups</h2>";
363 echo "On this page you can manage users, groups, group membership and update your profile<br>";
366 echo "<tr><td colspan=\"2\"><hr></td></tr>";
369 // Header part of table
370 // user self-management bit
371 if($LOGIN_TYPE != "anon") {
372 echo "<tr><td valign=\"top\"><h3>My Profile</h3></td><td><h3>My Groups</h3></td></tr>";
376 echo "<td valign=\"top\">";
377 echo "User profile bits go here";
380 // now the group bit for the user
381 echo "<td valign=\"top\">";
382 echo "User owned groups, and groups their a member of go here";
386 echo "<tr><td colspan=\"2\"><hr></td></tr>";
390 if($LOGIN_TYPE == "admin") {
397 $presetfullname = "";
399 $presetusername = "";
401 if(isset($_SESSION["sendback_owner"])) {
402 if($_SESSION["sendback_owner"] == "users") {
404 * $sb["email"] = $email;
405 if($staremail) $sb["emailstar"] = true;
406 $sb["fullname"] = $fullname;
407 $sb["username"] = $username;
408 if($starusername) $sb["usernamestar"] = true;
410 if($starpass) $sb["passwordstar"] = true;
413 $data = unserialize(base64_decode($_SESSION["sendback_data"]));
415 $presetemail = " value=\"".$data["email"]."\"";
416 $presetfullname = " value=\"".$data["fullname"]."\"";
417 $presetusername = " value=\"".$data["username"]."\"";
418 $presetdesc = " value=\"".$data["desc"]."\"";
420 if(isset($data["emailstar"])) $staremail = "<img src=\"$BASE_URL/images/star.jpg\">";
421 if(isset($data["usernamestar"])) $starusername = "<img src=\"$BASE_URL/images/star.jpg\">";
422 if(isset($data["passwordstar"])) $starpass = "<img src=\"$BASE_URL/images/star.jpg\">";
424 unset($_SESSION["sendback"]);
425 unset($_SESSION["sendback_data"]);
426 unset($_SESSION["sendback_owner"]);
430 echo "<tr><td valign=\"top\"><h3>Create User</h3></td><td><h3>Create Group</h3></td></tr>";
433 echo "<tr><td valign=\"top\">";
435 echo "<form method=\"post\" action=\"$BASE_URL/admin/users/adduser\">";
437 echo "<tr><td>EMail</td><td><input type=\"text\" name=\"email\"$presetemail>$staremail</td>";
438 echo "<td>Full Name</td><td><input type=\"text\" name=\"fullname\"$presetfullname></td></tr>";
439 echo "<tr><td>Password</td><td><input type=\"text\" name=\"pass1\">$starpass</td>";
440 echo "<td>Password Confirm</td><td><input type=\"text\" name=\"pass2\">$starpass</td></tr>";
441 echo "<tr><td>Username</td><td><input type=\"text\" name=\"username\"$presetusername>$starusername</td>";
442 echo "<td>Description</td><td><input type=\"text\" name=\"desc\"$presetdesc></td></tr>";
443 echo "<tr><td colspan=\"4\"><input type=\"checkbox\" name=\"sendvalidation\"> Set account locked and send validation email for initial passsword (not implemented)</td></tr>";
444 echo "<tr><td><input type=\"submit\" name=\"Create\" value=\"Create\" class=\"buttons\"></td></tr>";
448 echo "</td><td valign=\"top\">";
452 $presetgroupadmin = "";
455 if(isset($_SESSION["sendback_owner"])) {
456 if($_SESSION["sendback_owner"] == "groups") {
458 * $sb["email"] = $email;
459 if($staremail) $sb["emailstar"] = true;
460 $sb["fullname"] = $fullname;
461 $sb["username"] = $username;
462 if($starusername) $sb["usernamestar"] = true;
464 if($starpass) $sb["passwordstar"] = true;
467 $data = unserialize(base64_decode($_SESSION["sendback_data"]));
469 $presetname = " value=\"".$data["groupname"]."\"";
470 $presetdesc = " value=\"".$data["groupdesc"]."\"";
471 $presetgroupadmin = " ".$data["admingroup"];
472 $presetowner = $data["groupowner"];
474 if(isset($data["groupnamestar"])) $stargroupname = "<img src=\"$BASE_URL/images/star.jpg\">";
476 unset($_SESSION["sendback"]);
477 unset($_SESSION["sendback_data"]);
478 unset($_SESSION["sendback_owner"]);
483 echo "<form method=\"post\" action=\"$BASE_URL/admin/users/addgroup\">";
485 echo "<tr><td>Group Name</td><td><input type=\"text\" name=\"groupname\"$presetname>$stargroupname<td></tr>";
486 echo "<tr><td>Group Description</td><td><input type=\"text\" name=\"groupdesc\"$presetdesc><td></tr>";
487 echo "<tr><td>Admin Group?</td><td><input type=\"checkbox\" name=\"admingroup\" class=\"mycheckbox\"$presetgroupadmin></td></tr>";
488 echo "<tr><td>Owner</td><td><div><select class=\"myselect\" name=\"groupowner\">";
489 foreach($users as $u_users) {
490 $uid = $u_users["id"];
491 $email = $u_users["email"];
492 $username = $u_users["username"];
493 $fullname = $u_users["fullname"];
494 if($presetowner == $uid) {
495 echo "<option value=\"$uid\" selected>$username, $fullname ($email)</option>";
497 echo "<option value=\"$uid\">$username, $fullname ($email)</option>";
501 echo "</select></div></td></tr>";
505 echo "<tr><td><input type=\"submit\" name=\"Create\" value=\"Create\" class=\"buttons\"></td></tr>";
511 echo "<tr><td colspan=\"2\"><hr></td></tr>";
516 // TODO: whats seen here will depend GREATLY on setting in config - need to fix this later
518 echo "<tr><td valign=\"top\"><h3>Users</h3></td><td><h3>Groups</h3></td></tr>";
521 echo "<table border=\"1\">";
522 switch($LOGIN_TYPE) {
524 echo "<tr><th>Username</th><th>Groups</th><th>Description</th></tr>";
527 echo "<tr><th>EMail</th><th>Username</th><th>Full Name</th><th>Groups</th><th>Description</th><th>Admin?</th><th>Status</th><th>Modify</th></tr>";
530 echo "<tr><th>Username</th><th>Groups</th><th>Description</th></tr>";
535 * $returns[$rn]["id"] = $u_res["users_id"];
536 $returns[$rn]["fullname"] = $u_res["user_full_name"];
537 $returns[$rn]["password"] = $u_res["user_password"];
538 $returns[$rn]["username"] = $u_res["user_username"];
539 $returns[$rn]["email"] = $u_res["user_email"];
540 $returns[$rn]["desc"] = $u_res["user_desc"];
541 $returns[$rn]["status"] = $u_res["user_status"];
544 foreach($users as $u_users) {
545 $userid = $u_users["id"];
546 $email = $u_users["email"];
547 $fullname = $u_users["fullname"];
548 $username = $u_users["username"];
549 $desc = $u_users["desc"];
550 $status = $u_users["status"];
551 if(gwvp_IsUserAdmin($email) == 1) {
552 $globaladmin = "Yes";
558 // TODO: sort out group prints here
559 $ingroups = gwvp_getGroupsForUser($email);
561 $ownedgroups = gwvp_getGroupsOwnedByUser($email);
563 //var_dump($ownedgroups);
565 if($ownedgroups == false) $ogroups = "-";
567 foreach($ownedgroups as $gr_u) {
568 $ugroups .= "<font color=\"#3333ff\">$gr_u</font><br>";
574 if($ingroups !== false) foreach($ingroups as $grname) {
575 $isownedgroup = false;
576 if($ownedgroups !== false) foreach($ownedgroups as $gr_u) {
577 if($grname == $gr_u) $isownedgroup = true;
579 if(!$isownedgroup) $ugroups .= "$grname<br>";
583 if($ugroups == "") $ugroups = "-";
585 switch($LOGIN_TYPE) {
587 echo "<tr><td>$username</td><td>$ugroups</td><td>$desc</td></tr>";
590 echo "<tr><td>$email</td><td>$username</td><td>$fullname</td><td>$ugroups</td><td>$desc</td>";
591 echo "<td>$globaladmin</td><td>$status</td><td><a href=\"$BASE_URL/admin/users/modify/$userid\">Modify</a></td></tr>";
594 echo "<tr><td>$username</td><td>$ugroups</td><td>$desc</td></tr>";
602 echo "</td><td valign=\"top\">";
604 // group part of table
606 echo "<table border=\"1\">";
608 switch($LOGIN_TYPE) {
610 echo "<tr><th>Group Name</th><th>Owner</th></tr>";
613 echo "<tr><th>Group Name</th><th>Owner</th><th>Admin Group?</th><th>Modify</th></tr>";
616 echo "<tr><th>Group Name</th><th>Owner</th><th>Admin Group?</th></tr>";
620 foreach($groups as $u_groups) {
622 * $returns[$rn]["id"] = $u_res["groups_id"];
623 $returns[$rn]["name"] = $u_res["groups_name"];
624 if($u_res["groups_is_admin"]=="1") $return[$rn]["admin"] = true;
625 else $return[$rn]["admin"] = false;
626 $returns[$rn]["admin"] = $u_res["groups_is_admin"];
627 $returns[$rn]["ownerid"] = $u_res["groups_owner_id"];
630 $gname = $u_groups["name"];
631 $gid = $u_groups["id"];
632 $owner = gwvp_getUserEmail($u_groups["ownerid"]);
633 if($u_groups["admin"]) $gadmin = "Yes";
636 switch($LOGIN_TYPE) {
638 echo "<tr><td>$gname</td><td>$owner</td></tr>";
641 echo "<tr><td>$gname</td><td>$owner</td><td>$gadmin</td><td><a href=\"$BASE_URL/admin/users/modifygroup/$gid\">Modify</a></td></tr>";
644 echo "<tr><td>$gname</td><td>$owner</td><td>$gadmin</td></tr>";
651 echo "</td></tr></table>";