aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs31
1 files changed, 22 insertions, 9 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
index 1c791b9..61c5503 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
@@ -1223,6 +1223,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1223 1223
1224 /// <summary> 1224 /// <summary>
1225 /// Get a list of groups memberships for the agent that are marked "ListInProfile" 1225 /// Get a list of groups memberships for the agent that are marked "ListInProfile"
1226 /// (unless that agent has a godLike aspect, in which case get all groups)
1226 /// </summary> 1227 /// </summary>
1227 /// <param name="dataForAgentID"></param> 1228 /// <param name="dataForAgentID"></param>
1228 /// <returns></returns> 1229 /// <returns></returns>
@@ -1231,20 +1232,31 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1231 List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(requestingClient.AgentId, dataForAgentID); 1232 List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(requestingClient.AgentId, dataForAgentID);
1232 GroupMembershipData[] membershipArray; 1233 GroupMembershipData[] membershipArray;
1233 1234
1234 if (requestingClient.AgentId != dataForAgentID) 1235 // cScene and property accessor 'isGod' are in support of the opertions to bypass 'hidden' group attributes for
1235 { 1236 // those with a GodLike aspect.
1236 Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership) 1237 Scene cScene = (Scene) requestingClient.Scene;
1237 { 1238 bool isGod = cScene.Permissions.IsGod(requestingClient.AgentId);
1238 return membership.ListInProfile;
1239 };
1240 1239
1241 membershipArray = membershipData.FindAll(showInProfile).ToArray(); 1240 if (isGod) {
1241 membershipArray = membershipData.ToArray();
1242 } 1242 }
1243 else 1243 else
1244 { 1244 {
1245 membershipArray = membershipData.ToArray();
1246 }
1247 1245
1246 if (requestingClient.AgentId != dataForAgentID)
1247 {
1248 Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)
1249 {
1250 return membership.ListInProfile;
1251 };
1252
1253 membershipArray = membershipData.FindAll(showInProfile).ToArray();
1254 }
1255 else
1256 {
1257 membershipArray = membershipData.ToArray();
1258 }
1259 }
1248 if (m_debugEnabled) 1260 if (m_debugEnabled)
1249 { 1261 {
1250 m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId); 1262 m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId);
@@ -1257,6 +1269,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1257 return membershipArray; 1269 return membershipArray;
1258 } 1270 }
1259 1271
1272
1260 private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string activeGroupName, ulong activeGroupPowers, string activeGroupTitle) 1273 private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string activeGroupName, ulong activeGroupPowers, string activeGroupTitle)
1261 { 1274 {
1262 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 1275 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);