Example #1
0
    /// <summary>
    /// Handles the UniGrid's OnAction event.
    /// </summary>
    /// <param name="actionName">Name of item (button) that throws event</param>
    /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param>
    protected void gridElem_OnAction(string actionName, object actionArgument)
    {
        switch (actionName)
        {
        case "delete":
        case "approve":
        case "reject":

            // Check MANAGE permission for groups module
            if (!CheckPermissions("cms.groups", CMSAdminControl.PERMISSION_MANAGE, this.GroupID))
            {
                return;
            }

            break;
        }

        if (actionName == "delete")
        {
            // Delete member
            GroupMemberInfoProvider.DeleteGroupMemberInfo(ValidationHelper.GetInteger(actionArgument, 0));
        }
        else if (actionName == "approve")
        {
            // Approve member
            GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(ValidationHelper.GetInteger(actionArgument, 0));
            if (gmi != null)
            {
                gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID;
                gmi.MemberStatus           = GroupMemberStatus.Approved;
                gmi.MemberApprovedWhen     = DateTime.Now;
                gmi.MemberRejectedWhen     = DataHelper.DATETIME_NOT_SELECTED;
                GroupMemberInfoProvider.SetGroupMemberInfo(gmi);
                GroupInfo group = GroupInfoProvider.GetGroupInfo(this.GroupID);
                if ((group != null) && (group.GroupSendWaitingForApprovalNotification))
                {
                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberApproved", CMSContext.CurrentSiteName, gmi, false);
                }
            }
        }
        else if (actionName == "reject")
        {
            // Reject member
            GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(ValidationHelper.GetInteger(actionArgument, 0));
            if (gmi != null)
            {
                gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID;
                gmi.MemberStatus           = GroupMemberStatus.Rejected;
                gmi.MemberApprovedWhen     = DataHelper.DATETIME_NOT_SELECTED;
                gmi.MemberRejectedWhen     = DateTime.Now;
                GroupMemberInfoProvider.SetGroupMemberInfo(gmi);
                GroupInfo group = GroupInfoProvider.GetGroupInfo(this.GroupID);
                if ((group != null) && (group.GroupSendWaitingForApprovalNotification))
                {
                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberRejected", CMSContext.CurrentSiteName, gmi, false);
                }
            }
        }
        this.RaiseOnAction(actionName, actionArgument);
    }
Example #2
0
        /// <summary>
        /// 转换_文本到群成员列表信息
        /// </summary>
        /// <param name="source">源</param>
        /// <param name="lsGm">群成员列表</param>
        /// <returns></returns>
        private static bool ConvertStrToGroupMemberInfos(string source, ref List <GroupMemberInfo> lsGm)
        {
            if (source == string.Empty)
            {
                return(false);
            }
            var data = source.DeBase64();

            if (data == null || data.Length < 10)
            {
                return(false);
            }
            var u     = new Unpack(data);
            var count = u.GetInt();

            for (var i = 0; i < count; i++)
            {
                if (u.Len() <= 0)
                {
                    return(false);
                }
                var gm = new GroupMemberInfo();
                if (!ConvertAnsiHexToGroupMemberInfo(u.GetToken(), ref gm))
                {
                    return(false);
                }
                lsGm.Add(gm);
            }
            return(true);
        }
Example #3
0
        public virtual void RemoveMember(User operationUser, Member member)
        {
            if (operationUser == null)
            {
                throw new ArgumentNullException("operationUser");
            }
            if (member == null)
            {
                throw new ArgumentNullException("user");
            }
            GroupMemberInfo memberInfo = new GroupMemberInfo {
                GroupId = this.ID, MemberId = member.ID, MemberName = member.Name, MemberType = MemberType.User
            };

            if (this._Members.Contains(member))
            {
                lock (_updateLockObject)
                {
                    List <Member> members = this._Members.ToList();
                    members.Remove(member);
                    this._Members = members;

                    if (RemovedMember != null)
                    {
                        ChangeEventArgs <GroupMemberInfo, Group> args = new ChangeEventArgs <GroupMemberInfo, Group>
                        {
                            ChangeObject = this,
                            ChangeInfo   = memberInfo,
                            Operator     = operationUser
                        };
                        this.RemovedMember(this, args);
                    }
                }
            }
        }
Example #4
0
        public void CqAppEnable(object sender, CqAppEnableEventArgs e)
        {
            // 当应用被启用后,本方法将被调用。
            // 如果酷Q载入时应用已被启用,则在 ICqStartup 接口的实现方法被调用后,本方法也将被调用一次。
            // 如非必要,不建议在这里加载窗口。(可以添加菜单,让用户手动打开窗口)

            Usual.Logdate = DateTime.Now;//初始化时记录当前时间
            Usual.Logdate = Usual.Logdate.AddDays(1);
            Usual.Logdate = Usual.Logdate.AddHours(-Usual.Logdate.Hour + 6);
            classObj      = new Usual();
            //classObj.Trace_Output(Usual.Logdate.ToString());

            GroupMemberInfo member = Common.CqApi.GetMemberInfo(Usual.Test_GroupID, Usual.Test_MoneID);
            string          txt    = member.Card.Substring(member.Card.Length - 3);

            //MessageBox.Show(txt);
            Usual.Mone_ID_day = Convert.ToInt32(txt);//获取Mone的ID并截取后3位转化成日期



            Common.IsRunning = true;
            Usual.Root_Path  = Directory.GetCurrentDirectory();//存储当前的运行根目录
            classObj.Trace_Output("成功读取根目录");

            classObj.Scan_Local_Image();
        }
Example #5
0
        /// <summary> </summary>
        private static bool ConvertAnsiHexToGroupMembers(byte[] source, ref GroupMemberInfo gm)
        {
            if (source == null || source.Length < 40)
            {
                return(false);
            }
            Unpack u = new Unpack();

            u.SetData(source);
            gm.GroupId                 = u.GetLong();
            gm.Number                  = u.GetLong();
            gm.NickName                = u.GetLenStr();
            gm.InGroupName             = u.GetLenStr();
            gm.Gender                  = u.GetInt() == 0 ? "男" : "女";
            gm.Age                     = u.GetInt();
            gm.Area                    = u.GetLenStr();
            gm.JoinTime                = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime().AddSeconds(u.GetInt());
            gm.LastSpeakingTime        = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime().AddSeconds(u.GetInt());
            gm.Level                   = u.GetLenStr();
            gm.Authority               = u.GetInt().ToString();
            gm.HasBadRecord            = (u.GetInt() == 1);
            gm.Title                   = u.GetLenStr();
            gm.TitleExpirationTime     = u.GetInt();
            gm.IsInGroupNameModifiable = (u.GetInt() == 1);
            return(true);
        }
Example #6
0
    /// <summary>
    /// Gets and updates group member. Called when the "Get and update member" button is pressed.
    /// Expects the CreateGroupMember method to be run first.
    /// </summary>
    private bool GetAndUpdateGroupMember()
    {
        // Get the group
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", CMSContext.CurrentSiteName);

        if (group != null)
        {
            // Get the user
            UserInfo user = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserName);

            if (user != null)
            {
                // Get the group member
                GroupMemberInfo updateMember = GroupMemberInfoProvider.GetGroupMemberInfo(user.UserID, group.GroupID);
                if (updateMember != null)
                {
                    // Update the properties
                    updateMember.MemberComment = updateMember.MemberComment.ToLowerCSafe();

                    // Save the changes
                    GroupMemberInfoProvider.SetGroupMemberInfo(updateMember);

                    return(true);
                }
            }
        }

        return(false);
    }
Example #7
0
        public HeroesGuildMemberInfo GetMemberInfo(GuildEntity guild, GuildMemberKey key)
        {
            HeroesGuildMemberInfo result;

            try
            {
                Log <GuildAPI> .Logger.InfoFormat("GroupMemberGetInfo: ServerCode[{0}], GuildSN[{1}], MemberNexonSN[{2}]", GuildAPI.ServerCode, guild.GuildSN, key.NexonSN);

                GroupMemberInfo     groupMemberInfo = HeroesGuild.GroupMemberGetInfo(GuildAPI.ServerCode, guild.GuildSN, key.CharacterSN, key.CharacterName);
                HeroesGuildUserType value           = this.ConvertToHeroesGuildUserType(groupMemberInfo.emGroupUserType);
                if (value.ToGuildMemberRank().IsInvalid())
                {
                    result = null;
                }
                else
                {
                    result = new HeroesGuildMemberInfo(groupMemberInfo);
                }
            }
            catch (GroupException ex)
            {
                if (ex.ErrorCode != 15)
                {
                    Log <GuildService> .Logger.Error("GroupMemberGetInfo Error", ex);
                }
                result = null;
            }
            catch (Exception ex2)
            {
                Log <GuildService> .Logger.Error("GroupMemberGetInfo Error", ex2);

                result = null;
            }
            return(result);
        }
Example #8
0
    /// <summary>
    /// Log activity
    /// </summary>
    /// <param name="gmi">Member info</param>
    /// <param name="logActivity">Determines whether activity logging is enabled for current group</param>
    /// <param name="groupDisplayName">Display name of the group</param>
    private void LogLeaveActivity(GroupMemberInfo gmi, bool logActivity, string groupDisplayName)
    {
        string siteName = CMSContext.CurrentSiteName;

        if (!logActivity || (CMSContext.ViewMode != ViewModeEnum.LiveSite) || (gmi == null) || !ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(siteName) ||
            !ActivitySettingsHelper.ActivitiesEnabledForThisUser(CMSContext.CurrentUser) || !ActivitySettingsHelper.JoiningAGroupEnabled(siteName))
        {
            return;
        }

        TreeNode currentDoc = CMSContext.CurrentDocument;
        var      data       = new ActivityData()
        {
            ContactID = ModuleCommands.OnlineMarketingGetCurrentContactID(),
            SiteID    = CMSContext.CurrentSiteID,
            Type      = PredefinedActivityType.LEAVE_GROUP,
            TitleData = groupDisplayName,
            ItemID    = gmi.MemberGroupID,
            URL       = URLHelper.CurrentRelativePath,
            NodeID    = (currentDoc != null ? currentDoc.NodeID : 0),
            Culture   = (currentDoc != null ? currentDoc.DocumentCulture : null),
            Campaign  = CMSContext.Campaign
        };

        ActivityLogProvider.LogActivity(data);
    }
Example #9
0
    /// <summary>
    /// Creates group member. Called when the "Create member" button is pressed.
    /// </summary>
    private bool CreateGroupMember()
    {
        // Get the group
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", CMSContext.CurrentSiteName);

        if (group != null)
        {
            // Get the user
            UserInfo user = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserName);

            if (user != null)
            {
                // Create new group member object
                GroupMemberInfo newMember = new GroupMemberInfo();

                //Set the properties
                newMember.MemberGroupID          = group.GroupID;
                newMember.MemberApprovedByUserID = CurrentUser.UserID;
                newMember.MemberApprovedWhen     = DateTime.Now;
                newMember.MemberInvitedByUserID  = CurrentUser.UserID;
                newMember.MemberUserID           = user.UserID;
                newMember.MemberJoined           = DateTime.Now;
                newMember.MemberComment          = "New member added by API example.";

                // Save the member
                GroupMemberInfoProvider.SetGroupMemberInfo(newMember);
            }

            return(true);
        }

        return(false);
    }
Example #10
0
 /// <summary>
 /// 获取群成员信息
 /// </summary>
 /// <param name="groupId">目标群</param>
 /// <param name="qqId">目标QQ</param>
 /// <param name="notCache">默认为 "Flase", 通常忽略本参数, 仅在必要的是否使用</param>
 /// <returns>获取成功返回 <see cref="GroupMemberInfo"/>, 失败返回 null</returns>
 public GroupMemberInfo GetMemberInfo(long groupId, long qqId, bool notCache = false)
 {
     string result = CQP.CQ_getGroupMemberInfoV2(_authCode, groupId, qqId, notCache).ToString(Encoding.ASCII);
     if (string.IsNullOrEmpty(result))
     {
         return null;
     }
     #region --其它_转换_文本到群成员信息--
     using (BinaryReader binary = new BinaryReader(new MemoryStream(Convert.FromBase64String(result))))
     {
         GroupMemberInfo member = new GroupMemberInfo
         {
             GroupId = binary.ReadInt64_Ex(),
             QQId = binary.ReadInt64_Ex(),
             Nick = binary.ReadString_Ex(_defaultEncoding),
             Card = binary.ReadString_Ex(_defaultEncoding),
             Sex = (Sex)binary.ReadInt32_Ex(),
             Age = binary.ReadInt32_Ex(),
             Area = binary.ReadString_Ex(_defaultEncoding),
             JoiningTime = binary.ReadInt32_Ex().ToDateTime(),
             LastDateTime = binary.ReadInt32_Ex().ToDateTime(),
             Level = binary.ReadString_Ex(_defaultEncoding),
             PermitType = (PermitType)binary.ReadInt32_Ex(),
             BadRecord = binary.ReadInt32_Ex() == 1,
             SpecialTitle = binary.ReadString_Ex(_defaultEncoding),
             SpecialTitleDurationTime = binary.ReadInt32_Ex().ToDateTime(),
             CanModifiedCard = binary.ReadInt32_Ex() == 1
         };
         return member;
     }
     #endregion
 }
Example #11
0
        /// <summary>
        /// 转换_ansihex到群成员信息
        /// </summary>
        /// <param name="source">源字节集</param>
        /// <param name="gm">群成员</param>
        /// <returns></returns>
        private static bool ConvertAnsiHexToGroupMemberInfo(byte[] source, ref GroupMemberInfo gm)
        {
            if (source == null || source.Length < 40)
            {
                return(false);
            }
            var u = new Unpack(source);

            gm.GroupId     = (long)u.GetLong();
            gm.Number      = (long)u.GetLong();
            gm.NickName    = u.GetLenStr();
            gm.InGroupName = u.GetLenStr();
            gm.Gender      = (int)u.GetInt() == 0 ? "男" : " 女";
            gm.Age         = (int)u.GetInt();
            gm.Area        = u.GetLenStr();
            gm.JoinTime    = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime()
                             .AddSeconds((int)u.GetInt());
            gm.LastSpeakingTime = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime()
                                  .AddSeconds((int)u.GetInt());
            gm.Level = u.GetLenStr();
            var manager = (int)u.GetInt();

            gm.Authority            = manager == 3 ? "群主" : (manager == 2 ? "管理员" : "成员");
            gm.HasBadRecord         = (u.GetInt() == 1);
            gm.Title                = u.GetLenStr();
            gm.TitleExpirationTime  = (int)u.GetInt();
            gm.CanModifyInGroupName = (u.GetInt() == 1);
            return(true);
        }
Example #12
0
    /*添加item*/
    void AddItem(GroupMemberInfo member)
    {
        if (null != member)
        {
            UnityEngine.GameObject go = CrossObjectHelper.TryCastObject <UnityEngine.GameObject>(ArkCrossEngine.ResourceSystem.GetSharedResource("UI/Team/member"));
            ItemShow(member, go);
            if (null != go)
            {
                UnityEngine.Transform tf = gameObject.transform.Find("bc/sp_heikuang/ScrollView/Grid");
                if (null != tf)
                {
                    go = NGUITools.AddChild(tf.gameObject, go);
                    if (null != go)
                    {
                        switch (currTable)
                        {
                        case 1:
                            teamDic.Add(go, member);
                            break;

                        case 2:
                            confirmDic.Add(go, member);
                            break;
                        }
                        SetItemInfo(go, member);
                    }
                }
            }
        }
    }
Example #13
0
    /*队伍显示列表排序*/
    private int TeamListSort(GroupMemberInfo memberFirst, GroupMemberInfo memberSecond)
    {
        RoleInfo role = LobbyClient.Instance.CurrentRole;

        if (memberFirst.Guid == role.Group.CreatorGuid)
        {
            return(-1);
        }
        else if (memberSecond.Guid == role.Group.CreatorGuid)
        {
            return(1);
        }
        else if (memberFirst.Guid == role.Guid)
        {
            return(-1);
        }
        else if (memberSecond.Guid == role.Guid)
        {
            return(1);
        }
        else
        {
            return(-1);
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get memberId
        memberId = QueryHelper.GetInteger("memberid", 0);

        // Initialize editing control
        memberEditElem.MemberID = memberId;

        CurrentMaster.Title.HelpTopicName = "group_members_edit";
        CurrentMaster.Title.HelpName      = "helpTopic";

        GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(memberId);

        if (gmi != null)
        {
            memberEditElem.GroupID = gmi.MemberGroupID;
            UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID);
            if (ui != null)
            {
                // Initialize breadcrumbs
                string[,] pageTitleTabs         = new string[2, 3];
                pageTitleTabs[0, 0]             = GetString("group.members");
                pageTitleTabs[0, 1]             = "~/CMSModules/Groups/Tools/Members/Member_List.aspx";
                pageTitleTabs[0, 1]            += "?groupId=" + gmi.MemberGroupID;
                pageTitleTabs[0, 2]             = "_self";
                pageTitleTabs[1, 0]             = HTMLHelper.HTMLEncode(ui.FullName);
                pageTitleTabs[1, 1]             = "";
                pageTitleTabs[1, 2]             = "";
                CurrentMaster.Title.Breadcrumbs = pageTitleTabs;
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get memberId
        memberId = QueryHelper.GetInteger("memberid", 0);

        // Initialize editing control
        memberEditElem.MemberID = memberId;

        GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(memberId);

        if (gmi != null)
        {
            memberEditElem.GroupID = gmi.MemberGroupID;
            UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID);
            if (ui != null)
            {
                // Initialize breadcrumbs
                PageBreadcrumbs.Items.Add(new BreadcrumbItem()
                {
                    Text        = GetString("group.members"),
                    RedirectUrl = "~/CMSModules/Groups/Tools/Members/Member_List.aspx?groupId=" + gmi.MemberGroupID,
                    Target      = "_self"
                });

                PageBreadcrumbs.Items.Add(new BreadcrumbItem()
                {
                    Text = HTMLHelper.HTMLEncode(ui.FullName)
                });
            }
        }
    }
Example #16
0
    protected void memberListElem_GridOnAction(object sender, CommandEventArgs args)
    {
        switch (args.CommandName.ToLower())
        {
        case "approve":
            lblInfo.Text    = GetString("group.member.userhasbeenapproved");
            lblInfo.Visible = true;
            break;

        case "reject":
            lblInfo.Text    = GetString("group.member.userhasbeenrejected");
            lblInfo.Visible = true;
            break;

        case "edit":
            int memberId = ValidationHelper.GetInteger(args.CommandArgument, 0);
            memberEditElem.MemberID = memberId;
            memberEditElem.GroupID  = GroupID;
            plcList.Visible         = false;
            plcEdit.Visible         = true;
            memberEditElem.Visible  = true;
            memberEditElem.ReloadData();

            GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(memberId);
            if (gmi != null)
            {
                UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID);
                if (ui != null)
                {
                    lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\">&nbsp;</span> " + HTMLHelper.HTMLEncode(ui.FullName);
                }
            }
            break;
        }
    }
Example #17
0
        private void HandleSyncGroupUsers(JsonMessage lobbyMsg)
        {
            RoleInfo role_info = LobbyClient.Instance.CurrentRole;

            if (null == role_info)
            {
                return;
            }
            GroupInfo group = role_info.Group;

            if (null == group)
            {
                return;
            }
            JsonData jsonData = lobbyMsg.m_JsonData;

            ArkCrossEngineMessage.Msg_LC_SyncGroupUsers protoData = lobbyMsg.m_ProtoData as ArkCrossEngineMessage.Msg_LC_SyncGroupUsers;
            if (null != protoData)
            {
                group.Reset();
                group.CreatorGuid = protoData.m_Creator;
                group.Count       = protoData.m_Count;
                if (null != protoData.m_Members && protoData.m_Members.Count > 0)
                {
                    int ct = protoData.m_Members.Count;
                    for (int i = 0; i < ct; i++)
                    {
                        GroupMemberInfo member_info = new GroupMemberInfo();
                        member_info.Guid          = protoData.m_Members[i].m_Guid;
                        member_info.HeroId        = protoData.m_Members[i].m_HeroId;
                        member_info.Nick          = protoData.m_Members[i].m_Nick;
                        member_info.Level         = protoData.m_Members[i].m_Level;
                        member_info.FightingScore = protoData.m_Members[i].m_FightingScore;
                        member_info.Status        = (UserState)protoData.m_Members[i].m_Status;
                        group.Members.Add(member_info);
                        if (role_info.Guid == member_info.Guid)
                        {
                            //Note:更新RC队伍信息,只需更新玩家自己
                            GfxSystem.PublishGfxEvent("ge_joinABandWithBandId", "gt", group.CreatorGuid.ToString());
                        }
                    }
                }
                if (null != protoData.m_Confirms && protoData.m_Confirms.Count > 0)
                {
                    int ct = protoData.m_Confirms.Count;
                    for (int i = 0; i < ct; i++)
                    {
                        GroupMemberInfo member_info = new GroupMemberInfo();
                        member_info.Guid          = protoData.m_Confirms[i].m_Guid;
                        member_info.HeroId        = protoData.m_Confirms[i].m_HeroId;
                        member_info.Nick          = protoData.m_Confirms[i].m_Nick;
                        member_info.Level         = protoData.m_Confirms[i].m_Level;
                        member_info.FightingScore = protoData.m_Confirms[i].m_FightingScore;
                        member_info.Status        = (UserState)protoData.m_Confirms[i].m_Status;
                        group.Confirms.Add(member_info);
                    }
                }
                GfxSystem.PublishGfxEvent("ge_sync_group_info", "group", group);
            }
        }
Example #18
0
        /// <summary> </summary>
        private static bool ConvertStrToGroupMembersList(string source, ref List <GroupMemberInfo> lsGm)
        {
            Unpack u = new Unpack();

            if (source == string.Empty)
            {
                return(false);
            }
            var data = Convert.FromBase64String(source);

            if (data == null || data.Length < 10)
            {
                return(false);
            }
            u.SetData(data);

            var count = u.GetInt();

            for (int i = 0; i < count; i++)
            {
                if (u.Len() <= 0)
                {
                    return(false);
                }
                GroupMemberInfo gm = new GroupMemberInfo();
                if (!ConvertAnsiHexToGroupMembers(u.GetToken(), ref gm))
                {
                    return(false);
                }
                lsGm.Add(gm);
            }
            return(true);
        }
Example #19
0
    /// <summary>
    /// Gets and bulk updates group members. Called when the "Get and bulk update members" button is pressed.
    /// Expects the CreateGroupMember method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateGroupMembers()
    {
        // Prepare the parameters
        string where = "MemberUserID =" + CMSContext.CurrentUser.UserID;

        // Get the data
        DataSet members = GroupMemberInfoProvider.GetGroupMembers(where, null);

        if (!DataHelper.DataSourceIsEmpty(members))
        {
            // Loop through the individual items
            foreach (DataRow memberDr in members.Tables[0].Rows)
            {
                // Create object from DataRow
                GroupMemberInfo modifyMember = new GroupMemberInfo(memberDr);

                // Update the properties
                modifyMember.MemberComment = modifyMember.MemberComment.ToUpper();

                // Save the changes
                GroupMemberInfoProvider.SetGroupMemberInfo(modifyMember);
            }

            return(true);
        }

        return(false);
    }
        public string bendibeizhu = ""; //本地备注(存我们数据库的)

        public GroupMemberInfoWithBocai(GroupMemberInfo groupMemberBaseInfo, int arrIndex)
        {
            GroupMemberBaseInfo = groupMemberBaseInfo;
            ArrIndex            = arrIndex;
            //this.Seq = groupMemberBaseInfo.NickName + groupMemberBaseInfo.Number;
            this.Seq = "" + groupMemberBaseInfo.Number;//每一个用户的识别码只用qq号码来标识
        }
Example #21
0
    /// <summary>
    /// Deletes group member. Called when the "Delete member" button is pressed.
    /// Expects the CreateGroupMember method to be run first.
    /// </summary>
    private bool DeleteGroupMember()
    {
        // Get the group
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", CMSContext.CurrentSiteName);

        if (group != null)
        {
            // Get the user
            UserInfo user = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserName);

            if (user != null)
            {
                // Get the group member
                GroupMemberInfo deleteMember = GroupMemberInfoProvider.GetGroupMemberInfo(user.UserID, group.GroupID);
                if (deleteMember != null)
                {
                    // Save the changes
                    GroupMemberInfoProvider.DeleteGroupMemberInfo(deleteMember);

                    return(true);
                }
            }
        }

        return(false);
    }
        public cbp_message(long FromQQ, Group FromGroup, String msg)
        {
            this.FromQQ = FromQQ;
            this.msg    = msg;
            GroupMemberInfo tmp1 = FromGroup.GetGroupMemberInfo(FromQQ, true);

            FromName = tmp1.Card;
        }
Example #23
0
 public static void MapFromMemberInfoDetail(this MemberInfo member, GroupMemberInfo result)
 {
     member.City     = result.City;
     member.Province = result.Province;
     member.Country  = result.Country;
     member.Gender   = result.Gender;
     member.Nick     = result.Nick;
 }
Example #24
0
        /// <summary>
        /// 取群成员信息(支持缓存)
        /// </summary>
        /// <param name="groudId">目标QQ所在群</param>
        /// <param name="qqId">目标QQ</param>
        /// <param name="isCache">不使用缓存</param>
        /// <returns></returns>
        public static GroupMemberInfo GetGroupMemberInfoV2(long groudId, long qqId, bool isCache)
        {
            string          jsonData        = CQFuncs.CQ_getGroupMemberInfoV2(RobbotManager.AuthCode, groudId, qqId, isCache);
            GroupMemberInfo groupMemberInfo = new GroupMemberInfo();
            JsonUtils       utils           = new JsonUtils(jsonData);

            utils.Resolve(groupMemberInfo);
            return(groupMemberInfo);
        }
Example #25
0
 /// <summary>
 /// Ensures the memberinfo object is initialized.
 /// </summary>
 private void EnsureMember()
 {
     if (this.MemberID > 0)
     {
         if (this.gmi == null)
         {
             // Get group member
             this.gmi = GroupMemberInfoProvider.GetGroupMemberInfo(this.MemberID);
         }
     }
 }
Example #26
0
        public string GetGroupCard(long qq, Group g)
        {
            GroupMemberInfo gmi = g.GetGroupMemberInfo(qq);
            string          c   = gmi.Card;

            if (c == "" || c == null)
            {
                c = gmi.Nick;
            }
            return(c);
        }
Example #27
0
        public void BanPostLotto(IMahuaApi _mahuaApi, string group, string qq)
        {
            mangerConfig = GraceGroupMangerConfig.Instance;
            int ret = QQinMangerConfig(group, mangerConfig);

            if (ret < 0)
            {
                GraceGroupConfig cfg = new GraceGroupConfig();
                cfg.GroupQQ = group;
                mangerConfig.groupConfigs.Add(cfg);
                mangerConfig.ToJsonString().SaveToFile(GraceGroupMangerConfig.SavePath);
            }
            else
            {
                if (!GraceGroupMangerConfig.Instance.groupConfigs[ret].IsBanPostLotto)
                {
                    Messenger.SendGroup(group, "禁言抽奖功能已被禁用,请输入[开启禁言抽奖]来启用此功能(需要管理员或群主权限)");
                    return;
                }
            }
            GroupMemberInfo      botInfo      = GetGroupMemberInfo(_mahuaApi, group, _mahuaApi.GetLoginQq());
            GroupMemberAuthority botAuthority = botInfo.Authority;

            if (GroupMemberAuthority.Unknown == botAuthority || GroupMemberAuthority.Normal == botAuthority)
            {
                Messenger.SendGroup(group, "机器人的权限不足,想要使用禁言抽奖功能,请将机器人设置为管理员!");
                return;
            }

            int    hours = 0, minutes = 0, seconds = 0;
            Random rd = new Random();

            minutes = rd.Next(1, 11);
            TimeSpan time = new TimeSpan(hours, minutes, seconds);

            GroupMemberInfo member = GetGroupMemberInfo(_mahuaApi, group, qq);

            if (member.Authority < botAuthority)
            {
                _mahuaApi.BanGroupMember(group, qq, time);
                string nick = member.InGroupName;
                if (nick == "")
                {
                    nick = qq;
                }

                Messenger.SendGroup(group, $"恭喜 {nick} 抽中{minutes}分钟套餐");
            }
            else
            {
                Messenger.SendGroup(group, $"[CQ:at,qq={qq}] ,权限不足,抽个鸡儿");
            }
        }
Example #28
0
        public void Constuctor()
        {
            var memberMetadata   = new byte[0];
            var memberAssignment = new byte[0];
            var gmi = new GroupMemberInfo("mymember", "myclient", "clienthost", memberMetadata, memberAssignment);

            Assert.Equal(gmi.MemberId, "mymember");
            Assert.Equal(gmi.ClientId, "myclient");
            Assert.Equal(gmi.ClientHost, "clienthost");
            Assert.Same(gmi.MemberMetadata, memberMetadata);
            Assert.Same(gmi.MemberAssignment, memberAssignment);
        }
Example #29
0
    /*item显示状态*/
    void ItemShow(GroupMemberInfo member, UnityEngine.GameObject go)
    {
        RoleInfo role = LobbyClient.Instance.CurrentRole;

        if (member.Guid == role.Group.CreatorGuid)
        {
            HideOrShowCompent(go, "leader", true);
        }
        else
        {
            HideOrShowCompent(go, "leader", false);
        }
        switch (currTable)
        {
        case 2:
            HideOrShowCompent(go, "No", true);
            HideOrShowCompent(go, "Yes", true);
            HideOrShowCompent(go, "leave", false);
            break;

        case 1:
            HideOrShowCompent(go, "No", false);
            HideOrShowCompent(go, "Yes", false);

            UnityEngine.Transform transform;

            transform = go.transform.Find("leave/Label");
            if (null != transform)
            {
                UILabel uiLable = transform.gameObject.GetComponent <UILabel>();
                if (null != uiLable)
                {
                    if (member.Guid == role.Guid)
                    {
                        HideOrShowCompent(go, "leave", true);
                        uiLable.text = StrDictionaryProvider.Instance.GetDictString(562);
                    }
                    else if (role.Guid == role.Group.CreatorGuid)
                    {
                        HideOrShowCompent(go, "leave", true);
                        uiLable.text = StrDictionaryProvider.Instance.GetDictString(563);
                    }
                    else
                    {
                        HideOrShowCompent(go, "leave", false);
                    }
                }
            }

            break;
        }
    }
Example #30
0
        public static MemberInfo GetMemberInfoFromGroupDetail(GroupMemberInfo result, long qq)
        {
            var member = new MemberInfo();

            member.City     = result.City;
            member.Province = result.Province;
            member.Country  = result.Country;
            member.Gender   = result.Gender;
            member.Nick     = result.Nick;
            member.QQNum    = qq;//WorkContext.GetState<long>(Constract.CurrentQQ);
            member.Uin      = result.Uin;
            return(member);
        }
    /// <summary>
    /// Creates group member. Called when the "Create member" button is pressed.
    /// </summary>
    private bool CreateGroupMember()
    {
        // Get the group
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", CMSContext.CurrentSiteName);

        if (group != null)
        {
            // Get the user
            UserInfo user = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserName);

            if (user != null)
            {
                // Create new group member object
                GroupMemberInfo newMember = new GroupMemberInfo();

                //Set the properties
                newMember.MemberGroupID = group.GroupID;
                newMember.MemberApprovedByUserID = CurrentUser.UserID;
                newMember.MemberApprovedWhen = DateTime.Now;
                newMember.MemberInvitedByUserID = CurrentUser.UserID;
                newMember.MemberUserID = user.UserID;
                newMember.MemberJoined = DateTime.Now;
                newMember.MemberComment = "New member added by API example.";

                // Save the member
                GroupMemberInfoProvider.SetGroupMemberInfo(newMember);
            }

            return true;
        }

        return false;
    }
    /// <summary>
    /// Gets and bulk updates group members. Called when the "Get and bulk update members" button is pressed.
    /// Expects the CreateGroupMember method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateGroupMembers()
    {
        // Prepare the parameters
        string where = "MemberUserID =" + CMSContext.CurrentUser.UserID;

        // Get the data
        DataSet members = GroupMemberInfoProvider.GetGroupMembers(where, null);
        if (!DataHelper.DataSourceIsEmpty(members))
        {
            // Loop through the individual items
            foreach (DataRow memberDr in members.Tables[0].Rows)
            {
                // Create object from DataRow
                GroupMemberInfo modifyMember = new GroupMemberInfo(memberDr);

                // Update the properties
                modifyMember.MemberComment = modifyMember.MemberComment.ToUpper();

                // Save the changes
                GroupMemberInfoProvider.SetGroupMemberInfo(modifyMember);
            }

            return true;
        }

        return false;
    }
Example #33
0
    /// <summary>
    /// Log activity
    /// </summary>
    /// <param name="gmi">Member info</param>
    /// <param name="logActivity">Determines whether activity logging is enabled for current group</param>
    /// <param name="groupDisplayName">Display name of the group</param>
    private void LogJoinActivity(GroupMemberInfo gmi, bool logActivity, string groupDisplayName)
    {
        string siteName = CMSContext.CurrentSiteName;
        if ((CMSContext.ViewMode != ViewModeEnum.LiveSite) || (gmi == null) || !ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(siteName)
            || !ActivitySettingsHelper.ActivitiesEnabledForThisUser(CMSContext.CurrentUser) || !ActivitySettingsHelper.JoiningAGroupEnabled(siteName))
        {
            return;
        }

        var data = new ActivityData()
        {
            ContactID = ModuleCommands.OnlineMarketingGetCurrentContactID(),
            SiteID = CMSContext.CurrentSiteID,
            Type = PredefinedActivityType.JOIN_GROUP,
            TitleData = groupDisplayName,
            ItemID = gmi.MemberGroupID,
            URL = URLHelper.CurrentRelativePath,
            Campaign = CMSContext.Campaign
        };
        ActivityLogProvider.LogActivity(data);
    }
        /// <summary>
        /// Activates a log action.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="selectedPacket">The selected packet.</param>
        /// <returns><c>true</c> if log data tab should be updated.</returns>
        public override bool Activate(IExecutionContext context, PacketLocation selectedPacket)
        {
            PacketLog log = context.LogManager.GetPacketLog(selectedPacket.LogIndex);
            int selectedIndex = selectedPacket.PacketIndex;
            string charName = "";

            GroupMemberInfo[] groupMembers = new GroupMemberInfo[8];
            for (int i = 0 ; i <= selectedIndex; i++)
            {
                Packet pak = log[i];
                if (pak is CtoS_0x10_CharacterSelectRequest)
                {
                    CtoS_0x10_CharacterSelectRequest login = (CtoS_0x10_CharacterSelectRequest)pak;
                    charName = login.CharName;
                }
                else if (pak is StoC_0x16_VariousUpdate)
                {
                    StoC_0x16_VariousUpdate groupPak = (StoC_0x16_VariousUpdate)pak;
                    if (groupPak.SubCode == 3)
                    {
                        StoC_0x16_VariousUpdate.PlayerUpdate subData = (StoC_0x16_VariousUpdate.PlayerUpdate)groupPak.SubData;
                        charName = subData.playerName;
                    }
                    else if (groupPak.SubCode == 6) // group update
                    {
                        StoC_0x16_VariousUpdate.PlayerGroupUpdate grpUpdate = groupPak.InPlayerGroupUpdate;
                        if (grpUpdate != null)
                        {
                            for (int grpIndex = 0; grpIndex < 8; grpIndex++)
                            {
                                if (grpUpdate.groupMembers.Length > grpIndex)
                                {
                                    if (groupMembers[grpIndex] == null)
                                    {
                                        groupMembers[grpIndex] = new GroupMemberInfo();
                                    }
                                    groupMembers[grpIndex].groupMember = grpUpdate.groupMembers[grpIndex];
                                    groupMembers[grpIndex].flag_0x16_UpdateIsLast = true;
                                    groupMembers[grpIndex].flagMemberInGroup= true;
                                }
                                else
                                {
                                    if (groupMembers[grpIndex] != null)
                                        groupMembers[grpIndex].flagMemberInGroup = false;
                                }
                            }
                        }
                    }
                }
                else if (pak is StoC_0x70_PlayerGroupUpdate)
                {
                    StoC_0x70_PlayerGroupUpdate groupPak = (StoC_0x70_PlayerGroupUpdate)pak;
                    foreach (object o in groupPak.Updates)
                    {
                        if (o is StoC_0x70_PlayerGroupUpdate.PlayerStatusData)
                        {
                            StoC_0x70_PlayerGroupUpdate.PlayerStatusData stat = o as StoC_0x70_PlayerGroupUpdate.PlayerStatusData;
                            if (groupMembers[stat.playerIndex] == null)
                            {
                                groupMembers[stat.playerIndex] = new GroupMemberInfo();
                            }
                            groupMembers[stat.playerIndex].playerStatusData = stat;
                            groupMembers[stat.playerIndex].flag_0x16_UpdateIsLast = false;
                        }
                        else if (o is StoC_0x70_PlayerGroupUpdate.PlayerBuffsData)
                        {
                            StoC_0x70_PlayerGroupUpdate.PlayerBuffsData buffs = o as StoC_0x70_PlayerGroupUpdate.PlayerBuffsData;
                            if (groupMembers[buffs.playerIndex] == null)
                            {
                                groupMembers[buffs.playerIndex] = new GroupMemberInfo();
                            }
                            groupMembers[buffs.playerIndex].playerBuffsData = buffs;
                        }
                        else if (o is StoC_0x70_PlayerGroupUpdate_173.PlayerMapData)
                        {
                            StoC_0x70_PlayerGroupUpdate_173.PlayerMapData map = o as StoC_0x70_PlayerGroupUpdate_173.PlayerMapData;
                            if (groupMembers[map.player] == null)
                            {
                                groupMembers[map.player] = new GroupMemberInfo();
                            }
                            groupMembers[map.player].playerMapData = map;
                        }
                    }
                }
            }

            StringBuilder str = new StringBuilder();
            bool found = false;
            for (int i = 0; i < groupMembers.Length; i++)
            {
                if (groupMembers[i] != null)
                {
                    bool flagMemberInfoPrinted = false;
                    if (!groupMembers[i].flagMemberInGroup)
                        continue;
                    found = true;
                    str.AppendFormat("player{0}: level:{1,-2} oid:0x{2:X4} class:\"{3}\"\t name:\"{4}\"", i, groupMembers[i].groupMember.level, groupMembers[i].groupMember.oid, groupMembers[i].groupMember.classname, groupMembers[i].groupMember.name);
                    if (charName == groupMembers[i].groupMember.name)
                        str.Append(" (YOU)");
                    str.Append("\n");
                    if (groupMembers[i].flag_0x16_UpdateIsLast)
                    {
                        str.AppendFormat("player{0}: health:{1,3}% mana:{2,3}% endurance:{3,3}% status:0x{4:X2}", i, groupMembers[i].groupMember.health, groupMembers[i].groupMember.mana, groupMembers[i].groupMember.endurance, groupMembers[i].groupMember.status);
                        flagMemberInfoPrinted = true;
                        str.Append("\n");
                    }
                    if (groupMembers[i].playerStatusData != null && !flagMemberInfoPrinted)
                    {
                        str.Append(groupMembers[i].playerStatusData.ToString());
                        str.Append("\n");
                    }
                    if (groupMembers[i].playerMapData != null)
                    {
                        str.Append(groupMembers[i].playerMapData.ToString());
                        str.Append("\n");
                    }
                    if (groupMembers[i].playerBuffsData != null)
                    {
                        str.Append(groupMembers[i].playerBuffsData.ToString());
                        str.Append("\n");
                    }
                    str.Append("\n");
                }
            }
            if (!found)
                str.Append("Group info not found\n");
            InfoWindowForm infoWindow = new InfoWindowForm();
            infoWindow.Text = "Player group info (right click to close)";
            infoWindow.Width = 820;
            infoWindow.Height = 320;
            infoWindow.InfoRichTextBox.Text = str.ToString();
            infoWindow.StartWindowThread();

            return false;
        }
    /// <summary>
    /// Updates the current Group or creates new if no GroupID is present.
    /// </summary>
    public void SaveData()
    {
        // Check banned IP
        if (!BannedIPInfoProvider.IsAllowed(SiteContext.CurrentSiteName, BanControlEnum.AllNonComplete))
        {
            ShowError(GetString("General.BannedIP"));
            return;
        }

        // Validate form entries
        string errorMessage = ValidateForm();
        if (errorMessage == string.Empty)
        {
            try
            {
                codeName = GetSafeCodeName();
                codeName = GetUniqueCodeName(codeName);

                GroupInfo group = new GroupInfo();
                group.GroupDisplayName = txtDisplayName.Text;
                group.GroupName = codeName;
                group.GroupDescription = txtDescription.Text;
                group.GroupAccess = GetGroupAccess();
                group.GroupSiteID = mSiteId;
                group.GroupApproveMembers = GetGroupApproveMembers();

                // Set columns GroupCreatedByUserID and GroupApprovedByUserID to current user
                var user = MembershipContext.AuthenticatedUser;

                if (user != null)
                {
                    group.GroupCreatedByUserID = user.UserID;

                    if ((!RequireApproval) || (CurrentUserIsAdmin()))
                    {
                        group.GroupApprovedByUserID = user.UserID;
                        group.GroupApproved = true;
                    }
                }

                // Save Group in the database
                GroupInfoProvider.SetGroupInfo(group);

                // Create group admin role
                RoleInfo roleInfo = new RoleInfo();
                roleInfo.DisplayName = "Group admin";
                roleInfo.RoleName = group.GroupName + "_groupadmin";
                roleInfo.RoleGroupID = group.GroupID;
                roleInfo.RoleIsGroupAdministrator = true;
                roleInfo.SiteID = mSiteId;
                // Save group admin role
                RoleInfoProvider.SetRoleInfo(roleInfo);

                if (user != null)
                {
                    // Set user as member of group
                    GroupMemberInfo gmi = new GroupMemberInfo();
                    gmi.MemberUserID = user.UserID;
                    gmi.MemberGroupID = group.GroupID;
                    gmi.MemberJoined = DateTime.Now;
                    gmi.MemberStatus = GroupMemberStatus.Approved;
                    gmi.MemberApprovedWhen = DateTime.Now;
                    gmi.MemberApprovedByUserID = user.UserID;

                    // Save user as member of group
                    GroupMemberInfoProvider.SetGroupMemberInfo(gmi);

                    // Set user as member of admin group role
                    UserRoleInfo userRole = new UserRoleInfo();
                    userRole.UserID = user.UserID;
                    userRole.RoleID = roleInfo.RoleID;

                    // Save user as member of admin group role
                    UserRoleInfoProvider.SetUserRoleInfo(userRole);
                }

                // Clear user session a request
                MembershipContext.AuthenticatedUser.Generalized.Invalidate(false);
                MembershipContext.AuthenticatedUser = null;

                string culture = CultureHelper.EnglishCulture.ToString();
                if (DocumentContext.CurrentDocument != null)
                {
                    culture = DocumentContext.CurrentDocument.DocumentCulture;
                }

                // Copy document
                errorMessage = GroupInfoProvider.CopyGroupDocument(group, GroupTemplateSourceAliasPath, GroupTemplateTargetAliasPath, GroupProfileURLPath, culture, CombineWithDefaultCulture, MembershipContext.AuthenticatedUser, roleInfo);

                if (!String.IsNullOrEmpty(errorMessage))
                {
                    // Display error message
                    ShowError(errorMessage);
                    return;
                }

                // Create group forum
                if (CreateForum)
                {
                    CreateGroupForum(group);

                    // Create group forum search index
                    if (CreateSearchIndexes)
                    {
                        CreateGroupForumSearchIndex(group);
                    }
                }

                // Create group media library
                if (CreateMediaLibrary)
                {
                    CreateGroupMediaLibrary(group);
                }

                // Create search index for group documents
                if (CreateSearchIndexes)
                {
                    CreateGroupContentSearchIndex(group);
                }

                // Display information on success
                ShowConfirmation(GetString("group.group.createdinfo"));

                // If URL is set, redirect user to specified page
                if (!String.IsNullOrEmpty(RedirectToURL))
                {
                    URLHelper.Redirect(ResolveUrl(DocumentURLProvider.GetUrl(RedirectToURL)));
                }

                // After registration message
                if ((RequireApproval) && (!CurrentUserIsAdmin()))
                {
                    ShowConfirmation(SuccessfullRegistrationWaitingForApprovalText);

                    // Send approval email to admin
                    if (!String.IsNullOrEmpty(SendWaitingForApprovalEmailTo))
                    {
                        // Create the message
                        EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Groups.WaitingForApproval", SiteContext.CurrentSiteName);
                        if (eti != null)
                        {
                            EmailMessage message = new EmailMessage();
                            if (String.IsNullOrEmpty(eti.TemplateFrom))
                            {
                                message.From = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSSendEmailNotificationsFrom");
                            }
                            else
                            {
                                message.From = eti.TemplateFrom;
                            }

                            MacroResolver resolver = MacroContext.CurrentResolver;
                            resolver.SetAnonymousSourceData(group);
                            resolver.SetNamedSourceData("Group", group);

                            message.Recipients = SendWaitingForApprovalEmailTo;
                            message.Subject = resolver.ResolveMacros(eti.TemplateSubject);
                            message.Body = resolver.ResolveMacros(eti.TemplateText);

                            resolver.Settings.EncodeResolvedValues = false;
                            message.PlainTextBody = resolver.ResolveMacros(eti.TemplatePlainText);

                            // Send the message using email engine
                            EmailSender.SendEmail(message);
                        }
                    }
                }
                else
                {
                    string groupPath = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSGroupProfilePath");
                    string url = String.Empty;

                    if (!String.IsNullOrEmpty(groupPath))
                    {
                        url = DocumentURLProvider.GetUrl(groupPath.Replace("{GroupName}", group.GroupName));
                    }
                    ShowConfirmation(String.Format(SuccessfullRegistrationText, url));
                }

                // Hide form
                if (HideFormAfterRegistration)
                {
                    plcForm.Visible = false;
                }
                else
                {
                    ClearForm();
                }
            }
            catch (Exception ex)
            {
                // Display error message
                ShowError(GetString("general.saveerror"), ex.Message, null);
            }
        }
        else
        {
            // Display error message
            ShowError(errorMessage);
        }
    }
Example #36
0
    /// <summary>
    /// Join handler.
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">EventArgs</param>
    protected void btnJoin_Click(object sender, EventArgs e)
    {
        if (CMSContext.CurrentUser.IsPublic())
        {
            return;
        }

        CancelButton.Text = GetString("General.Close");
        JoinButton.Enabled = false;
        CancelButton.OnClientClick = "if ((wopener != null)&&(wopener.ReloadPage != null)) {wopener.ReloadPage();} window.close();";

        if (this.Group == null)
        {
            return;
        }

        // Check whether user is not already in group or group is not approved or group is not enabled
        if (GroupMemberInfoProvider.IsMemberOfGroup(CMSContext.CurrentUser.UserID, this.Group.GroupID) ||
            !this.Group.GroupApproved)
        {
            lblInfo.Text = this.UnSuccessfulJoinText;
            return;
        }

        GroupMemberInfo gmi = new GroupMemberInfo(); ;
        gmi.MemberJoined = DateTime.Now;
        gmi.MemberRejectedWhen = DateTimeHelper.ZERO_TIME;
        gmi.MemberStatus = GroupMemberStatus.Rejected;

        switch (this.Group.GroupApproveMembers)
        {
            // Only approved members can join
            case GroupApproveMembersEnum.ApprovedCanJoin:
            // Only invited members
            case GroupApproveMembersEnum.InvitedWithoutApproval:
                gmi.MemberGroupID = this.Group.GroupID;
                gmi.MemberUserID = CMSContext.CurrentUser.UserID;
                gmi.MemberStatus = GroupMemberStatus.WaitingForApproval;
                GroupMemberInfoProvider.SetGroupMemberInfo(gmi);

                if (this.Group.GroupSendWaitingForApprovalNotification)
                {
                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberWaitingForApproval", CMSContext.CurrentSiteName, gmi, true);
                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval", CMSContext.CurrentSiteName, gmi, false);
                }
                LogJoinActivity(gmi, this.Group.GroupLogActivity, this.Group.GroupDisplayName);
                this.lblInfo.Text = this.SuccessfulJoinTextWaitingForApproval;
                break;

            // Any site members can join
            case GroupApproveMembersEnum.AnyoneCanJoin:
                gmi.MemberGroupID = this.Group.GroupID;
                gmi.MemberUserID = CMSContext.CurrentUser.UserID;
                gmi.MemberStatus = GroupMemberStatus.Approved;
                gmi.MemberApprovedWhen = DateTime.Now;
                GroupMemberInfoProvider.SetGroupMemberInfo(gmi);
                if (this.Group.GroupSendJoinLeaveNotification)
                {
                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoin", CMSContext.CurrentSiteName, gmi, true);
                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", CMSContext.CurrentSiteName, gmi, false);
                }
                LogJoinActivity(gmi, this.Group.GroupLogActivity, this.Group.GroupDisplayName);
                this.lblInfo.Text = this.SuccessfulJoinText;
                break;
        }
    }
 /// <summary>
 /// Log activity
 /// </summary>
 /// <param name="gmi">Member info</param>
 /// <param name="group">Group info</param>
 private void LogJoinActivity(GroupMemberInfo gmi,GroupInfo group)
 {
     Activity activity = new ActivityJoinGroup(gmi, group, AnalyticsContext.ActivityEnvironmentVariables);
     activity.Log();
 }
Example #38
0
 /// <summary>
 /// Ensures the memberinfo object is initialized.
 /// </summary>
 private void EnsureMember()
 {
     if (this.MemberID > 0)
     {
         if (this.gmi == null)
         {
             // Get group member
             this.gmi = GroupMemberInfoProvider.GetGroupMemberInfo(this.MemberID);
         }
     }
 }
Example #39
0
    /// <summary>
    /// Fills the data into form for specified Group member.
    /// </summary>
    private void HandleExistingMember(GroupMemberInfo gmi)
    {
        if (gmi != null)
        {
            // Fill controls with data from existing user
            int userId = ValidationHelper.GetInteger(gmi.MemberUserID, 0);
            UserInfo ui = UserInfoProvider.GetUserInfo(userId);
            if (ui != null)
            {
                this.lblFullName.Text = HTMLHelper.HTMLEncode(ui.FullName);
            }

            this.txtComment.Text = gmi.MemberComment;
            this.lblMemberApproved.Text = GetApprovalInfoText(gmi.MemberApprovedWhen, gmi.MemberApprovedByUserID);
            this.lblMemberRejected.Text = GetApprovalInfoText(gmi.MemberRejectedWhen, gmi.MemberApprovedByUserID);
            this.lblMemberJoined.Text = CMSContext.ConvertDateTime(gmi.MemberJoined, this).ToString();
        }
    }
    /// <summary>
    /// Accepts invitation.
    /// </summary>
    protected void btnAccept_OnCommand(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "accept")
        {
            // Accept
            int invitationId = ValidationHelper.GetInteger(e.CommandArgument, 0);
            InvitationInfo invitation = InvitationInfoProvider.GetInvitationInfo(invitationId);

            // Check if time is correct
            if ((invitation.InvitationValidTo == DateTimeHelper.ZERO_TIME) ||
                (invitation.InvitationValidTo >= DateTime.Now))
            {
                GroupInfo group = GroupInfoProvider.GetGroupInfo(invitation.InvitationGroupID);
                if (group != null)
                {
                    // Check if invitation is from group member
                    if (!GroupMemberInfoProvider.IsMemberOfGroup(invitation.InvitedUserID, invitation.InvitationGroupID))
                    {
                        // Transfer user name to user info
                        if (userInfo == null)
                        {
                            userInfo = UserInfoProvider.GetUserInfo(UserName);
                        }
                        if (userInfo != null)
                        {
                            // Create group member info object
                            GroupMemberInfo groupMember = new GroupMemberInfo();
                            groupMember.MemberInvitedByUserID = invitation.InvitedByUserID;
                            groupMember.MemberUserID = userInfo.UserID;
                            groupMember.MemberGroupID = invitation.InvitationGroupID;
                            groupMember.MemberJoined = DateTime.Now;

                            // Set proper status depending on group settings
                            switch (group.GroupApproveMembers)
                            {
                                case GroupApproveMembersEnum.ApprovedCanJoin:
                                    groupMember.MemberStatus = GroupMemberStatus.WaitingForApproval;
                                    lblInfo.Text = MemberWaiting.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />";
                                    break;
                                default:
                                    groupMember.MemberApprovedByUserID = invitation.InvitedByUserID;
                                    groupMember.MemberApprovedWhen = DateTime.Now;
                                    groupMember.MemberStatus = GroupMemberStatus.Approved;
                                    lblInfo.Text = MemberJoined.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />";
                                    break;
                            }
                            // Store info object to database
                            GroupMemberInfoProvider.SetGroupMemberInfo(groupMember);

                            // Delete all invitations to specified group for specified user
                            string whereCondition = "InvitationGroupID = " + invitation.InvitationGroupID + " AND (InvitedUserID=" + userInfo.UserID + ")";
                            InvitationInfoProvider.DeleteInvitations(whereCondition);

                            // Log activity
                            LogJoinActivity(groupMember, group);
                        }
                    }
                    else
                    {
                        // Show error message and delete invitation
                        lblInfo.Text = UserIsAlreadyMember.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />";
                        lblInfo.CssClass = "InvitationErrorLabel";
                        InvitationInfoProvider.DeleteInvitationInfo(invitation);
                    }
                }
                else
                {
                    // Show error message and delete invitation
                    lblInfo.Text = GroupNoLongerExists + "<br /><br />";
                    lblInfo.CssClass = "InvitationErrorLabel";
                    InvitationInfoProvider.DeleteInvitationInfo(invitation);
                }
            }
            else
            {
                // Show error message and delete invitation
                lblInfo.Text = InvitationIsNotValid + "<br /><br />";
                lblInfo.CssClass = "InvitationErrorLabel";
                InvitationInfoProvider.DeleteInvitationInfo(invitation);
            }

            lblInfo.Visible = true;
            BindData();
        }
    }
Example #41
0
    /// <summary>
    /// Reloads data.
    /// </summary>
    public override void ReloadData()
    {
        base.ReloadData();

        // Get member object info
        if ((this.MemberID > 0))
        {
            this.gmi = GroupMemberInfoProvider.GetGroupMemberInfo(this.MemberID);
        }

        // Get roles for current user
        LoadCurrentRoles();

        string where = CreateWhereCondition();
        usRoles.WhereCondition = where;

        // Show message or uniselector?
        if (DataHelper.DataSourceIsEmpty(RoleInfoProvider.GetRoles("RoleID", where, null, 1)))
        {
            usRoles.Visible = false;
            lblRole.Visible = true;
        }
        else
        {
            usRoles.Visible = true;
            lblRole.Visible = false;
        }

        // Enable or disable buttons according to state of user's approval process
        if (gmi != null)
        {
            // Current user cannot approve/reject him self
            if (IsLiveSite && (gmi.MemberUserID == CMSContext.CurrentUser.UserID))
            {
                // Member can nothing
                btnApprove.Enabled = false;
                btnReject.Enabled = false;
            }
            else if (gmi.MemberStatus == GroupMemberStatus.Approved)
            {
                // Member can be rejected
                btnApprove.Enabled = false;
                btnReject.Enabled = true;
            }
            else if (gmi.MemberStatus == GroupMemberStatus.Rejected)
            {
                // Member can be approved
                btnApprove.Enabled = true;
                btnReject.Enabled = false;
            }
            else if (gmi.MemberStatus == GroupMemberStatus.WaitingForApproval)
            {
                // Member can be rejected and approved
                btnApprove.Enabled = true;
                btnReject.Enabled = true;
            }
        }

        InitializeForm();
        usRoles.Value = currentValues;
    }
 /// <summary>
 /// Log activity
 /// </summary>
 /// <param name="gmi">Member info</param>
 /// <param name="group">Group object</param>
 private void LogLeaveActivity(GroupMemberInfo gmi, GroupInfo group)
 {
     Activity activity = new ActivityLeaveGroup(gmi, group, DocumentContext.CurrentDocument, AnalyticsContext.ActivityEnvironmentVariables);
     activity.Log();
 }
Example #43
0
    /// <summary>
    /// Updates the current Group or creates new if no MemberID is present.
    /// </summary>
    public bool SaveData()
    {
        // Check MANAGE permission for groups module
        if (!CheckPermissions("cms.groups", CMSAdminControl.PERMISSION_MANAGE, this.GroupID))
        {
            return false;
        }

        EnsureMember();

        newItem = (this.MemberID == 0);

        if (gmi != null)
        {
            // Get user info
            UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID);
            if (ui != null)
            {
                // Save user roles
                SaveRoles(ui.UserID);

                gmi.MemberComment = this.txtComment.Text;
                GroupMemberInfoProvider.SetGroupMemberInfo(gmi);

                return true;
            }
        }
        else
        {
            // New member
            if (newItem)
            {
                int userId = ValidationHelper.GetInteger(userSelector.Value, 0);

                // Check if some user was selected
                if (userId == 0)
                {
                    lblError.Visible = true;
                    lblError.ResourceString = "group.member.selectuser";
                    return false;
                }

                // Check if user is not already group member
                gmi = GroupMemberInfoProvider.GetGroupMemberInfo(userId, this.GroupID);
                if (gmi != null)
                {
                    lblError.Visible = true;
                    lblError.ResourceString = "group.member.userexists";
                    return false;
                }

                // New member object
                gmi = new GroupMemberInfo();
                gmi.MemberGroupID = this.GroupID;
                gmi.MemberJoined = DateTime.Now;
                gmi.MemberUserID = userId;
                gmi.MemberComment = this.txtComment.Text;

                if (this.chkApprove.Checked)
                {
                    // Approve member
                    gmi.MemberStatus = GroupMemberStatus.Approved;
                    gmi.MemberApprovedWhen = DateTime.Now;
                    gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID;
                }
                else
                {
                    gmi.MemberStatus = GroupMemberStatus.WaitingForApproval;
                    gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID;
                }

                // Save member to database
                GroupMemberInfoProvider.SetGroupMemberInfo(gmi);
                GroupInfo group = GroupInfoProvider.GetGroupInfo(this.GroupID);
                if (group != null)
                {
                    // Send notification email
                    if ((this.chkApprove.Checked) && (group.GroupSendWaitingForApprovalNotification))
                    {
                        GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", CMSContext.CurrentSiteName, gmi, false);
                    }
                    else
                    {
                        if (group.GroupSendWaitingForApprovalNotification)
                        {
                            GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval ", CMSContext.CurrentSiteName, gmi, false);
                        }
                    }
                }

                // Save user roles
                SaveRoles(userId);

                this.MemberID = gmi.MemberID;
                return true;
            }
        }

        return false;
    }
    /// <summary>
    /// Fills the data into form for specified Group member.
    /// </summary>
    private void HandleExistingMember(GroupMemberInfo groupMemberInfo)
    {
        if (groupMemberInfo != null)
        {
            // Fill controls with data from existing user
            int userId = ValidationHelper.GetInteger(groupMemberInfo.MemberUserID, 0);
            UserInfo ui = UserInfoProvider.GetUserInfo(userId);
            if (ui != null)
            {
                lblFullName.Text = HTMLHelper.HTMLEncode(ui.FullName);
            }

            txtComment.Text = groupMemberInfo.MemberComment;

            string approved = GetApprovalInfoText(groupMemberInfo.MemberApprovedWhen, groupMemberInfo.MemberApprovedByUserID);
            if (String.IsNullOrWhiteSpace(approved))
            {
                rowApproved.Visible = false;
            }
            else
            {
                lblMemberApproved.Text = approved;
                rowApproved.Visible = true;
            }

            string rejected = GetApprovalInfoText(groupMemberInfo.MemberRejectedWhen, groupMemberInfo.MemberApprovedByUserID);
            if (String.IsNullOrWhiteSpace(rejected))
            {
                rowRejected.Visible = false;
            }
            else
            {
                lblMemberRejected.Text = rejected;
                rowRejected.Visible = true;
            }

            lblMemberJoined.Text = TimeZoneMethods.ConvertDateTime(groupMemberInfo.MemberJoined, this).ToString();
        }
    }
    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    protected void SetupControl()
    {
        if (StopProcessing)
        {
            // Do nothing
        }
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // If user is public
                if (CMSContext.CurrentUser.IsPublic())
                {
                    // Get logon url
                    string logonUrl = SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSSecuredAreasLogonPage");
                    logonUrl = DataHelper.GetNotEmpty(LoginURL, logonUrl);

                    // Create redirect url
                    logonUrl = URLHelper.ResolveUrl(logonUrl) + "?ReturnURL=" + HttpUtility.UrlEncode(URLHelper.CurrentURL);
                    URLHelper.Redirect(logonUrl);
                }
                else
                {
                    // Get invitation by GUID
                    Guid invitationGuid = QueryHelper.GetGuid("invitationguid", Guid.Empty);
                    if (invitationGuid != Guid.Empty)
                    {
                        InvitationInfo invitation = InvitationInfoProvider.GetInvitationInfo(invitationGuid);
                        if (invitation != null)
                        {
                            // Check if invitation is valid
                            if ((invitation.InvitationValidTo == DateTimeHelper.ZERO_TIME) ||
                                (invitation.InvitationValidTo >= DateTime.Now))
                            {
                                GroupInfo group = GroupInfoProvider.GetGroupInfo(invitation.InvitationGroupID);

                                if (group != null)
                                {
                                    // Check whether current user is the user who should be invited
                                    if ((invitation.InvitedUserID > 0) && (invitation.InvitedUserID != CMSContext.CurrentUser.UserID))
                                    {
                                        lblInfo.CssClass = "InvitationErrorLabel";
                                        lblInfo.Text = InvitationIsNotValid;
                                        lblInfo.Visible = true;
                                        return;
                                    }

                                    // If user was invited by e-mail
                                    if (invitation.InvitedUserID == 0)
                                    {
                                        invitation.InvitedUserID = CMSContext.CurrentUser.UserID;
                                    }

                                    if (!GroupMemberInfoProvider.IsMemberOfGroup(invitation.InvitedUserID, invitation.InvitationGroupID))
                                    {
                                        // Create group member info object
                                        GroupMemberInfo groupMember = new GroupMemberInfo();
                                        groupMember.MemberInvitedByUserID = invitation.InvitedByUserID;
                                        groupMember.MemberUserID = CMSContext.CurrentUser.UserID;
                                        groupMember.MemberGroupID = invitation.InvitationGroupID;
                                        groupMember.MemberJoined = DateTime.Now;

                                        // Set proper status depending on grouo settings
                                        switch (group.GroupApproveMembers)
                                        {
                                            // Only approved members can join
                                            case GroupApproveMembersEnum.ApprovedCanJoin:
                                                groupMember.MemberStatus = GroupMemberStatus.WaitingForApproval;
                                                lblInfo.Text = MemberWaiting.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName));
                                                break;
                                            // Only invited members
                                            case GroupApproveMembersEnum.InvitedWithoutApproval:
                                            // Any site members can join
                                            case GroupApproveMembersEnum.AnyoneCanJoin:
                                                groupMember.MemberApprovedWhen = DateTime.Now;
                                                groupMember.MemberStatus = GroupMemberStatus.Approved;
                                                lblInfo.Text = MemberJoined.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName));
                                                break;
                                        }
                                        // Store info object to database
                                        GroupMemberInfoProvider.SetGroupMemberInfo(groupMember);

                                        // Handle sending e-mails
                                        if (SendEmailToInviter || SendDefaultGroupEmails)
                                        {
                                            UserInfo sender = UserInfoProvider.GetFullUserInfo(groupMember.MemberUserID);
                                            UserInfo recipient = UserInfoProvider.GetFullUserInfo(groupMember.MemberInvitedByUserID);

                                            if (SendEmailToInviter)
                                            {
                                                EmailTemplateInfo template = EmailTemplateProvider.GetEmailTemplate("Groups.MemberAcceptedInvitation", CMSContext.CurrentSiteName);

                                                // Resolve macros
                                                MacroResolver resolver = CMSContext.CurrentResolver;
                                                resolver.SourceData = new object[] { sender, recipient, group, groupMember };
                                                resolver.SetNamedSourceData("Sender", sender);
                                                resolver.SetNamedSourceData("Recipient", recipient);
                                                resolver.SetNamedSourceData("Group", group);
                                                resolver.SetNamedSourceData("GroupMember", groupMember);

                                                if (!String.IsNullOrEmpty(recipient.Email) && !String.IsNullOrEmpty(sender.Email))
                                                {
                                                    // Send e-mail
                                                    EmailMessage message = new EmailMessage();
                                                    message.Recipients = recipient.Email;
                                                    message.From = EmailHelper.GetSender(template, SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSNoreplyEmailAddress"));
                                                    message.Subject = resolver.ResolveMacros(template.TemplateSubject);
                                                    message.PlainTextBody = resolver.ResolveMacros(template.TemplatePlainText);

                                                    // Enable macro encoding for body
                                                    resolver.EncodeResolvedValues = true;
                                                    message.Body = resolver.ResolveMacros(template.TemplateText);
                                                    message.CcRecipients = template.TemplateCc;
                                                    message.BccRecipients = template.TemplateBcc;
                                                    message.EmailFormat = EmailFormatEnum.Default;

                                                    MetaFileInfoProvider.ResolveMetaFileImages(message, template.TemplateID, EmailObjectType.EMAILTEMPLATE, MetaFileInfoProvider.OBJECT_CATEGORY_TEMPLATE);
                                                    EmailSender.SendEmail(CMSContext.CurrentSiteName, message);
                                                }
                                            }

                                            if (SendDefaultGroupEmails)
                                            {
                                                if (group.GroupSendJoinLeaveNotification &&
                                                    (groupMember.MemberStatus == GroupMemberStatus.Approved))
                                                {
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoin", CMSContext.CurrentSiteName, groupMember, true);
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", CMSContext.CurrentSiteName, groupMember, false);
                                                }
                                                if (group.GroupSendWaitingForApprovalNotification && (groupMember.MemberStatus == GroupMemberStatus.WaitingForApproval))
                                                {
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberWaitingForApproval", CMSContext.CurrentSiteName, groupMember, true);
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval", CMSContext.CurrentSiteName, groupMember, false);
                                                }
                                            }
                                        }

                                        // Delete all invitations to specified group for specified user (based on e-mail or userId)
                                        string whereCondition = "InvitationGroupID = " + invitation.InvitationGroupID + " AND (InvitedUserID=" + CMSContext.CurrentUser.UserID + " OR InvitationUserEmail = N'" + SqlHelperClass.GetSafeQueryString(CMSContext.CurrentUser.Email, false) + "')";
                                        InvitationInfoProvider.DeleteInvitations(whereCondition);

                                        // Log activity
                                        LogJoinActivity(groupMember, group.GroupLogActivity, group.GroupDisplayName);
                                    }
                                    else
                                    {
                                        lblInfo.Text = UserIsAlreadyMember.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName));
                                        lblInfo.CssClass = "InvitationErrorLabel";

                                        // Delete this invitation
                                        InvitationInfoProvider.DeleteInvitationInfo(invitation);
                                    }
                                }
                                else
                                {
                                    lblInfo.Text = GroupNoLongerExists;
                                    lblInfo.CssClass = "InvitationErrorLabel";
                                    // Delete this invitation
                                    InvitationInfoProvider.DeleteInvitationInfo(invitation);
                                }
                            }
                            else
                            {
                                lblInfo.Text = InvitationIsNotValid;
                                lblInfo.CssClass = "InvitationErrorLabel";
                                // Delete this invitation
                                InvitationInfoProvider.DeleteInvitationInfo(invitation);
                            }
                        }
                        else
                        {
                            lblInfo.Text = InvitationNoLongerExists;
                            lblInfo.CssClass = "InvitationErrorLabel";
                        }
                        lblInfo.Visible = true;
                    }
                    else
                    {
                        Visible = false;
                    }
                }
            }
        }
    }