120 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| declare(strict_types=1);
 | |
| 
 | |
| namespace Mcp\Api;
 | |
| 
 | |
| class Economy extends \Mcp\RequestHandler
 | |
| {
 | |
| 
 | |
|     private const SYSURL = ""; // ???
 | |
| 
 | |
|     # Copyright (c)Melanie Thielker and Teravus Ovares (http://opensimulator.org/)
 | |
|     #
 | |
|     #  Redistribution and use in source and binary forms, with or without
 | |
|     #  modification, are permitted provided that the following conditions are met:
 | |
|     #      * Redistributions of source code must retain the above copyright
 | |
|     #        notice, this list of conditions and the following disclaimer.
 | |
|     #      * Redistributions in binary form must reproduce the above copyright
 | |
|     #        notice, this list of conditions and the following disclaimer in the
 | |
|     #        documentation and/or other materials provided with the distribution.
 | |
|     #      * Neither the name of the OpenSim Project nor the
 | |
|     #        names of its contributors may be used to endorse or promote products
 | |
|     #        derived from this software without specific prior written permission.
 | |
|     #
 | |
|     #  THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
 | |
|     #  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 | |
|     #  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | |
|     #  DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
 | |
|     #  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | |
|     #  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | |
|     #  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 | |
|     #  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
|     #  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | |
|     #  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|     #
 | |
| 
 | |
|     # updated for Robust installations: BlueWall 2011
 | |
|     # further minor changes by justincc (http://justincc.org)
 | |
|     # Adapted to use PDO and the MCP API by a 4Creative contributor
 | |
|     public function handleRequest(): void
 | |
|     {
 | |
|         # XMLRPC
 | |
|         $xmlrpc_server = xmlrpc_server_create();
 | |
|         xmlrpc_server_register_method($xmlrpc_server, "preflightBuyLandPrep", function($method_name, $params, $app_data) {
 | |
|             $confirmvalue = "";
 | |
|             $req = $params[0];
 | |
|             $agentid = $req['agentId'];
 | |
|             $sessionid = $req['secureSessionId'];
 | |
|             $amount = $req['currencyBuy'];
 | |
|             $billableArea = $req['billableArea'];
 | |
| 
 | |
|             $id = $this->validateUser($agentid, $sessionid);
 | |
| 
 | |
|             if ($id) {
 | |
|                 $membership_levels = array(
 | |
|                     'levels' => array(
 | |
|                         'id' => "00000000-0000-0000-0000-000000000000",
 | |
|                         'description' => "some level"
 | |
|                     )
 | |
|                 );
 | |
| 
 | |
|                 $landUse = array(
 | |
|                     'upgrade' => false,
 | |
|                     'action'  => "" . $this::SYSURL . ""
 | |
|                 );
 | |
| 
 | |
|                 $currency = array(
 | |
|                     'estimatedCost' =>  "200.00"
 | |
|                 );     // convert_to_real($amount));
 | |
| 
 | |
|                 $membership = array(
 | |
|                     'upgrade' => false,
 | |
|                     'action'  => "" . $this::SYSURL . "",
 | |
|                     'levels'  => $membership_levels
 | |
|                 );
 | |
| 
 | |
|                 $response_xml = xmlrpc_encode(array(
 | |
|                     'success'    => true,
 | |
|                     'currency'   => $currency,
 | |
|                     'membership' => $membership,
 | |
|                     'landUse'    => $landUse,
 | |
|                     'currency'   => $currency,
 | |
|                     'confirm'    => $confirmvalue
 | |
|                 ));
 | |
| 
 | |
|                 header("Content-type: text/xml");
 | |
|                 print $response_xml;
 | |
|             } else {
 | |
|                 header("Content-type: text/xml");
 | |
|                 $response_xml = xmlrpc_encode(array(
 | |
|                     'success' => false,
 | |
|                     'errorMessage' => "\n\nUnable to Authenticate\n\nClick URL for more info.",
 | |
|                     'errorURI' => "" . $this::SYSURL . ""
 | |
|                 ));
 | |
| 
 | |
|                 print $response_xml;
 | |
|             }
 | |
| 
 | |
|             return "";
 | |
|         });
 | |
| 
 | |
|         $request_xml = file_get_contents('php://input');
 | |
|         xmlrpc_server_call_method($xmlrpc_server, $request_xml, '');
 | |
|         xmlrpc_server_destroy($xmlrpc_server);
 | |
|     }
 | |
| 
 | |
|     private function validateUser($agent_id, $s_session_id)
 | |
|     {
 | |
|         $stmt = $this->app->db()->prepare("SELECT UserID FROM Presence WHERE UserID=? AND SecureSessionID = ?");
 | |
|         $stmt->execute(array($agent_id, $s_session_id));
 | |
| 
 | |
|         if ($stmt->rowCount() == 0) {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         $res = $stmt->fetch();
 | |
|         return $res['UserID'];
 | |
|     }
 | |
| }
 |