diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs | 52 |
1 files changed, 29 insertions, 23 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index 145f3db..61835f9 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs | |||
@@ -31,6 +31,7 @@ using System.Text; | |||
31 | using System.Collections; | 31 | using System.Collections; |
32 | using System.Collections.Generic; | 32 | using System.Collections.Generic; |
33 | using System.Globalization; | 33 | using System.Globalization; |
34 | using System.Linq; | ||
34 | using System.Net; | 35 | using System.Net; |
35 | using System.Net.Sockets; | 36 | using System.Net.Sockets; |
36 | using System.Reflection; | 37 | using System.Reflection; |
@@ -458,36 +459,43 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
458 | int queryclassifiedPrice, IClientAPI remoteClient) | 459 | int queryclassifiedPrice, IClientAPI remoteClient) |
459 | { | 460 | { |
460 | Scene s = (Scene)remoteClient.Scene; | 461 | Scene s = (Scene)remoteClient.Scene; |
461 | IMoneyModule money = s.RequestModuleInterface<IMoneyModule>(); | ||
462 | |||
463 | if (money != null) | ||
464 | { | ||
465 | if (!money.AmountCovered(remoteClient.AgentId, queryclassifiedPrice)) | ||
466 | { | ||
467 | remoteClient.SendAgentAlertMessage("You do not have enough money to create requested classified.", false); | ||
468 | return; | ||
469 | } | ||
470 | money.ApplyCharge(remoteClient.AgentId, queryclassifiedPrice, MoneyTransactionType.ClassifiedCharge); | ||
471 | } | ||
472 | |||
473 | UserClassifiedAdd ad = new UserClassifiedAdd(); | ||
474 | |||
475 | Vector3 pos = remoteClient.SceneAgent.AbsolutePosition; | 462 | Vector3 pos = remoteClient.SceneAgent.AbsolutePosition; |
476 | ILandObject land = s.LandChannel.GetLandObject(pos.X, pos.Y); | 463 | ILandObject land = s.LandChannel.GetLandObject(pos.X, pos.Y); |
477 | ScenePresence p = FindPresence(remoteClient.AgentId); | 464 | UUID creatorId = remoteClient.AgentId; |
478 | 465 | ScenePresence p = FindPresence(creatorId); | |
466 | |||
479 | string serverURI = string.Empty; | 467 | string serverURI = string.Empty; |
480 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 468 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
481 | 469 | ||
482 | if (land == null) | 470 | OSDMap parameters = new OSDMap {{"creatorId", OSD.FromUUID(creatorId)}}; |
471 | OSD Params = (OSD)parameters; | ||
472 | if (!rpc.JsonRpcRequest(ref Params, "avatarclassifiedsrequest", serverURI, UUID.Random().ToString())) | ||
483 | { | 473 | { |
484 | ad.ParcelName = string.Empty; | 474 | remoteClient.SendAgentAlertMessage("Error fetching classifieds", false); |
475 | return; | ||
485 | } | 476 | } |
486 | else | 477 | parameters = (OSDMap)Params; |
478 | OSDArray list = (OSDArray)parameters["result"]; | ||
479 | bool exists = list.Cast<OSDMap>().Where(map => map.ContainsKey("classifieduuid")) | ||
480 | .Any(map => map["classifieduuid"].AsUUID().Equals(queryclassifiedID)); | ||
481 | |||
482 | if (!exists) | ||
487 | { | 483 | { |
488 | ad.ParcelName = land.LandData.Name; | 484 | IMoneyModule money = s.RequestModuleInterface<IMoneyModule>(); |
485 | if (money != null) | ||
486 | { | ||
487 | if (!money.AmountCovered(remoteClient.AgentId, queryclassifiedPrice)) | ||
488 | { | ||
489 | remoteClient.SendAgentAlertMessage("You do not have enough money to create this classified.", false); | ||
490 | return; | ||
491 | } | ||
492 | money.ApplyCharge(remoteClient.AgentId, queryclassifiedPrice, MoneyTransactionType.ClassifiedCharge); | ||
493 | } | ||
489 | } | 494 | } |
490 | 495 | ||
496 | UserClassifiedAdd ad = new UserClassifiedAdd(); | ||
497 | |||
498 | ad.ParcelName = land == null ? string.Empty : land.LandData.Name; | ||
491 | ad.CreatorId = remoteClient.AgentId; | 499 | ad.CreatorId = remoteClient.AgentId; |
492 | ad.ClassifiedId = queryclassifiedID; | 500 | ad.ClassifiedId = queryclassifiedID; |
493 | ad.Category = Convert.ToInt32(queryCategory); | 501 | ad.Category = Convert.ToInt32(queryCategory); |
@@ -507,9 +515,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
507 | 515 | ||
508 | if(!rpc.JsonRpcRequest(ref Ad, "classified_update", serverURI, UUID.Random().ToString())) | 516 | if(!rpc.JsonRpcRequest(ref Ad, "classified_update", serverURI, UUID.Random().ToString())) |
509 | { | 517 | { |
510 | remoteClient.SendAgentAlertMessage( | 518 | remoteClient.SendAgentAlertMessage("Error updating classified", false); |
511 | "Error updating classified", false); | ||
512 | return; | ||
513 | } | 519 | } |
514 | } | 520 | } |
515 | 521 | ||