Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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());
            }
        }
Esempio n. 3
0
        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;
            }
        }