Allow removal of members from groups.

This commit is contained in:
Richard Underwood 2016-10-04 10:05:22 +01:00
parent 417e9ca848
commit d915137eff
3 changed files with 48 additions and 5 deletions

View file

@ -100,8 +100,8 @@ case "addmember":
if (user_exists($user)) { if (user_exists($user)) {
if(is_group_member($groupid,$user)) { if(is_group_member($groupid,$user)) {
jtable_respond(null, 'error', "User already a member of the group"); jtable_respond(null, 'error', "User already a member of the group");
} elseif(add_group_member($groupid,$user)) { } elseif(!is_null($id=add_group_member($groupid,$user))) {
$entry = array('user' => $user); $entry = array('id' => $id,'user' => $user);
jtable_respond($entry, 'single'); jtable_respond($entry, 'single');
} else { } else {
jtable_respond(null, 'error', "Failed to add user to group"); jtable_respond(null, 'error', "Failed to add user to group");
@ -114,6 +114,20 @@ case "addmember":
} }
break; break;
case "removemember":
$id = isset($_POST['id']) ? $_POST['id'] : '';
if ($id != '') {
if(remove_group_member($id)) {
jtable_respond(null, 'delete');
} else {
jtable_respond(null, 'error', "Failed to delete user from group");
}
} else {
jtable_respond(null, 'error', 'ID not specified');
}
break;
default: default:
jtable_respond(null, 'error', 'Invalid action'); jtable_respond(null, 'error', 'Invalid action');
break; break;

View file

@ -24,7 +24,7 @@ function get_group_info($name) {
function get_group_name($id) { function get_group_name($id) {
$db = get_db(); $db = get_db();
$q = $db->prepare('SELECT * FROM groups WHERE id = ?'); $q = $db->prepare('SELECT name FROM groups WHERE id = ?');
$q->bindValue(1, $id, SQLITE3_INTEGER); $q->bindValue(1, $id, SQLITE3_INTEGER);
$r = $q->execute(); $r = $q->execute();
$ret = $r->fetchArray(SQLITE3_NUM); $ret = $r->fetchArray(SQLITE3_NUM);
@ -142,12 +142,36 @@ function add_group_member($id,$user) {
$q->bindValue(1, $id, SQLITE3_INTEGER); $q->bindValue(1, $id, SQLITE3_INTEGER);
$q->bindValue(2, $userid, SQLITE3_INTEGER); $q->bindValue(2, $userid, SQLITE3_INTEGER);
$ret = $q->execute(); $ret = $q->execute();
$db->close();
if($ret) { if($ret) {
writelog("Added user $user to group " . get_group_name($id) . "."); writelog("Added user $user to group " . get_group_name($id) . ".");
return $db->lastInsertRowID();
} else { } else {
writelog("Failed to add user $user to group " . get_group_name($id) . "."); writelog("Failed to add user $user to group " . get_group_name($id) . ".");
return null;
}
}
function remove_group_member($id) {
$db = get_db();
$q = $db->prepare('SELECT groups.name,users.emailaddress FROM groupmembers,users,groups WHERE groupmembers.id=? AND groupmembers.user=users.id AND groupmembers."group"=groups.id');
$q->bindValue(1, $id, SQLITE3_INTEGER);
$r = $q->execute();
$ret = $r->fetchArray(SQLITE3_NUM);
$group=$ret[0];
$user=$ret[1];
$q->close();
$q = $db->prepare('DELETE FROM groupmembers WHERE id=?');
$q->bindValue(1, $id, SQLITE3_INTEGER);
$ret = $q->execute();
$db->close();
if($ret) {
writelog("Removed user $user from group $group.");
} else {
writelog("Failed to remove user $user from group $group.");
} }
return $ret; return $ret;
} }

View file

@ -1069,9 +1069,14 @@ $(document).ready(function () {
$('#Groups').jtable('openChildTable', $('#Groups').jtable('openChildTable',
$img.closest('tr'), { $img.closest('tr'), {
title: 'Members of ' + data.record.name, title: 'Members of ' + data.record.name,
messages: {
addNewRecord: 'Add group member',
deleteConfirmation: 'This user will be removed from the group. Are you sure?'
},
actions: { actions: {
listAction: 'groups.php?action=listmembers&groupid=' + data.record.id, listAction: 'groups.php?action=listmembers&groupid=' + data.record.id,
createAction: 'groups.php?action=addmember&groupid=' + data.record.id createAction: 'groups.php?action=addmember&groupid=' + data.record.id,
deleteAction: 'groups.php?action=removemember&groupid=' + data.record.id
}, },
fields: { fields: {
id: { id: {