getNumParams(); $i++) { $p = $msg->getParam($i); if ($i) { // Put the decoded value the view arg array $view_params[] = phpAds_xmlrpcDecode($p); } else { // First parameter: Remote information supplied be XML-RPC client $p = phpAds_xmlrpcDecode($p); if (!isset($p['remote_addr'])) return new xmlrpcresp(0, $xmlrpcerruser + 1, "Missing 'remote_addr' member!"); while (list($k, $v) = each($p)) { switch ($k) { case 'remote_addr': $GLOBALS['HTTP_SERVER_VARS']['REMOTE_ADDR'] = $GLOBALS['REMOTE_ADDR'] = $v; break; case 'remote_host': $GLOBALS['HTTP_SERVER_VARS']['REMOTE_HOST'] = $GLOBALS['REMOTE_HOST'] = $v; break; default: $varname = 'HTTP_'.strtoupper($k); $GLOBALS['HTTP_SERVER_VARS'][$varname] = $GLOBALS[$varname] = $v; break; } } } } // Call view with supplied parameters $output = call_user_func_array('view_raw', $view_params); // What parameter should be always set if (!is_array($output)) return new xmlrpcresp(0, $xmlrpcerruser + 99, "An error occurred while fetching banner code"); if (isset($GLOBALS['phpAds_xmlError'])) return $GLOBALS['phpAds_xmlError']; return new xmlrpcresp(phpAds_xmlrpcEncode($output)); } /*********************************************************/ /* XML-RPC error handler */ /*********************************************************/ function phpAds_xmlrpcErrorHandler ($errno, $errstr, $errfile, $errline) { global $xmlrpcerruser, $phpAds_xmlError; if ($errno & (E_ERROR|E_USER_ERROR)) $phpAds_xmlError = new xmlrpcresp(0, $xmlrpcerruser + 100, "Error in '$errfile' at line $errline: $errstr"); } /*********************************************************/ /* Main code */ /*********************************************************/ // Register function to send error as an XML-RPC error message - PHP4 only if (function_exists('set_error_handler')) set_error_handler('phpAds_xmlrpcErrorHandler'); // Open a connection to the database phpAds_dbConnect(); // Create server for the view method with possible signatures $server = new xmlrpc_server(array( "phpAds.view" => array( "function" => 'phpAds_xmlrpcView', "signature" => array( array($xmlrpcStruct, $xmlrpcStruct, $xmlrpcString, $xmlrpcInt, $xmlrpcString, $xmlrpcString, $xmlrpcBoolean), array($xmlrpcStruct, $xmlrpcStruct, $xmlrpcString, $xmlrpcInt, $xmlrpcString, $xmlrpcString, $xmlrpcBoolean, $xmlrpcArray) ) ) ) ); ?>