diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs | 102 |
1 files changed, 29 insertions, 73 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs index d5cbfd4..37e1ed4 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs | |||
@@ -281,10 +281,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
281 | 281 | ||
282 | private void OnRequestAvatarProperties(IClientAPI remoteClient, UUID avatarID) | 282 | private void OnRequestAvatarProperties(IClientAPI remoteClient, UUID avatarID) |
283 | { | 283 | { |
284 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); | 284 | GroupMembershipData[] avatarGroups = m_groupData.GetAgentGroupMemberships(GetClientGroupRequestID(remoteClient), avatarID).ToArray(); |
285 | |||
286 | //GroupMembershipData[] avatarGroups = m_groupData.GetAgentGroupMemberships(GetClientGroupRequestID(remoteClient), avatarID).ToArray(); | ||
287 | GroupMembershipData[] avatarGroups = GetProfileListedGroupMemberships(remoteClient, avatarID); | ||
288 | remoteClient.SendAvatarGroupsReply(avatarID, avatarGroups); | 285 | remoteClient.SendAvatarGroupsReply(avatarID, avatarGroups); |
289 | } | 286 | } |
290 | 287 | ||
@@ -488,7 +485,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
488 | bucket[18] = 0; //dunno | 485 | bucket[18] = 0; //dunno |
489 | } | 486 | } |
490 | 487 | ||
491 | |||
492 | m_groupData.AddGroupNotice(GetClientGroupRequestID(remoteClient), GroupID, NoticeID, im.fromAgentName, Subject, Message, bucket); | 488 | m_groupData.AddGroupNotice(GetClientGroupRequestID(remoteClient), GroupID, NoticeID, im.fromAgentName, Subject, Message, bucket); |
493 | if (OnNewGroupNotice != null) | 489 | if (OnNewGroupNotice != null) |
494 | { | 490 | { |
@@ -498,20 +494,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
498 | // Send notice out to everyone that wants notices | 494 | // Send notice out to everyone that wants notices |
499 | foreach (GroupMembersData member in m_groupData.GetGroupMembers(GetClientGroupRequestID(remoteClient), GroupID)) | 495 | foreach (GroupMembersData member in m_groupData.GetGroupMembers(GetClientGroupRequestID(remoteClient), GroupID)) |
500 | { | 496 | { |
501 | if (m_debugEnabled) | 497 | if (member.AcceptNotices) |
502 | { | ||
503 | UserProfileData targetUserProfile = m_sceneList[0].CommsManager.UserService.GetUserProfile(member.AgentID); | ||
504 | if (targetUserProfile != null) | ||
505 | { | ||
506 | m_log.DebugFormat("[GROUPS]: Prepping group notice {0} for agent: {1} who Accepts Notices ({2})", NoticeID, targetUserProfile.Name, member.AcceptNotices); | ||
507 | } | ||
508 | else | ||
509 | { | ||
510 | m_log.DebugFormat("[GROUPS]: Prepping group notice {0} for agent: {1} who Accepts Notices ({2})", NoticeID, member.AgentID, member.AcceptNotices); | ||
511 | } | ||
512 | } | ||
513 | |||
514 | if (member.AcceptNotices) | ||
515 | { | 498 | { |
516 | // Build notice IIM | 499 | // Build notice IIM |
517 | GridInstantMessage msg = CreateGroupNoticeIM(UUID.Zero, NoticeID, (byte)OpenMetaverse.InstantMessageDialog.GroupNotice); | 500 | GridInstantMessage msg = CreateGroupNoticeIM(UUID.Zero, NoticeID, (byte)OpenMetaverse.InstantMessageDialog.GroupNotice); |
@@ -631,6 +614,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
631 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); | 614 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); |
632 | 615 | ||
633 | List<GroupMembersData> data = m_groupData.GetGroupMembers(GetClientGroupRequestID(remoteClient), groupID); | 616 | List<GroupMembersData> data = m_groupData.GetGroupMembers(GetClientGroupRequestID(remoteClient), groupID); |
617 | if (m_debugEnabled) | ||
618 | { | ||
619 | foreach (GroupMembersData member in data) | ||
620 | { | ||
621 | m_log.DebugFormat("[GROUPS]: {0} {1}", member.AgentID, member.Title); | ||
622 | } | ||
623 | } | ||
634 | 624 | ||
635 | return data; | 625 | return data; |
636 | 626 | ||
@@ -642,6 +632,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
642 | 632 | ||
643 | List<GroupRolesData> data = m_groupData.GetGroupRoles(GetClientGroupRequestID(remoteClient), groupID); | 633 | List<GroupRolesData> data = m_groupData.GetGroupRoles(GetClientGroupRequestID(remoteClient), groupID); |
644 | 634 | ||
635 | if (m_debugEnabled) | ||
636 | { | ||
637 | foreach (GroupRolesData member in data) | ||
638 | { | ||
639 | m_log.DebugFormat("[GROUPS]: {0} {1}", member.Title, member.Members); | ||
640 | } | ||
641 | } | ||
642 | |||
645 | return data; | 643 | return data; |
646 | 644 | ||
647 | } | 645 | } |
@@ -652,6 +650,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
652 | 650 | ||
653 | List<GroupRoleMembersData> data = m_groupData.GetGroupRoleMembers(GetClientGroupRequestID(remoteClient), groupID); | 651 | List<GroupRoleMembersData> data = m_groupData.GetGroupRoleMembers(GetClientGroupRequestID(remoteClient), groupID); |
654 | 652 | ||
653 | if (m_debugEnabled) | ||
654 | { | ||
655 | foreach (GroupRoleMembersData member in data) | ||
656 | { | ||
657 | m_log.DebugFormat("[GROUPS]: Av: {0} Role: {1}", member.MemberID, member.RoleID); | ||
658 | } | ||
659 | } | ||
660 | |||
655 | return data; | 661 | return data; |
656 | 662 | ||
657 | 663 | ||
@@ -802,7 +808,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
802 | { | 808 | { |
803 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); | 809 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); |
804 | 810 | ||
805 | // Security Checks are handled in the Groups Service. | 811 | // TODO: Security Checks? |
806 | 812 | ||
807 | GroupRequestID grID = GetClientGroupRequestID(remoteClient); | 813 | GroupRequestID grID = GetClientGroupRequestID(remoteClient); |
808 | 814 | ||
@@ -819,11 +825,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
819 | case OpenMetaverse.GroupRoleUpdate.UpdateAll: | 825 | case OpenMetaverse.GroupRoleUpdate.UpdateAll: |
820 | case OpenMetaverse.GroupRoleUpdate.UpdateData: | 826 | case OpenMetaverse.GroupRoleUpdate.UpdateData: |
821 | case OpenMetaverse.GroupRoleUpdate.UpdatePowers: | 827 | case OpenMetaverse.GroupRoleUpdate.UpdatePowers: |
822 | if (m_debugEnabled) | ||
823 | { | ||
824 | GroupPowers gp = (GroupPowers)powers; | ||
825 | m_log.DebugFormat("[GROUPS]: Role ({0}) updated with Powers ({1}) ({2})", name, powers.ToString(), gp.ToString()); | ||
826 | } | ||
827 | m_groupData.UpdateGroupRole(grID, groupID, roleID, name, description, title, powers); | 828 | m_groupData.UpdateGroupRole(grID, groupID, roleID, name, description, title, powers); |
828 | break; | 829 | break; |
829 | 830 | ||
@@ -1194,16 +1195,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
1194 | 1195 | ||
1195 | foreach (GroupMembershipData membership in data) | 1196 | foreach (GroupMembershipData membership in data) |
1196 | { | 1197 | { |
1197 | if (remoteClient.AgentId != dataForAgentID) | ||
1198 | { | ||
1199 | if (!membership.ListInProfile) | ||
1200 | { | ||
1201 | // If we're sending group info to remoteclient about another agent, | ||
1202 | // filter out groups the other agent doesn't want to share. | ||
1203 | continue; | ||
1204 | } | ||
1205 | } | ||
1206 | |||
1207 | OSDMap GroupDataMap = new OSDMap(6); | 1198 | OSDMap GroupDataMap = new OSDMap(6); |
1208 | OSDMap NewGroupDataMap = new OSDMap(1); | 1199 | OSDMap NewGroupDataMap = new OSDMap(1); |
1209 | 1200 | ||
@@ -1290,46 +1281,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
1290 | // to the core Groups Stub | 1281 | // to the core Groups Stub |
1291 | remoteClient.SendGroupMembership(new GroupMembershipData[0]); | 1282 | remoteClient.SendGroupMembership(new GroupMembershipData[0]); |
1292 | 1283 | ||
1293 | GroupMembershipData[] membershipArray = GetProfileListedGroupMemberships(remoteClient, dataForAgentID); | 1284 | GroupMembershipData[] membershipData = m_groupData.GetAgentGroupMemberships(GetClientGroupRequestID(remoteClient), dataForAgentID).ToArray(); |
1294 | SendGroupMembershipInfoViaCaps(remoteClient, dataForAgentID, membershipArray); | ||
1295 | remoteClient.SendAvatarGroupsReply(dataForAgentID, membershipArray); | ||
1296 | 1285 | ||
1297 | } | 1286 | SendGroupMembershipInfoViaCaps(remoteClient, dataForAgentID, membershipData); |
1298 | 1287 | remoteClient.SendAvatarGroupsReply(dataForAgentID, membershipData); | |
1299 | /// <summary> | ||
1300 | /// Get a list of groups memberships for the agent that are marked "ListInProfile" | ||
1301 | /// </summary> | ||
1302 | /// <param name="dataForAgentID"></param> | ||
1303 | /// <returns></returns> | ||
1304 | private GroupMembershipData[] GetProfileListedGroupMemberships(IClientAPI requestingClient, UUID dataForAgentID) | ||
1305 | { | ||
1306 | List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(GetClientGroupRequestID(requestingClient), dataForAgentID); | ||
1307 | GroupMembershipData[] membershipArray; | ||
1308 | |||
1309 | if (requestingClient.AgentId != dataForAgentID) | ||
1310 | { | ||
1311 | Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership) | ||
1312 | { | ||
1313 | return membership.ListInProfile; | ||
1314 | }; | ||
1315 | |||
1316 | membershipArray = membershipData.FindAll(showInProfile).ToArray(); | ||
1317 | } | ||
1318 | else | ||
1319 | { | ||
1320 | membershipArray = membershipData.ToArray(); | ||
1321 | } | ||
1322 | |||
1323 | if (m_debugEnabled) | ||
1324 | { | ||
1325 | m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId); | ||
1326 | foreach (GroupMembershipData membership in membershipArray) | ||
1327 | { | ||
1328 | m_log.InfoFormat("[GROUPS]: {0} :: {1} - {2}", dataForAgentID, membership.GroupName, membership.GroupTitle); | ||
1329 | } | ||
1330 | } | ||
1331 | 1288 | ||
1332 | return membershipArray; | ||
1333 | } | 1289 | } |
1334 | 1290 | ||
1335 | private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string activeGroupName, ulong activeGroupPowers, string activeGroupTitle) | 1291 | private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string activeGroupName, ulong activeGroupPowers, string activeGroupTitle) |