aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups')
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs27
1 files changed, 22 insertions, 5 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
index 1c791b9..05223e0 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
@@ -1231,20 +1231,36 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1231 List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(requestingClient.AgentId, dataForAgentID); 1231 List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(requestingClient.AgentId, dataForAgentID);
1232 GroupMembershipData[] membershipArray; 1232 GroupMembershipData[] membershipArray;
1233 1233
1234 if (requestingClient.AgentId != dataForAgentID) 1234 // c_scene and property accessor 'is_god' are in support of the opertions to bypass 'hidden' group attributes for
1235 { 1235 // those with a GodLike aspect.
1236 Scene c_scene = (Scene) requestingClient.Scene;
1237 bool is_god = c_scene.Permissions.IsGod(requestingClient.AgentId);
1238
1239 if(is_god) {
1236 Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership) 1240 Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)
1237 { 1241 {
1238 return membership.ListInProfile; 1242 return membership.ListInProfile;
1239 }; 1243 };
1240 1244
1241 membershipArray = membershipData.FindAll(showInProfile).ToArray(); 1245 membershipArray = membershipData.ToArray();
1242 } 1246 }
1243 else 1247 else
1244 { 1248 {
1245 membershipArray = membershipData.ToArray();
1246 }
1247 1249
1250 if (requestingClient.AgentId != dataForAgentID)
1251 {
1252 Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)
1253 {
1254 return membership.ListInProfile;
1255 };
1256
1257 membershipArray = membershipData.FindAll(showInProfile).ToArray();
1258 }
1259 else
1260 {
1261 membershipArray = membershipData.ToArray();
1262 }
1263 }
1248 if (m_debugEnabled) 1264 if (m_debugEnabled)
1249 { 1265 {
1250 m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId); 1266 m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId);
@@ -1257,6 +1273,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1257 return membershipArray; 1273 return membershipArray;
1258 } 1274 }
1259 1275
1276
1260 private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string activeGroupName, ulong activeGroupPowers, string activeGroupTitle) 1277 private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string activeGroupName, ulong activeGroupPowers, string activeGroupTitle)
1261 { 1278 {
1262 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 1279 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);