From 87fe96ae2c48216d006a02ef22392f0838fba17f Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 26 Mar 2010 00:10:29 +0000 Subject: replace recent IModule.GetGroup() with better GetGroupRecord(string name) --- .../Avatar/XmlRpcGroups/GroupsModule.cs | 46 ++++++++++++---------- .../XmlRpcGroupsServicesConnectorModule.cs | 3 -- 2 files changed, 26 insertions(+), 23 deletions(-) (limited to 'OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups') diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs index 8ea4b93..b011295 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs @@ -365,7 +365,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups SendScenePresenceUpdate(dataForAgentID, activeGroupTitle); } - private void HandleUUIDGroupNameRequest(UUID GroupID,IClientAPI remoteClient) + private void HandleUUIDGroupNameRequest(UUID GroupID, IClientAPI remoteClient) { if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); @@ -595,6 +595,31 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups return m_groupData.GetGroupRecord(null, GroupID, null); } + public GroupRecord GetGroupRecord(string name) + { + if (m_debugEnabled) + m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); + + // XXX: Two call implementation. This could be done in a single call if the server itself were to + // implement the code below. + + List groups = m_groupData.FindGroups(null, name); + + DirGroupsReplyData? foundGroup = null; + + foreach (DirGroupsReplyData group in groups) + { + // We must have an exact match - I believe FindGroups will return partial matches + if (group.groupName == name) + foundGroup = group; + } + + if (null == foundGroup) + return null; + + return GetGroupRecord(((DirGroupsReplyData)foundGroup).groupID); + } + public void ActivateGroup(IClientAPI remoteClient, UUID groupID) { if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); @@ -768,25 +793,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups return groupID; } - public DirGroupsReplyData? GetGroup(string name) - { - if (m_debugEnabled) - m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); - - List groups = m_groupData.FindGroups(null, name); - - DirGroupsReplyData? foundGroup = null; - - foreach (DirGroupsReplyData group in groups) - { - // We must have an exact match - I believe FindGroups will return partial matches - if (group.groupName == name) - foundGroup = group; - } - - return foundGroup; - } - public GroupNoticeData[] GroupNoticesListRequest(IClientAPI remoteClient, UUID groupID) { if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs index af1018f..24ae4f7 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs @@ -352,11 +352,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups MemberGroupProfile.PowersMask = MemberInfo.GroupPowers; return MemberGroupProfile; - } - - public void SetAgentActiveGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID) { Hashtable param = new Hashtable(); -- cgit v1.1