/// <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); }
/// <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); }
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); } } } }
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(); }
/// <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); }
/// <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); }
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); }
/// <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); }
/// <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> /// 获取群成员信息 /// </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 }
/// <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); }
/*添加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); } } } } }
/*队伍显示列表排序*/ 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) }); } } }
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\"> </span> " + HTMLHelper.HTMLEncode(ui.FullName); } } break; } }
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); } }
/// <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); }
/// <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号码来标识 }
/// <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; }
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; }
/// <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); }
/// <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); } } }
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); }
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}] ,权限不足,抽个鸡儿"); } }
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); }
/*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; } }
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; }
/// <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); } }
/// <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(); }
/// <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(); } }
/// <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(); }
/// <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; } } } } }