From 4945ae17d3692f089ce6c996f6585a5e5b308e4d Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Thu, 29 Aug 2013 11:36:45 -0700 Subject: Initial commit for GroupBan - Lots of crap isn't working as intended yet. --- indra/newview/llgroupmgr.cpp | 172 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 153 insertions(+), 19 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index cbd844cdac..0d4b678019 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -231,11 +231,13 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) : mMemberCount(0), mRoleCount(0), mReceivedRoleMemberPairs(0), - mMemberDataComplete(FALSE), - mRoleDataComplete(FALSE), - mRoleMemberDataComplete(FALSE), - mGroupPropertiesDataComplete(FALSE), - mPendingRoleMemberRequest(FALSE), + mMemberDataComplete(false), + mRoleDataComplete(false), + mRoleMemberDataComplete(false), + mGroupPropertiesDataComplete(false), + mGroupBanStatus(STATUS_INIT), + mGroupBanDataComplete(false), + mPendingRoleMemberRequest(false), mAccessTime(0.0f) { mMemberVersion.generate(); @@ -424,7 +426,7 @@ void LLGroupMgrGroupData::removeMemberData() delete mi->second; } mMembers.clear(); - mMemberDataComplete = FALSE; + mMemberDataComplete = false; mMemberVersion.generate(); } @@ -446,8 +448,8 @@ void LLGroupMgrGroupData::removeRoleData() } mRoles.clear(); mReceivedRoleMemberPairs = 0; - mRoleDataComplete = FALSE; - mRoleMemberDataComplete = FALSE; + mRoleDataComplete = false; + mRoleMemberDataComplete= false; } void LLGroupMgrGroupData::removeRoleMemberData() @@ -471,7 +473,7 @@ void LLGroupMgrGroupData::removeRoleMemberData() } mReceivedRoleMemberPairs = 0; - mRoleMemberDataComplete = FALSE; + mRoleMemberDataComplete= false; } LLGroupMgrGroupData::~LLGroupMgrGroupData() @@ -742,6 +744,22 @@ void LLGroupMgrGroupData::cancelRoleChanges() // Clear out all changes! mRoleChanges.clear(); } + +void LLGroupMgrGroupData::createBanEntry(const LLUUID& ban_id, const LLGroupBanData& ban_data) +{ + mBanList[ban_id] = ban_data; +} + +bool LLGroupMgrGroupData::removeBanEntry(const LLUUID& ban_id) +{ + // Once we get this hooked up to the backend, we want to confirm the create or delete worked. + mBanList.erase(ban_id); + return true; +} + + + + // // LLGroupMgr // @@ -951,12 +969,12 @@ void LLGroupMgr::processGroupMembersReply(LLMessageSystem* msg, void** data) if (group_datap->mMembers.size() == (U32)group_datap->mMemberCount) { - group_datap->mMemberDataComplete = TRUE; + group_datap->mMemberDataComplete = true; group_datap->mMemberRequestID.setNull(); // We don't want to make role-member data requests until we have all the members if (group_datap->mPendingRoleMemberRequest) { - group_datap->mPendingRoleMemberRequest = FALSE; + group_datap->mPendingRoleMemberRequest = false; LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(group_datap->mID); } } @@ -1026,7 +1044,7 @@ void LLGroupMgr::processGroupPropertiesReply(LLMessageSystem* msg, void** data) group_datap->mMemberCount = num_group_members; group_datap->mRoleCount = num_group_roles + 1; // Add the everyone role. - group_datap->mGroupPropertiesDataComplete = TRUE; + group_datap->mGroupPropertiesDataComplete = true; group_datap->mChanged = TRUE; LLGroupMgr::getInstance()->notifyObservers(GC_PROPERTIES); @@ -1103,12 +1121,12 @@ void LLGroupMgr::processGroupRoleDataReply(LLMessageSystem* msg, void** data) if (group_datap->mRoles.size() == (U32)group_datap->mRoleCount) { - group_datap->mRoleDataComplete = TRUE; + group_datap->mRoleDataComplete = true; group_datap->mRoleDataRequestID.setNull(); // We don't want to make role-member data requests until we have all the role data if (group_datap->mPendingRoleMemberRequest) { - group_datap->mPendingRoleMemberRequest = FALSE; + group_datap->mPendingRoleMemberRequest = false; LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(group_datap->mID); } } @@ -1217,7 +1235,7 @@ void LLGroupMgr::processGroupRoleMembersReply(LLMessageSystem* msg, void** data) } } - group_datap->mRoleMemberDataComplete = TRUE; + group_datap->mRoleMemberDataComplete= true; group_datap->mRoleMembersRequestID.setNull(); } @@ -1543,7 +1561,7 @@ void LLGroupMgr::sendGroupRoleMembersRequest(const LLUUID& group_id) llinfos << " Pending: " << (group_datap->mPendingRoleMemberRequest ? "Y" : "N") << " MemberDataComplete: " << (group_datap->mMemberDataComplete ? "Y" : "N") << " RoleDataComplete: " << (group_datap->mRoleDataComplete ? "Y" : "N") << llendl; - group_datap->mPendingRoleMemberRequest = TRUE; + group_datap->mPendingRoleMemberRequest = true; return; } @@ -1840,6 +1858,122 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, } +// Responder class for capability group management +class GroupBanDataResponder : public LLHTTPClient::Responder +{ +public: + GroupBanDataResponder() {} + virtual ~GroupBanDataResponder() {} + virtual void result(const LLSD& pContent); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); +}; + +void GroupBanDataResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) +{ + LL_WARNS("GrpMgr") << "Error receiving group member data [status:" + << pStatus << "]: " << pContent << LL_ENDL; +} + +void GroupBanDataResponder::result(const LLSD& content) +{ + LL_INFOS("GrpMgr") << "[BAKER] Received ban data!" << LL_ENDL; + LLGroupMgr::processGroupBanRequest(content); +} + +void LLGroupMgr::sendGroupBanRequest(EBanRequestType request_type, const LLUUID& group_id, const std::vector ban_list /* = std::vector() */) +{ + LLViewerRegion* currentRegion = gAgent.getRegion(); + if(!currentRegion) + { + LL_WARNS("GrpMgr") << "Agent does not have a current region. Uh-oh!" << LL_ENDL; + return; + } + + // Check to make sure we have our capabilities + if(!currentRegion->capabilitiesReceived()) + { + LL_WARNS("GrpMgr") << " Capabilities not received!" << LL_ENDL; + return; + } + + // Get our capability + std::string cap_url = currentRegion->getCapability("GroupBan"); + if(cap_url.empty()) + { + return; + } + + LLHTTPClient::ResponderPtr grp_ban_responder = new GroupBanDataResponder(); + // PUT to our service. Add a body containing the group_id and list of agents to ban. + LLSD ban_ids = LLSD::emptyMap(); + ban_ids["group_id"] = group_id; + // Add our list of potential banned agents to the list + ban_ids["ban_ids"] = LLSD::emptyArray(); + LLSD ban_entry; + std::vector::const_iterator iter = ban_list.cbegin(); + for(;iter != ban_list.end(); ++iter) + { + ban_entry = (*iter); + ban_ids["ban_ids"].append(ban_entry); + } + + switch(request_type) + { + case REQUEST_GET: + cap_url += "?group_id=" + group_id.asString(); + LLHTTPClient::get(cap_url, grp_ban_responder); + break; + case REQUEST_PUT: + // BAKER TODO: Figure out which 'body' is correct. + LLHTTPClient::put(cap_url, ban_ids, grp_ban_responder, LLSD(), 60); + break; + case REQUEST_DEL: + LLHTTPClient::del(cap_url, grp_ban_responder, ban_ids, 60); + break; + } + + LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(group_id); + if (gdatap) + gdatap->setGroupBanStatus(LLGroupMgrGroupData::STATUS_REQUESTING); +} + + +void LLGroupMgr::processGroupBanRequest(const LLSD& content) +{ + // Did we get anything in content? + if(!content.size()) + { + LL_DEBUGS("GrpMgr") << "No group member data received." << LL_ENDL; + return; + } + + LLUUID group_id = content["group_id"].asUUID(); + + LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(group_id); + if (!gdatap) + return; + + LLSD banlist = LLSD::emptyMap(); + + + LLSD::map_const_iterator i = content["ban_list"].beginMap(); + LLSD::map_const_iterator iEnd = content["ban_list"].endMap(); + for(;i != iEnd; ++i) + { + const LLUUID ban_id(i->first); + // We have nothing right now inside our banlist map. + // Once ban_date is implemented, set that here! + // + gdatap->createBanEntry(ban_id, LLGroupBanData()); + } + + gdatap->mChanged = TRUE; + gdatap->setGroupBanStatus(LLGroupMgrGroupData::STATUS_COMPLETE); + LLGroupMgr::getInstance()->notifyObservers(GC_BANLIST); +} + + + // Responder class for capability group management class GroupMemberDataResponder : public LLHTTPClient::Responder { @@ -1925,7 +2059,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) if(num_members < 1) return; - LLUUID group_id = content["group_id"].asUUID(); + LLUUID group_id = content["group_id"].asUUID(); LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id); if(!group_datap) @@ -2008,12 +2142,12 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) LLGroupMgr::getInstance()->sendGroupTitlesRequest(group_id); - group_datap->mMemberDataComplete = TRUE; + group_datap->mMemberDataComplete = true; group_datap->mMemberRequestID.setNull(); // Make the role-member data request if (group_datap->mPendingRoleMemberRequest) { - group_datap->mPendingRoleMemberRequest = FALSE; + group_datap->mPendingRoleMemberRequest = false; LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(group_id); } -- cgit v1.2.3 From 1299f6d63fbe313329e6e5ced7be797e2a23d6a7 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Fri, 30 Aug 2013 16:38:25 -0700 Subject: - Got all major functionality working - Changed PUT and DEL to POST which accepts an enum for a create or delete --- indra/newview/llgroupmgr.cpp | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 0d4b678019..bfdb8588e4 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -235,8 +235,7 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) : mRoleDataComplete(false), mRoleMemberDataComplete(false), mGroupPropertiesDataComplete(false), - mGroupBanStatus(STATUS_INIT), - mGroupBanDataComplete(false), + mGroupBanStatus(LLGroupMgrGroupData::STATUS_INIT), mPendingRoleMemberRequest(false), mAccessTime(0.0f) { @@ -748,13 +747,14 @@ void LLGroupMgrGroupData::cancelRoleChanges() void LLGroupMgrGroupData::createBanEntry(const LLUUID& ban_id, const LLGroupBanData& ban_data) { mBanList[ban_id] = ban_data; + // Refresh the list } -bool LLGroupMgrGroupData::removeBanEntry(const LLUUID& ban_id) +void LLGroupMgrGroupData::removeBanEntry(const LLUUID& ban_id) { // Once we get this hooked up to the backend, we want to confirm the create or delete worked. mBanList.erase(ban_id); - return true; + // Refresh the list } @@ -1880,7 +1880,10 @@ void GroupBanDataResponder::result(const LLSD& content) LLGroupMgr::processGroupBanRequest(content); } -void LLGroupMgr::sendGroupBanRequest(EBanRequestType request_type, const LLUUID& group_id, const std::vector ban_list /* = std::vector() */) +void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, + const LLUUID& group_id, + EBanRequestAction ban_action, /* = BAN_NO_ACTION */ + const std::vector ban_list) /* = std::vector() */ { LLViewerRegion* currentRegion = gAgent.getRegion(); if(!currentRegion) @@ -1902,39 +1905,31 @@ void LLGroupMgr::sendGroupBanRequest(EBanRequestType request_type, const LLUUID& { return; } + cap_url += "?group_id=" + group_id.asString(); - LLHTTPClient::ResponderPtr grp_ban_responder = new GroupBanDataResponder(); - // PUT to our service. Add a body containing the group_id and list of agents to ban. - LLSD ban_ids = LLSD::emptyMap(); - ban_ids["group_id"] = group_id; + LLSD body = LLSD::emptyMap(); + body["ban_action"] = ban_action; // Add our list of potential banned agents to the list - ban_ids["ban_ids"] = LLSD::emptyArray(); + body["ban_ids"] = LLSD::emptyArray(); LLSD ban_entry; - std::vector::const_iterator iter = ban_list.cbegin(); + + uuid_vec_t::const_iterator iter = ban_list.begin(); for(;iter != ban_list.end(); ++iter) { ban_entry = (*iter); - ban_ids["ban_ids"].append(ban_entry); + body["ban_ids"].append(ban_entry); } + LLHTTPClient::ResponderPtr grp_ban_responder = new GroupBanDataResponder(); switch(request_type) { case REQUEST_GET: - cap_url += "?group_id=" + group_id.asString(); LLHTTPClient::get(cap_url, grp_ban_responder); break; - case REQUEST_PUT: - // BAKER TODO: Figure out which 'body' is correct. - LLHTTPClient::put(cap_url, ban_ids, grp_ban_responder, LLSD(), 60); - break; - case REQUEST_DEL: - LLHTTPClient::del(cap_url, grp_ban_responder, ban_ids, 60); + case REQUEST_POST: + LLHTTPClient::post(cap_url, body, grp_ban_responder); break; } - - LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(group_id); - if (gdatap) - gdatap->setGroupBanStatus(LLGroupMgrGroupData::STATUS_REQUESTING); } @@ -1953,7 +1948,7 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) if (!gdatap) return; - LLSD banlist = LLSD::emptyMap(); + //LLSD banlist = LLSD::emptyMap(); LLSD::map_const_iterator i = content["ban_list"].beginMap(); -- cgit v1.2.3 From bf34eccf9c68f204c41d3daea791e50e87d868db Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Mon, 9 Sep 2013 17:29:33 -0700 Subject: - Start of code cleanup - Added refresh button to ban list panel - Added an additional signal to LLNameListCtrl to indicate when the entire name cache is complete. --- indra/newview/llgroupmgr.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index bfdb8588e4..7cb53066ea 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -235,7 +235,6 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) : mRoleDataComplete(false), mRoleMemberDataComplete(false), mGroupPropertiesDataComplete(false), - mGroupBanStatus(LLGroupMgrGroupData::STATUS_INIT), mPendingRoleMemberRequest(false), mAccessTime(0.0f) { @@ -747,14 +746,11 @@ void LLGroupMgrGroupData::cancelRoleChanges() void LLGroupMgrGroupData::createBanEntry(const LLUUID& ban_id, const LLGroupBanData& ban_data) { mBanList[ban_id] = ban_data; - // Refresh the list } void LLGroupMgrGroupData::removeBanEntry(const LLUUID& ban_id) { - // Once we get this hooked up to the backend, we want to confirm the create or delete worked. mBanList.erase(ban_id); - // Refresh the list } @@ -1948,9 +1944,6 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) if (!gdatap) return; - //LLSD banlist = LLSD::emptyMap(); - - LLSD::map_const_iterator i = content["ban_list"].beginMap(); LLSD::map_const_iterator iEnd = content["ban_list"].endMap(); for(;i != iEnd; ++i) @@ -1963,7 +1956,7 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) } gdatap->mChanged = TRUE; - gdatap->setGroupBanStatus(LLGroupMgrGroupData::STATUS_COMPLETE); +// gdatap->setGroupBanStatus(LLGroupMgrGroupData::STATUS_COMPLETE); LLGroupMgr::getInstance()->notifyObservers(GC_BANLIST); } -- cgit v1.2.3 From 34f561db55868185f0a946009f41f4f212366484 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Fri, 13 Sep 2013 17:20:04 -0700 Subject: - Added ban date to ban list ui - Code cleanup --- indra/newview/llgroupmgr.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 7cb53066ea..7e7098420d 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1872,7 +1872,6 @@ void GroupBanDataResponder::errorWithContent(U32 pStatus, const std::string& pRe void GroupBanDataResponder::result(const LLSD& content) { - LL_INFOS("GrpMgr") << "[BAKER] Received ban data!" << LL_ENDL; LLGroupMgr::processGroupBanRequest(content); } @@ -1934,7 +1933,7 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) // Did we get anything in content? if(!content.size()) { - LL_DEBUGS("GrpMgr") << "No group member data received." << LL_ENDL; + LL_WARNS("GrpMgr") << "No group member data received." << LL_ENDL; return; } @@ -1949,14 +1948,18 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) for(;i != iEnd; ++i) { const LLUUID ban_id(i->first); - // We have nothing right now inside our banlist map. - // Once ban_date is implemented, set that here! - // - gdatap->createBanEntry(ban_id, LLGroupBanData()); + LLSD ban_entry(i->second); + + LLGroupBanData ban_data; + if(ban_entry.has("ban_date")) + { + ban_data.mBanDate = ban_entry["ban_date"].asDate(); + } + + gdatap->createBanEntry(ban_id, ban_data); } gdatap->mChanged = TRUE; -// gdatap->setGroupBanStatus(LLGroupMgrGroupData::STATUS_COMPLETE); LLGroupMgr::getInstance()->notifyObservers(GC_BANLIST); } -- cgit v1.2.3 From efd2ecd2e910a0bae93d195ea3add0ae250735ee Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Wed, 2 Oct 2013 13:38:56 -0700 Subject: Attempting fix for TC build issue. --- indra/newview/llgroupmgr.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 7e7098420d..dee861a5b7 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1924,6 +1924,9 @@ void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, case REQUEST_POST: LLHTTPClient::post(cap_url, body, grp_ban_responder); break; + case REQUEST_PUT: + case REQUEST_DELETE: + break; } } -- cgit v1.2.3 From 1bd75cce8e59145da73540dd331536faa1ca9b17 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Wed, 2 Oct 2013 13:55:36 -0700 Subject: Enum typo, whoops! --- indra/newview/llgroupmgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index dee861a5b7..f5cf025875 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1925,7 +1925,7 @@ void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, LLHTTPClient::post(cap_url, body, grp_ban_responder); break; case REQUEST_PUT: - case REQUEST_DELETE: + case REQUEST_DEL: break; } } -- cgit v1.2.3 From 427a33d6108ada1c8ca2e046b87b5d035b0ac877 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Wed, 9 Oct 2013 17:03:24 -0700 Subject: [GroupBan] Minor fixes / Code review Reviewer: Richard Linden - Minor fixes from code review - Continue stubbing out ban_reason, or implement it (depending on how quickly I can do it, though stubbing out ban_reason will be sufficient, which it is now) - Fixed an issue where a ban list string in the actions tab wasn't showing up properly --- indra/newview/llgroupmgr.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index f5cf025875..1e5c43dcdf 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1957,6 +1957,7 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) if(ban_entry.has("ban_date")) { ban_data.mBanDate = ban_entry["ban_date"].asDate(); + // TODO: Ban Reason } gdatap->createBanEntry(ban_id, ban_data); -- cgit v1.2.3 From 25d0a3e029cb68a14cc7c3417cc43cb3ffa90925 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Thu, 6 Feb 2014 16:19:03 -0800 Subject: [GroupBan] When adding "Manage Ban List" ability additionally grant requisite abilities - Viewer side implementation for MAINT-3467 complete --- indra/newview/llgroupmgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 1e5c43dcdf..a33731a200 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1895,7 +1895,7 @@ void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, } // Get our capability - std::string cap_url = currentRegion->getCapability("GroupBan"); + std::string cap_url = currentRegion->getCapability("GroupAPIv1"); if(cap_url.empty()) { return; -- cgit v1.2.3 From 1ca5dd40765211dc993393caa0003cfa7505c1f5 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Tue, 8 Apr 2014 16:34:49 -0700 Subject: [GroupBan] [MAINT-3722] - Banning from 'banned agents' tab does not eject them from the group - Banning a resident from the "Banned Agents" tab should not properly eject them from the group. - Renamed "Banned Agents" to "Banned Residents". Updated tool tip as well. - You should now receive an eject notification when banning an agent from the "Banned Residents" tab. --- indra/newview/llgroupmgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 290b0d6f15..7288dddd3d 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1905,7 +1905,7 @@ void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, LLSD body = LLSD::emptyMap(); body["ban_action"] = ban_action; - // Add our list of potential banned agents to the list + // Add our list of potential banned residents to the list body["ban_ids"] = LLSD::emptyArray(); LLSD ban_entry; -- cgit v1.2.3 From efc9422d1b87f2ccf191acde107652102ebf95d0 Mon Sep 17 00:00:00 2001 From: maksymsproductengine Date: Thu, 29 May 2014 03:24:13 +0300 Subject: MAINT-3351 FIXED Misleading failure message when user is successfully removed from a group's Owners role --- indra/newview/llgroupmgr.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 83ce2b0483..081f47df41 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -611,6 +611,11 @@ void LLGroupMgrGroupData::recalcAgentPowers(const LLUUID& agent_id) } } +bool LLGroupMgrGroupData::isSingleMemberNotOwner() +{ + return mMembers.size() == 1 && !mMembers.begin()->second->isOwner(); +} + bool packRoleUpdateMessageBlock(LLMessageSystem* msg, const LLUUID& group_id, const LLUUID& role_id, -- cgit v1.2.3 From f0eb544148456f05bd1c6390542192911df32364 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 4 Jun 2014 18:38:01 +0300 Subject: MAINT-3386 FIXED [vwr] Banned Agents list does not show newly-banned residents --- indra/newview/llgroupmgr.cpp | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 081f47df41..0801568a93 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1866,12 +1866,20 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, class GroupBanDataResponder : public LLHTTPClient::Responder { public: - GroupBanDataResponder() {} + GroupBanDataResponder(const LLUUID& gropup_id, BOOL force_refresh=false); virtual ~GroupBanDataResponder() {} virtual void result(const LLSD& pContent); virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); +private: + LLUUID mGroupID; + BOOL mForceRefresh; }; +GroupBanDataResponder::GroupBanDataResponder(const LLUUID& gropup_id, BOOL force_refresh) : + mGroupID(gropup_id), + mForceRefresh(force_refresh) +{} + void GroupBanDataResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { LL_WARNS("GrpMgr") << "Error receiving group member data [status:" @@ -1880,12 +1888,32 @@ void GroupBanDataResponder::errorWithContent(U32 pStatus, const std::string& pRe void GroupBanDataResponder::result(const LLSD& content) { - LLGroupMgr::processGroupBanRequest(content); + if ( content.size()) + { + if (content.has("ban_list")) + { + // group data received + LLGroupMgr::processGroupBanRequest(content); + } + // no group data received, this is either CREATE or DELETE operation + // complete confirmation. Local data may be obsolete. + else if (mForceRefresh) + { + // providing mGroupId and not extracting it from content since it is not + // included into CREATE and DELETE responses + LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_GET, mGroupID); + } + } + else + { + LL_WARNS("GrpMgr") << "No group member data received." << LL_ENDL; + return; + } } void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, const LLUUID& group_id, - EBanRequestAction ban_action, /* = BAN_NO_ACTION */ + U32 ban_action, /* = BAN_NO_ACTION */ const std::vector ban_list) /* = std::vector() */ { LLViewerRegion* currentRegion = gAgent.getRegion(); @@ -1911,7 +1939,7 @@ void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, cap_url += "?group_id=" + group_id.asString(); LLSD body = LLSD::emptyMap(); - body["ban_action"] = ban_action; + body["ban_action"] = (LLSD::Integer)(ban_action & ~BAN_UPDATE); // Add our list of potential banned residents to the list body["ban_ids"] = LLSD::emptyArray(); LLSD ban_entry; @@ -1923,7 +1951,7 @@ void LLGroupMgr::sendGroupBanRequest( EBanRequestType request_type, body["ban_ids"].append(ban_entry); } - LLHTTPClient::ResponderPtr grp_ban_responder = new GroupBanDataResponder(); + LLHTTPClient::ResponderPtr grp_ban_responder = new GroupBanDataResponder(group_id, ban_action & BAN_UPDATE); switch(request_type) { case REQUEST_GET: -- cgit v1.2.3 From a7db93cb698d81ea5005ed4be453fbddd65e0cc0 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 19 Jun 2014 21:23:14 +0300 Subject: MAINT-4182 FIXED The group ban list always appears empty --- indra/newview/llgroupmgr.cpp | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 61c3bbb13a..50e3ab6dd8 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1868,8 +1868,8 @@ class GroupBanDataResponder : public LLHTTPClient::Responder public: GroupBanDataResponder(const LLUUID& gropup_id, BOOL force_refresh=false); virtual ~GroupBanDataResponder() {} - virtual void result(const LLSD& pContent); - virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); + virtual void httpSuccess(); + virtual void httpFailure(); private: LLUUID mGroupID; BOOL mForceRefresh; @@ -1880,34 +1880,27 @@ GroupBanDataResponder::GroupBanDataResponder(const LLUUID& gropup_id, BOOL force mForceRefresh(force_refresh) {} -void GroupBanDataResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) +void GroupBanDataResponder::httpFailure() { LL_WARNS("GrpMgr") << "Error receiving group member data [status:" - << pStatus << "]: " << pContent << LL_ENDL; + << mStatus << "]: " << mContent << LL_ENDL; } -void GroupBanDataResponder::result(const LLSD& content) +void GroupBanDataResponder::httpSuccess() { - if ( content.size()) + if ( mContent.size()) { - if (content.has("ban_list")) + if (mContent.has("ban_list")) { - // group data received - LLGroupMgr::processGroupBanRequest(content); - } - // no group data received, this is either CREATE or DELETE operation - // complete confirmation. Local data may be obsolete. - else if (mForceRefresh) - { - // providing mGroupId and not extracting it from content since it is not - // included into CREATE and DELETE responses - LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_GET, mGroupID); + // group ban data received + LLGroupMgr::processGroupBanRequest(mContent); + mForceRefresh = false; } } - else + if (mForceRefresh) { - LL_WARNS("GrpMgr") << "No group member data received." << LL_ENDL; - return; + // no ban data received, refreshing data after successful operation + LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_GET, mGroupID); } } -- cgit v1.2.3 From 845b80a3864093ebed940551d91441e45e4b50b9 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 23 Jun 2014 13:25:17 +0300 Subject: MAINT-4182 Cleaning up --- indra/newview/llgroupmgr.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 50e3ab6dd8..98036f3a20 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1888,16 +1888,12 @@ void GroupBanDataResponder::httpFailure() void GroupBanDataResponder::httpSuccess() { - if ( mContent.size()) + if (mContent.has("ban_list")) { - if (mContent.has("ban_list")) - { - // group ban data received - LLGroupMgr::processGroupBanRequest(mContent); - mForceRefresh = false; - } + // group ban data received + LLGroupMgr::processGroupBanRequest(mContent); } - if (mForceRefresh) + else if (mForceRefresh) { // no ban data received, refreshing data after successful operation LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_GET, mGroupID); -- cgit v1.2.3 From 9f5fc6efbd3f3e4418372425734372b5a9bb5d35 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 17 Jul 2014 20:30:35 +0300 Subject: MAINT-4241 FIXED [Group Bans] Ban member(s) button is not greyed out for banning group owners. Viewer gives message that you ejected group owner. --- indra/newview/llgroupmgr.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 98036f3a20..56e671d902 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -2154,6 +2154,22 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) online_status, is_owner); + LLGroupMemberData* member_old = group_datap->mMembers[member_id]; + if (member_old && group_datap->mRoleMemberDataComplete) + { + LLGroupMemberData::role_list_t::iterator rit = member_old->roleBegin(); + LLGroupMemberData::role_list_t::iterator end = member_old->roleEnd(); + + for ( ; rit != end; ++rit) + { + data->addRole((*rit).first,(*rit).second); + } + } + else + { + group_datap->mRoleMemberDataComplete = false; + } + group_datap->mMembers[member_id] = data; } @@ -2173,7 +2189,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) group_datap->mMemberDataComplete = true; group_datap->mMemberRequestID.setNull(); // Make the role-member data request - if (group_datap->mPendingRoleMemberRequest) + if (group_datap->mPendingRoleMemberRequest || !group_datap->mRoleMemberDataComplete) { group_datap->mPendingRoleMemberRequest = false; LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(group_id); -- cgit v1.2.3