void AccountGroupsMembershipsManage_ApproveMember(object sender, ModuleModeEventArgs e) { AuthoriseRequestSid(); long groupId; long userId; try { string[] idString = core.Http.Query["id"].Split(new char[] { ',' }); groupId = long.Parse(idString[0]); userId = long.Parse(idString[1]); } catch { DisplayGenericError(); return; } try { UserGroup thisGroup = new UserGroup(core, groupId); if (thisGroup.IsGroupOperator(LoggedInMember.ItemKey)) { try { User member = new User(core, userId); if (thisGroup.IsGroupMemberPending(member.ItemKey)) { // we can approve the pending membership db.BeginTransaction(); long rowsChanged = db.UpdateQuery(string.Format("UPDATE group_members SET group_member_approved = 1, group_member_date_ut = UNIX_TIMESTAMP() WHERE group_id = {0} AND user_id = {1} AND group_member_approved = 0;", thisGroup.GroupId, member.UserId)); if (rowsChanged > 0) // committ the change { db.UpdateQuery(string.Format("UPDATE group_info SET group_members = group_members + 1 WHERE group_id = {0}", thisGroup.GroupId)); SetRedirectUri(thisGroup.MemberlistUri); core.Display.ShowMessage("Membership Approved", "You have approved the membership for the user."); return; } else { core.Display.ShowMessage("Not Pending", "This member is not pending membership. They may have cancelled their request, or been approved by another operator."); return; } } else { core.Display.ShowMessage("Not Pending", "This member is not pending membership. They may have cancelled their request, or been approved by another operator."); return; } } catch { core.Display.ShowMessage("Error", "An error has occured, group member does not exist, go back."); return; } } else { core.Display.ShowMessage("Not Group Operator", "You must be an operator of the group to approve new memberships."); return; } } catch { core.Display.ShowMessage("Error", "An error has occured, group does not exist, go back."); return; } }
void AccountGroupsMembershipsManage_Leave(object sender, ModuleModeEventArgs e) { AuthoriseRequestSid(); long groupId = 0; try { groupId = long.Parse(core.Http.Query["id"]); } catch { core.Display.ShowMessage("Error", "Unable to complete action, missing data. Go back and try again."); return; } try { UserGroup thisGroup = new UserGroup(core, groupId); bool isGroupMemberPending = thisGroup.IsGroupMemberPending(LoggedInMember.ItemKey); bool isGroupMember = thisGroup.IsGroupMember(LoggedInMember.ItemKey); DataTable operatorsTable = db.Query(string.Format("SELECT user_id FROM group_operators WHERE group_id = {0} AND user_id = {1};", thisGroup.GroupId, LoggedInMember.Id)); if (operatorsTable.Rows.Count > 0) { SetRedirectUri(thisGroup.Uri); core.Display.ShowMessage("Cannot Leave Group", "You cannot leave this group while you are an operator of the group."); return; } else { if (isGroupMember) { db.BeginTransaction(); db.UpdateQuery(string.Format("DELETE FROM group_members WHERE group_id = {0} AND user_id = {1};", thisGroup.GroupId, LoggedInMember.Id)); long officerRowsChanged = db.UpdateQuery(string.Format("DELETE FROM group_officers WHERE group_id = {0} AND user_id = {1};", thisGroup.GroupId, LoggedInMember.Id)); db.UpdateQuery(string.Format("UPDATE group_info SET group_members = group_members - 1, group_officers = group_officers - {1} WHERE group_id = {0}", thisGroup.GroupId, officerRowsChanged)); SetRedirectUri(thisGroup.Uri); core.Display.ShowMessage("Left Group", "You have left the group."); return; } else if (isGroupMemberPending) { db.UpdateQuery(string.Format("DELETE FROM group_members WHERE group_id = {0} AND user_id = {1};", thisGroup.GroupId, LoggedInMember.UserId)); SetRedirectUri(thisGroup.Uri); core.Display.ShowMessage("Left Group", "You are no longer pending membership of the group."); return; } else { SetRedirectUri(thisGroup.Uri); core.Display.ShowMessage("Not a Member", "You cannot leave a group you are not a member of."); return; } } } catch (InvalidGroupException) { core.Display.ShowMessage("Group does not Exist", "The group you are trying to leave does not exist."); return; } }