protected void dlGroups_ItemCommand(object source, DataListCommandEventArgs e) { int groupID = Convert.ToInt32(e.CommandArgument); switch (e.CommandName) { case "Accept" : GroupMember groupMember = GroupMember.Fetch(groupID, CurrentUserSession.Username); if (groupMember != null) { groupMember.Active = true; groupMember.Save(); Group group = Group.Fetch(groupID); if (group != null) { group.ActiveMembers++; group.Save(); } #region Add Event Event newEvent = new Event(CurrentUserSession.Username); newEvent.Type = Event.eType.FriendJoinedGroup; FriendJoinedGroup friendJoinedGroup = new FriendJoinedGroup(); friendJoinedGroup.GroupID = groupID; newEvent.DetailsXML = Misc.ToXml(friendJoinedGroup); newEvent.Save(); string[] usernames = Classes.User.FetchMutuallyFriends(CurrentUserSession.Username); foreach (string friendUsername in usernames) { if (Config.Users.NewEventNotification) { if (group != null) { string text = String.Format("Your friend {0} has joined the {1} group".Translate(), "<b>" + CurrentUserSession.Username + "</b>", Server.HtmlEncode(group.Name)); int imageID = 0; try { imageID = Photo.GetPrimary(CurrentUserSession.Username).Id; } catch (NotFoundException) { imageID = ImageHandler.GetPhotoIdByGender(CurrentUserSession.Gender); } string thumbnailUrl = ImageHandler.CreateImageUrl(imageID, 50, 50, false, true, true); Classes.User.SendOnlineEventNotification(CurrentUserSession.Username, friendUsername, text, thumbnailUrl, UrlRewrite.CreateShowGroupUrl( group.ID.ToString())); } } } #endregion } break; case "Reject" : GroupMember.Delete(Convert.ToInt32(e.CommandArgument), CurrentUserSession.Username); break; } Response.Redirect("~/Groups.aspx?show=mg"); }
private void JoinGroup(string answer) { if (CurrentUserSession != null) { if (CurrentGroup != null) { if (CurrentGroup.AccessLevel == Group.eAccessLevel.Private && !CurrentUserSession.IsAdmin()) { ((PageBase) Page).StatusPageMessage = Lang.Trans( "This is a private group and only invited users are allowed to join. Please use 'Pending Invitations' link in the Group section to join."); Response.Redirect("~/ShowStatus.aspx"); return; } string username = CurrentUserSession.Username; if (GroupMember.IsBanned(username, GroupID)) { ShowMessage(Misc.MessageType.Success, Lang.Trans("You are banned!")); return; } int memberOf = GroupMember.Fetch(username).Length; int maxGroupsPermitted = 0;// Config.Groups.MaxGroupsPerMember; if (CurrentUserSession.BillingPlanOptions.MaxGroupsPerMember.Value > maxGroupsPermitted) maxGroupsPermitted = CurrentUserSession.BillingPlanOptions.MaxGroupsPerMember.Value; if (CurrentUserSession.Level != null && CurrentUserSession.Level.Restrictions.MaxGroupsPerMember > maxGroupsPermitted) maxGroupsPermitted = CurrentUserSession.Level.Restrictions.MaxGroupsPerMember; if (memberOf >= maxGroupsPermitted) { ShowMessage(Misc.MessageType.Error, String.Format( Lang.Trans( "You are already a member of {0} groups. Please leave one of them first."), maxGroupsPermitted)); return; } GroupMember groupMember = new GroupMember(CurrentGroup.ID, username); groupMember.Active = CurrentGroup.AccessLevel == Group.eAccessLevel.Public || CurrentUserSession.IsAdmin() ? true : false; groupMember.Type = CurrentUserSession.IsAdmin() ? GroupMember.eType.Admin : GroupMember.eType.Member; groupMember.JoinAnswer = answer; groupMember.Save(); if (groupMember.Active) { #region Add Event Event newEvent = new Event(CurrentUserSession.Username); newEvent.Type = Event.eType.FriendJoinedGroup; FriendJoinedGroup friendJoinedGroup = new FriendJoinedGroup(); friendJoinedGroup.GroupID = CurrentGroup.ID; newEvent.DetailsXML = Misc.ToXml(friendJoinedGroup); newEvent.Save(); string[] usernames = User.FetchMutuallyFriends(CurrentUserSession.Username); foreach (string friendUsername in usernames) { if (Config.Users.NewEventNotification) { string text = String.Format("Your friend {0} has joined the {1} group".Translate(), "<b>" + CurrentUserSession.Username + "</b>", Server.HtmlEncode(CurrentGroup.Name)); int imageID = 0; try { imageID = Photo.GetPrimary(CurrentUserSession.Username).Id; } catch (NotFoundException) { imageID = ImageHandler.GetPhotoIdByGender(CurrentUserSession.Gender); } string thumbnailUrl = ImageHandler.CreateImageUrl(imageID, 50, 50, false, true, true); Classes.User.SendOnlineEventNotification(CurrentUserSession.Username, friendUsername, text, thumbnailUrl, UrlRewrite.CreateShowGroupUrl( CurrentGroup.ID.ToString())); } } #endregion } CurrentGroupMember = groupMember; if (groupMember.Active) { CurrentGroup.ActiveMembers++; CurrentGroup.Save(); } if (CurrentGroup.AccessLevel == Group.eAccessLevel.Moderated && !CurrentUserSession.IsAdmin()) { ((PageBase) Page).StatusPageMessage = Lang.Trans("Your join request has been sent."); Response.Redirect("~/ShowStatus.aspx"); } } mvViewGroup.SetActiveView(vGroupInfo); OnJoinPanelClose(new EventArgs()); } }
protected void dlPendingMembers_ItemCommand(object source, DataListCommandEventArgs e) { string currentUsername = ((PageBase) Page).CurrentUserSession.Username; string pendingUsername = (string) e.CommandArgument; GroupMember groupMember = GroupMember.Fetch(GroupID, pendingUsername); switch (e.CommandName) { case "Approve" : if (groupMember != null) { groupMember.Active = true; groupMember.Save(); CurrentGroup.ActiveMembers++; CurrentGroup.Save(); try { User toUser = User.Load(pendingUsername); MiscTemplates.ApproveGroupMemberMessage approveGroupMemberTemplate = new MiscTemplates.ApproveGroupMemberMessage(toUser.LanguageId); Message msg = new Message(currentUsername, pendingUsername); msg.Body = approveGroupMemberTemplate.Message.Replace("%%GROUP%%", Parsers.ProcessGroupName(CurrentGroup.Name)); msg.Send(); #region Add Event Event newEvent = new Event(pendingUsername); newEvent.Type = Event.eType.FriendJoinedGroup; FriendJoinedGroup friendJoinedGroup = new FriendJoinedGroup(); friendJoinedGroup.GroupID = CurrentGroup.ID; newEvent.DetailsXML = Misc.ToXml(friendJoinedGroup); newEvent.Save(); int imageID = 0; try { imageID = Photo.GetPrimary(pendingUsername).Id; } catch (NotFoundException) { imageID = ImageHandler.GetPhotoIdByGender(toUser.Gender); } string[] usernames = User.FetchMutuallyFriends(pendingUsername); foreach (string friendUsername in usernames) { if (Config.Users.NewEventNotification) { string text = String.Format("Your friend {0} has joined the {1} group".Translate(), "<b>" + pendingUsername + "</b>", Server.HtmlEncode(CurrentGroup.Name)); string thumbnailUrl = ImageHandler.CreateImageUrl(imageID, 50, 50, false, true, true); User.SendOnlineEventNotification(pendingUsername, friendUsername, text, thumbnailUrl, UrlRewrite.CreateShowGroupUrl( CurrentGroup.ID.ToString())); } } #endregion } catch (NotFoundException) { } } break; case "Reject" : if (groupMember != null) { GroupMember.Delete(GroupID, pendingUsername); try { User user = User.Load(pendingUsername); MiscTemplates.RejectGroupMemberMessage rejectGroupMemberTemplate = new MiscTemplates.RejectGroupMemberMessage(user.LanguageId); Message msg = new Message(currentUsername, pendingUsername); msg.Body = rejectGroupMemberTemplate.Message.Replace("%%GROUP%%", Parsers.ProcessGroupName(CurrentGroup.Name)); msg.Send(); } catch (NotFoundException) { } } break; } }