diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | 28 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs | 27 |
2 files changed, 29 insertions, 26 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index a188701..a1c5fe7 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | |||
@@ -1186,18 +1186,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1186 | 1186 | ||
1187 | if (part != null) | 1187 | if (part != null) |
1188 | { | 1188 | { |
1189 | 1189 | if (!ExternalChecks.ExternalChecksCanEditObjectInventory(part.UUID, remoteClient.AgentId)) | |
1190 | // replacing the following two checks with the | ||
1191 | // ExternalChecks.ExternalChecksCanEditObject(...) | ||
1192 | // call | ||
1193 | |||
1194 | // if (part.OwnerID != remoteClient.AgentId) | ||
1195 | // return; | ||
1196 | |||
1197 | // if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) | ||
1198 | // return; | ||
1199 | |||
1200 | if (!ExternalChecks.ExternalChecksCanEditObject(part.UUID, remoteClient.AgentId)) | ||
1201 | { | 1190 | { |
1202 | return; | 1191 | return; |
1203 | } | 1192 | } |
@@ -1293,20 +1282,7 @@ System.Console.WriteLine("Item asset {0}, request asset {1}", prevItem.AssetID.T | |||
1293 | SceneObjectPart part = GetSceneObjectPart(localID); | 1282 | SceneObjectPart part = GetSceneObjectPart(localID); |
1294 | if (part != null) | 1283 | if (part != null) |
1295 | { | 1284 | { |
1296 | 1285 | if (!ExternalChecks.ExternalChecksCanEditObjectInventory(part.UUID, remoteClient.AgentId)) | |
1297 | /* | ||
1298 | if (part.OwnerID != remoteClient.AgentId) | ||
1299 | { | ||
1300 | return; | ||
1301 | } | ||
1302 | |||
1303 | if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) | ||
1304 | { | ||
1305 | return; | ||
1306 | } | ||
1307 | */ | ||
1308 | |||
1309 | if (!ExternalChecks.ExternalChecksCanEditObject(part.UUID, remoteClient.AgentId)) | ||
1310 | { | 1286 | { |
1311 | return; | 1287 | return; |
1312 | } | 1288 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs index 678d707..f8d041a 100644 --- a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs +++ b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs | |||
@@ -343,6 +343,33 @@ namespace OpenSim.Region.Environment.Scenes | |||
343 | return true; | 343 | return true; |
344 | } | 344 | } |
345 | 345 | ||
346 | public delegate bool CanEditObjectInventory(UUID objectID, UUID editorID, Scene scene); | ||
347 | private List<CanEditObjectInventory> CanEditObjectInventoryCheckFunctions = new List<CanEditObjectInventory>(); | ||
348 | |||
349 | public void addCheckEditObjectInventory(CanEditObjectInventory delegateFunc) | ||
350 | { | ||
351 | if (!CanEditObjectInventoryCheckFunctions.Contains(delegateFunc)) | ||
352 | CanEditObjectInventoryCheckFunctions.Add(delegateFunc); | ||
353 | } | ||
354 | |||
355 | public void removeCheckEditObjectInventory(CanEditObjectInventory delegateFunc) | ||
356 | { | ||
357 | if (CanEditObjectInventoryCheckFunctions.Contains(delegateFunc)) | ||
358 | CanEditObjectInventoryCheckFunctions.Remove(delegateFunc); | ||
359 | } | ||
360 | |||
361 | public bool ExternalChecksCanEditObjectInventory(UUID objectID, UUID editorID) | ||
362 | { | ||
363 | foreach (CanEditObjectInventory check in CanEditObjectInventoryCheckFunctions) | ||
364 | { | ||
365 | if (check(objectID, editorID, m_scene) == false) | ||
366 | { | ||
367 | return false; | ||
368 | } | ||
369 | } | ||
370 | return true; | ||
371 | } | ||
372 | |||
346 | #endregion | 373 | #endregion |
347 | 374 | ||
348 | #region MOVE OBJECT | 375 | #region MOVE OBJECT |