diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.cpp b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.cpp index 8bcb30f2..2125ae45 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.cpp +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.cpp @@ -664,6 +664,11 @@ bool pyVault::SetAgePublic( const pyAgeInfoStruct * ageInfo, bool makePublic ) return VaultSetOwnedAgePublicAndWait(ageInfo->GetAgeInfo(), makePublic); } +bool pyVault::SetAgePublic( const pyVaultAgeInfoNode * ageInfoNode, bool makePublic ) +{ + return VaultSetAgePublicAndWait(ageInfoNode->GetNode(), makePublic); +} + PyObject* pyVault::GetGlobalInbox( void ) { diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.h index 29b139fc..5523f62d 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.h @@ -176,6 +176,8 @@ public: void CreateNeighborhood(); // set an age's public status. will fail if you aren't czar of age. bool SetAgePublic( const pyAgeInfoStruct * ageInfo, bool makePublic ); + // set an age's public status, also works for non-owners + bool SetAgePublic( const pyVaultAgeInfoNode * ageInfoNode, bool makePublic ); PyObject* GetGlobalInbox( void ); // returns pyVaultFolderNode #ifdef GlobalInboxTestCode diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultGlue.cpp b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultGlue.cpp index f39e3f47..040d8cbc 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultGlue.cpp +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultGlue.cpp @@ -43,6 +43,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "pyEnum.h" #include "pyAgeInfoStruct.h" #include "pyVaultNode.h" +#include "pyVaultAgeInfoNode.h" #include "pySDL.h" #include "pyAgeLinkStruct.h" @@ -451,16 +452,21 @@ PYTHON_METHOD_DEFINITION(ptVault, setAgePublic, args) char makePublic; if (!PyArg_ParseTuple(args, "Ob", &ageInfoObj, &makePublic)) { - PyErr_SetString(PyExc_TypeError, "setAgePublic expects a ptAgeInfoStruct and a boolean"); + PyErr_SetString(PyExc_TypeError, "setAgePublic expects a ptAgeInfoStruct or ptVaultAgeInfoNode and a boolean"); PYTHON_RETURN_ERROR; } - if (!pyAgeInfoStruct::Check(ageInfoObj)) + if (pyAgeInfoStruct::Check(ageInfoObj)) { - PyErr_SetString(PyExc_TypeError, "setAgePublic expects a ptAgeInfoStruct and a boolean"); - PYTHON_RETURN_ERROR; + pyAgeInfoStruct* ageInfo = pyAgeInfoStruct::ConvertFrom(ageInfoObj); + PYTHON_RETURN_BOOL(self->fThis->SetAgePublic(ageInfo, makePublic != 0)); } - pyAgeInfoStruct* ageInfo = pyAgeInfoStruct::ConvertFrom(ageInfoObj); - PYTHON_RETURN_BOOL(self->fThis->SetAgePublic(ageInfo, makePublic != 0)); + else if (pyVaultAgeInfoNode::Check(ageInfoObj)) + { + pyVaultAgeInfoNode* ageInfoNode = pyVaultAgeInfoNode::ConvertFrom(ageInfoObj); + PYTHON_RETURN_BOOL(self->fThis->SetAgePublic(ageInfoNode, makePublic != 0)); + } + PyErr_SetString(PyExc_TypeError, "setAgePublic expects a ptAgeInfoStruct or ptVaultAgeInfoNode and a boolean"); + PYTHON_RETURN_ERROR; } PYTHON_START_METHODS_TABLE(ptVault) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp index 59093fdc..55b027a2 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp @@ -2476,21 +2476,7 @@ bool VaultAddOwnedAgeSpawnPoint (const Uuid & ageInstId, const plSpawnPointInfo bool VaultSetOwnedAgePublicAndWait (const plAgeInfoStruct * info, bool publicOrNot) { if (RelVaultNode * rvnLink = VaultGetOwnedAgeLinkIncRef(info)) { if (RelVaultNode * rvnInfo = rvnLink->GetChildNodeIncRef(plVault::kNodeType_AgeInfo, 1)) { - NetCliAuthSetAgePublic(rvnInfo->nodeId, publicOrNot); - - VaultAgeInfoNode access(rvnInfo); - char ageName[MAX_PATH]; - StrToAnsi(ageName, access.ageFilename, arrsize(ageName)); - - plVaultNotifyMsg * msg = NEWZERO(plVaultNotifyMsg); - if (publicOrNot) - msg->SetType(plVaultNotifyMsg::kPublicAgeCreated); - else - msg->SetType(plVaultNotifyMsg::kPublicAgeRemoved); - msg->SetResultCode(true); - msg->GetArgs()->AddString(plNetCommon::VaultTaskArgs::kAgeFilename, ageName); - msg->Send(); - + VaultSetAgePublicAndWait(rvnInfo, publicOrNot); rvnInfo->DecRef(); } rvnLink->DecRef(); @@ -2498,6 +2484,25 @@ bool VaultSetOwnedAgePublicAndWait (const plAgeInfoStruct * info, bool publicOrN return true; } +//============================================================================ +bool VaultSetAgePublicAndWait (NetVaultNode * ageInfoNode, bool publicOrNot) { + NetCliAuthSetAgePublic(ageInfoNode->nodeId, publicOrNot); + + VaultAgeInfoNode access(ageInfoNode); + char ageName[MAX_PATH]; + StrToAnsi(ageName, access.ageFilename, arrsize(ageName)); + + plVaultNotifyMsg * msg = NEWZERO(plVaultNotifyMsg); + if (publicOrNot) + msg->SetType(plVaultNotifyMsg::kPublicAgeCreated); + else + msg->SetType(plVaultNotifyMsg::kPublicAgeRemoved); + msg->SetResultCode(true); + msg->GetArgs()->AddString(plNetCommon::VaultTaskArgs::kAgeFilename, ageName); + msg->Send(); + return true; +} + //============================================================================ RelVaultNode * VaultGetVisitAgeLinkIncRef (const plAgeInfoStruct * info) { RelVaultNode * rvnLink = nil; diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h index 15aa708c..bfd749f0 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h @@ -345,6 +345,7 @@ RelVaultNode * VaultGetOwnedAgeInfoIncRef (const plAgeInfoStruct * info); bool VaultGetOwnedAgeLink (const plAgeInfoStruct * info, plAgeLinkStruct * link); bool VaultAddOwnedAgeSpawnPoint (const Uuid & ageInstId, const plSpawnPointInfo & spawnPt); bool VaultSetOwnedAgePublicAndWait (const plAgeInfoStruct * info, bool publicOrNot); +bool VaultSetAgePublicAndWait (NetVaultNode * ageInfoNode, bool publicOrNot); RelVaultNode * VaultGetVisitAgeLinkIncRef (const plAgeInfoStruct * info); bool VaultGetVisitAgeLink (const plAgeInfoStruct * info, class plAgeLinkStruct * link); bool VaultRegisterOwnedAgeAndWait (const plAgeLinkStruct * link);