My apologies, but the previous code was completely ineffective on testing. I know, it should be tested before submission. Mea Culpa, it looked really good.<div><br></div><div>This, however, actually works:</div><div><br></div>
<div><div>1103d1102</div><div>< </div><div>1117,1125c1116,1125</div><div>< </div><div><                if (GetRequestingAgentID(remoteClient) != dataForAgentID)</div><div><                {</div><div><                    if (!membership.ListInProfile)</div>
<div><                    {</div><div><                       // If we're sending group info to remoteclient about another agent,</div><div><                       // filter out groups the other agent doesn't want to share.</div>
<div><                       continue;</div><div><                    }</div><div>---</div><div>>                 if (!remoteClient.Scene.Permissions.IsGod(remoteClient.AgentID))</div><div>>                     if (GetRequestingAgentID(remoteClient) != dataForAgentID)</div>
<div>>                     {</div><div>>                         if (!membership.ListInProfile)</div><div>>                         {</div><div>>                             // If we're sending group info to remoteclient about another agent, </div>
<div>>                             // filter out groups the other agent doesn't want to share.</div><div>>                             continue;</div><div>>                         }</div><div>>                     }</div>
<div>1128d1127</div><div>< </div><div>1237,1242c1236,1237</div><div><             //  c_scene and property accessor 'is_god' are in support of the opertions to bypass 'hidden' group attributes for</div>
<div><             // those with a GodLike aspect.</div><div><             Scene c_scene = (Scene) requestingClient.Scene;</div><div><             bool is_god = c_scene.Permissions.IsGod(requestingClient.AgentId);</div>
<div>< </div><div><             if(is_god) {</div><div>---</div><div>>             if (requestingClient.AgentId != dataForAgentID)</div><div>>             {</div><div>1248c1243</div><div><                 membershipArray = membershipData.ToArray();</div>
<div>---</div><div>>                 membershipArray = membershipData.FindAll(showInProfile).ToArray();</div><div>1252,1265c1247</div><div>< </div><div><                 if (requestingClient.AgentId != dataForAgentID)</div>
<div><                 {</div><div><                     Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)</div><div><                     {</div><div><                         return membership.ListInProfile;</div>
<div><                     };</div><div>< </div><div><                     membershipArray = membershipData.FindAll(showInProfile).ToArray();</div><div><                 }</div><div><                 else</div>
<div><                 {</div><div><                     membershipArray = membershipData.ToArray();</div><div><                 }</div><div>---</div><div>>                 membershipArray = membershipData.ToArray();</div>
<div>1266a1249</div><div>> </div><br><div class="gmail_quote">On Thu, May 26, 2011 at 11:36 AM, James Stallings II <span dir="ltr"><<a href="mailto:james.stallings@gmail.com">james.stallings@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div>Greetings, OpenSimulator developers :)</div><div><br></div><div>I'm writing to propose the addition of certain functionality to OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs, to wit:</div>
<div>
<br></div><div>Present 'Hidden' groups and other related group detail to agents requesting such iniformation via CAPs as have assumed a 'godlike' aspect, or in other words, have successfully activated the administrative functionality in the client.</div>

<div><br></div><div>The changes to the substance of the code involve credits more than not; a diff is both attached and included for convenient review. A fork has been created on github at git://<a href="http://github.com/JamesStallings/opensim.git" target="_blank">github.com/JamesStallings/opensim.git</a> which contains the changes for convenience should contribution of source be accepted. I will also open a mantis on the topic for the sake of thoroughness and attach the diff there.</div>

<div><br></div><div><br></div><div>Many thanks and cheers!</div><div><br></div><div>James Stallings aka Hiro Protagonist</div><div><br></div><div><br></div><div>Diff follows:</div><div><br></div><div>1103,1107d1102</div>
<div>
<             //  c_scene and property accessor 'is_god' are in support of the opertions to bypass 'hidden' group attributes for </div><div><             // those with a GodLike aspect.</div><div><             Scene c_scene = (Scene) remoteClient.Scene;</div>

<div><             bool is_god = c_scene.Permissions.IsGod(remoteClient.AgentId);</div><div><             </div><div>1121,1138c1116,1126</div><div>< //              bypass the 'hidden' attributes of groups for those who have </div>

<div>< //              a GodLike aspect</div><div>< //</div><div>< //              Big shout out to Dan Banner for showing me his running proof-of-concept and endorsing this idea as meaningful work</div><div>< //              Another big shout out to BlueWall Slade for helping me chase down all the elements required to properly access</div>

<div>< //              Scene and IClientAPI properties.  JS aka HP</div><div><                 if (!is_god)</div><div><                 {</div><div>< <span style="white-space:pre-wrap"> </span>                if (GetRequestingAgentID(remoteClient) != dataForAgentID)</div>

<div><         <span style="white-space:pre-wrap">     </span>        {</div><div><                 <span style="white-space:pre-wrap">   </span>    if (!membership.ListInProfile)</div>
<div>< <span style="white-space:pre-wrap">     </span>                    {</div><div><         <span style="white-space:pre-wrap">       </span>                // If we're sending group info to remoteclient about another agent, </div>

<div><                 <span style="white-space:pre-wrap">     </span>        // filter out groups the other agent doesn't want to share.</div><div><                         <span style="white-space:pre-wrap">     </span>continue;</div>

<div>< <span style="white-space:pre-wrap">     </span>                    }</div><div><         <span style="white-space:pre-wrap">       </span>        }</div><div>< <span style="white-space:pre-wrap">           </span>}</div>
<div>---</div><div>>                 if (!remoteClient.Scene.Permissions.IsGod(remoteClient.AgentID))</div><div>>                     if (GetRequestingAgentID(remoteClient) != dataForAgentID)</div><div>>                     {</div>

<div>>                         if (!membership.ListInProfile)</div><div>>                         {</div><div>>                             // If we're sending group info to remoteclient about another agent, </div>

<div>>                             // filter out groups the other agent doesn't want to share.</div><div>>                             continue;</div><div>>                         }</div><div>>                     }</div>

<div>>                 }</div><div><br></div><font color="#888888"><br>-- <br>===================================<br><a href="http://simhost.com" target="_blank">http://simhost.com</a> <a href="http://osgrid.org" target="_blank">http://osgrid.org</a><br>

<a href="http://twitter.com/jstallings2" target="_blank">http://twitter.com/jstallings2</a><br><a href="http://www.linkedin.com/pub/5/770/a49" target="_blank">http://www.linkedin.com/pub/5/770/a49</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>===================================<br><a href="http://simhost.com" target="_blank">http://simhost.com</a> <a href="http://osgrid.org" target="_blank">http://osgrid.org</a><br>
<a href="http://twitter.com/jstallings2" target="_blank">http://twitter.com/jstallings2</a><br><a href="http://www.linkedin.com/pub/5/770/a49" target="_blank">http://www.linkedin.com/pub/5/770/a49</a><br>
</div>