query("SELECT CentsPerMoneyUnit FROM ".CURRENCY_MONEY_TBL." limit 1"); list($CentsPerMoneyUnit) = $db->next_record(); $db->close(); if (!$CentsPerMoneyUnit) $CentsPerMoneyUnit = 0; # Multiply the cents per unit times the requested amount $real = $CentsPerMoneyUnit * $currency; // Dealing in cents here. The XML requires an integer // so we have to ceil out any decimal places and cast as an integer $real = (integer)ceil($real); return $real; } function update_simulator_balance($agentId) { $db = new DB(OPENSIM_DB_HOST, OPENSIM_DB_NAME, OPENSIM_DB_USER, OPENSIM_DB_PASS); if ($db->exist_table("GridUser")) { $sql = "SELECT serverIP,serverHttpPort,serverURI FROM GridUser". " INNER JOIN regions ON regions.uuid=GridUser.LastRegionID WHERE GridUser.UserID='".$db->escape($agentId)."'"; } else { $sql = "SELECT serverIP,serverHttpPort,serverURI FROM agents". " INNER JOIN regions ON regions.uuid=agents.currentRegion WHERE agents.UUID='".$db->escape($agentId)."'"; } $db->query($sql); $results = $db->next_record(); $db->close(); if ($results) { $serverip = $results["serverIP"]; $httpport = $results["serverHttpPort"]; $serveruri = $results["serverURI"]; $req = array('agentId' => $agentId); $params = array($req); $request = xmlrpc_encode_request('balanceUpdateRequest', $params); $response = do_call($serverip, $httpport, $serveruri, $request); } } function user_alert($agentId, $soundId, $text) { $db = new DB(OPENSIM_DB_HOST, OPENSIM_DB_NAME, OPENSIM_DB_USER, OPENSIM_DB_PASS); if ($db->exist_table("GridUser")) { $sql = "SELECT serverIP,serverHttpPort,serverURI,regionSecret FROM GridUser". " INNER JOIN regions ON regions.uuid=GridUser.LastRegionID WHERE GridUser.UserID='".$db->escape($agentId)."'"; } else { $sql = "SELECT serverIP,serverHttpPort,serverURI,regionSecret FROM agents". " INNRT JOIN regions ON regions.uuid=agents.currentRegion WHERE agents.UUID='".$db->escape($agentId)."'"; } $db->query($sql); $results = $db->next_record(); $db->close(); if ($results) { $serverip = $results["serverIP"]; $httpport = $results["serverHttpPort"]; $serveruri = $results["serverURI"]; $secret = $results["regionSecret"]; $req = array('agentId'=>$agentId, 'soundID'=>$soundId, 'text'=>$text, 'secret'=>$secret); $params = array($req); $request = xmlrpc_encode_request('userAlert', $params); $response = do_call($serverip, $httpport, $serveruti, $request); } } function move_money($sourceId, $destId, $amount, $aggregatePermInventory, $aggregatePermNextOwner, $flags, $transactionType, $description, $regionGenerated,$ipGenerated) { $db = new DB(OPENSIM_DB_HOST, OPENSIM_DB_NAME, OPENSIM_DB_USER, OPENSIM_DB_PASS); # SELECT current region if ($db->exist_table("GridUser")) { $sql = "SELECT LastRegionID FROM GridUser WHERE UserID='".$db->escape($sourceId)."'"; } else { $sql = "SELECT currentRegion FROM agents WHERE UUID='".$db->escape($sourceId)."'"; } $db->query($sql); $results = $db->next_record(); if ($results) $currentRegion = $results["currentRegion"]; $db->close(); // CURRENCY $db = new DB(CURRENCY_DB_HOST, CURRENCY_DB_NAME, CURRENCY_DB_USER, CURRENCY_DB_PASS); # Add Cash to one account $sql = "INSERT INTO ".CURRENCY_TRANSACTION_TBL." (sourceId,destId,amount,flags,". "aggregatePermInventory,aggregatePermNextOwner,transactionType,". "description,timeOccurred,RegionGenerated,ipGenerated) ". "VALUES ('". $db->escape($sourceId)."','". $db->escape($destId)."',". $db->escape($amount).",". $db->escape($aggregatePermInventory).",". $db->escape($aggregatePermNextOwner).",". $db->escape($flags).",". $db->escape($transactionType).",'". $db->escape($description)."',". time().",'". $db->escape($currentRegion)."','". $db->escape($ipGenerated)."')"; $db->query($sql); # Remove Cash FROM the other account $sql = "INSERT INTO ".CURRENCY_TRANSACTION_TBL." (sourceId,destId,amount,flags,". "aggregatePermInventory,aggregatePermNextOwner,transactionType,". "description,timeOccurred,RegionGenerated,ipGenerated) ". "VALUES ('". $db->escape($destId)."','". $db->escape($sourceId)."',". $db->escape(-$amount).",". $db->escape($aggregatePermInventory).",". $db->escape($aggregatePermNextOwner).",". $db->escape($flags).",". $db->escape($transactionType).",'". $db->escape($description)."',". time().",'". $db->escape($currentRegion)."','". $db->escape($ipGenerated)."')"; $db->query($sql); $db->close(); } function get_balance($avatarId) { $db = new DB(CURRENCY_DB_HOST, CURRENCY_DB_NAME, CURRENCY_DB_USER, CURRENCY_DB_PASS); $cash = 0; $sql = "SELECT SUM(amount) FROM ".CURRENCY_TRANSACTION_TBL." WHERE destId='".$db->escape($avatarId)."'"; $db->query($sql); list($cash) = $db->next_record(); $db -> close(); return (integer)$cash; } function do_call($host, $port, $uri, $request) { $url = ""; if ($uri!="") { $dec = explode(":", $uri); if (!strncasecmp($dec[0], "http", 4)) $url = "$dec[0]:$dec[1]"; } if ($url=="") $url ="http://$serverIP"; $url = "$url:$serverHttpPort/"; $header[] = "Content-type: text/xml"; $header[] = "Content-length: ".strlen($request); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); $data = curl_exec($ch); if (!curl_errno($ch)) { curl_close($ch); return $data; } } function agent_name($agentId) { $db = new DB(OPENSIM_DB_HOST, OPENSIM_DB_NAME, OPENSIM_DB_USER, OPENSIM_DB_PASS); if ($db->exist_table("UserAccounts")){ $sql = "SELECT FirstName,LastName FROM UserAccounts WHERE PrincipalID='".$agentId."'"; } else { $sql = "SELECT username, lastname FROM users WHERE UUID='".$agentId."'"; } $db->query($sql); $record = $db->next_record(); $db->close(); if(!$record) return ""; $name = implode(" ", array($record[0], $record[1])); return $name; } ?>