示例#1
0
 public function outputFilter($data, stdClass $context)
 {
     if (isset($context->userdata->format) && $context->userdata->format === "xmlrpc") {
         $result = null;
         if ($data !== "") {
             $stream = new BytesIO($data);
             $reader = new Reader($stream);
             while (($tag = $stream->getc()) !== Tags::TagEnd) {
                 $reader->reset();
                 switch ($tag) {
                     case Tags::TagResult:
                         $result = $reader->unserialize();
                         break;
                     case Tags::TagError:
                         $lasterror = error_get_last();
                         $result = array("faultCode" => $lasterror["type"], "faultString" => $reader->unserialize());
                         break;
                     case Tags::TagFunctions:
                         $result = $reader->unserialize();
                         break;
                     default:
                         return xmlrpc_encode($result);
                 }
             }
         }
         $data = xmlrpc_encode($result);
     }
     return $data;
 }
示例#2
0
 public static function make($data)
 {
     if (!self::$type || !is_array($data)) {
         return false;
     }
     $dd = array();
     foreach ($data as $d) {
         if (is_object($d)) {
             $dd[] = $d->toArray();
         }
         if (is_array($d)) {
             $dd[] = $d;
         } else {
             $dd[] = array($d);
         }
     }
     if (self::$type == 'json') {
         header('Content-Type: application/json');
         die(json_encode($dd));
     }
     if (self::$type == 'xml') {
         header('Content-Type: application/xml; charset=utf-8');
         die(xmlrpc_encode($dd));
     }
     return false;
 }
 function xmlrpcCall($url, $method, $params)
 {
     // xmlrpc encode parameters
     for ($i = 0; $i < count($params); $i++) {
         if (get_class($params[$i]) != 'xmlrpcval') {
             $params[$i] = xmlrpc_encode($params[$i]);
         }
     }
     // send request
     $message = new xmlrpcmsg($method, $params);
     debug("XML-RPC message", $message->serialize());
     $addr = parse_url($url);
     $client = new xmlrpc_client($url, $addr['host'], $addr['port']);
     //if($debug)
     //  $client->setDebug(1);
     debug("XML-RPC", "call to " . $url);
     $response = $client->send($message);
     // process response
     debug("XML-RPC Response", $response->serialize());
     if (!$response) {
         debug("No response", "probably host is unreachable");
     } elseif ($response->faultCode() != 0) {
         // there was an error
         debug("Error response: ", $response->faultCode() . "  " . $response->faultString());
     } else {
         $retval = $response->value();
         if ($retval) {
             $retval = xmlrpc_decode($retval);
         }
         debug("Response", $retval);
         return $retval;
     }
     return NULL;
 }
function _processViewerTableUpdate($viewer)
{
    $sql = "REPLACE INTO " . TB_USERLOG_VIEWERS . "(viewer) VALUES ('{$viewer}')";
    $result = mysql_query($sql);
    if (!$result) {
        $response_xml = xmlrpc_encode(array('success' => $result, 'errorMessage' => mysql_error()));
        print $response_xml;
        die;
    }
}
示例#5
0
 public static function Display($data)
 {
     if (self::$type && is_array($data)) {
         if (self::$type == 'json') {
             return json_encode($data);
         }
         if (self::$type == 'xml') {
             return xmlrpc_encode($data);
         }
     }
 }
示例#6
0
 /**
   Returns the xmlrpc payload for the response.
 */
 function payload()
 {
     if ($this->IsFault) {
         $payload = xmlrpc_encode(array("faultCode" => $this->FaultCode, "faultString" => $this->FaultString));
         return str_replace(array('<fault>', '</fault>'), array('<methodResponse><fault>', '</fault></methodResponse>'), $payload);
     } else {
         $payload = xmlrpc_encode($this->Value);
         /// @todo verify if user gave us back an array with faultString / faultCode members,
         ///       as we will be sending back junk in that case...
         return str_replace(array('<params>', '</params>'), array('<methodResponse><params>', '</params></methodResponse>'), $payload);
     }
 }
示例#7
0
文件: coding.php 项目: n0nick/n0where
function xmlrpc_encode($php_val)
{
    global $xmlrpcInt;
    global $xmlrpcDouble;
    global $xmlrpcString;
    global $xmlrpcArray;
    global $xmlrpcStruct;
    global $xmlrpcBoolean;
    $type = gettype($php_val);
    $xmlrpc_val = new xmlrpcval();
    switch ($type) {
        case "array":
        case "object":
            $arr = array();
            while (list($k, $v) = each($php_val)) {
                $arr[$k] = xmlrpc_encode($v);
            }
            $xmlrpc_val->addStruct($arr);
            break;
        case "integer":
            $xmlrpc_val->addScalar($php_val, $xmlrpcInt);
            break;
        case "double":
            $xmlrpc_val->addScalar($php_val, $xmlrpcDouble);
            break;
        case "string":
            $xmlrpc_val->addScalar($php_val, $xmlrpcString);
            break;
            // <G_Giunta_2001-02-29>
            // Add support for encoding/decoding of booleans, since they are supported in PHP
        // <G_Giunta_2001-02-29>
        // Add support for encoding/decoding of booleans, since they are supported in PHP
        case "boolean":
            $xmlrpc_val->addScalar($php_val, $xmlrpcBoolean);
            break;
            // </G_Giunta_2001-02-29>
        // </G_Giunta_2001-02-29>
        case "unknown type":
        default:
            // giancarlo pinerolo <*****@*****.**>
            // it has to return
            // an empty object in case (which is already
            // at this point), not a boolean.
            break;
    }
    return $xmlrpc_val;
}
function retrieve_email($method_name, $params, $app_data)
{
    $req = $params[0];
    $object = $req['objectid'];
    $rows = $req['number'];
    $sql = "SELECT `timestamp`,`subject`, `from`,`objectname`,`region`,`objectlocation`,`message` FROM email WHERE `to` = '" . mysql_escape_string($object) . "' LIMIT 0," . $rows;
    $result = mysql_query($sql);
    $data = array();
    while ($row = mysql_fetch_assoc($result)) {
        $data[] = array("timestamp" => $row["timestamp"], "subject" => $row["subject"], "sender" => $row["from"], "objectname" => $row["objectname"], "region" => $row["region"], "objectpos" => $row["objectlocation"], "message" => $row["message"]);
    }
    // Now delete the email from the database
    $delete = "DELETE FROM email WHERE `to` = '" . mysql_escape_string($object) . "'";
    $result = mysql_query($delete);
    $response_xml = xmlrpc_encode(array('success' => True, 'errorMessage' => "", 'data' => $data));
    print $response_xml;
}
 /**
  * This is the main handle for the xmlrpc calls
  */
 public function executeRPC2($request)
 {
     // get all the defined RPC
     $rpc_functions = $this->getRPCFunctions();
     // http POST method is required for modifying the database
     $this->forward404Unless($request->isMethod('post'), "HTTP POST is required");
     // log to debug
     ezDbg::err("enter xmlrpc");
     // get xmlrpc request string posted as a raw
     $xmlrpc_reqstr = file_get_contents("php://input");
     // parse the xmlrpc_reqstr
     $method_name = null;
     $xmlrpc_params = xmlrpc_decode_request($xmlrpc_reqstr, &$method_name);
     ezDbg::err("enter method_name={$method_name} xmlrpc param=" . print_r($xmlrpc_params, true));
     if (!isset($rpc_functions[$method_name])) {
         $xmlrpc_resp = array("faultCode" => 1, "faultString" => "unknown method name (" . $method_name . ")");
     } else {
         $rpc_function = $rpc_functions[$method_name];
         $nparam = $rpc_function['nparam'];
         if (count($xmlrpc_params) < $nparam) {
             $xmlrpc_resp = array("faultCode" => 1, "faultString" => $method_name . " require " . $nparam . " parameters.");
         } else {
             try {
                 ezDbg::err('trying to call (' . $rpc_function['function'] . ')', $xmlrpc_params);
                 $xmlrpc_resp = call_user_func_array($rpc_function['function'], $xmlrpc_params);
                 //$xmlrpc_resp	= sfWebRPCPluginDemo::superAddFct(2,3);
             } catch (Exception $e) {
                 $xmlrpc_resp = array("faultCode" => 1, "faultString" => "" . $e->getMessage());
             }
         }
     }
     // encode the xmlrpc_resp
     $xmlrpc_respstr = xmlrpc_encode($xmlrpc_resp);
     // KLUDGE: xmlrpc_encode is unable to add the methodResponse required
     $arr = split("\n", $xmlrpc_respstr);
     $arr[0] .= "\n<methodResponse>";
     $arr[count($arr) - 1] = "</methodResponse>";
     $xmlrpc_respstr = implode("\n", $arr);
     ezDbg::err("enter xmlrpc resp=" . print_r($xmlrpc_respstr, true));
     // disable the web_debug bar
     sfConfig::set('sf_web_debug', false);
     // return the $value in xml
     $this->getResponse()->setHttpHeader('Content-Type', 'text/xml');
     return $this->renderText($xmlrpc_respstr);
 }
 function call($url, $method, $params)
 {
     // xmlrpc encode parameters
     for ($i = 0; $i < count($params); $i++) {
         if (get_class($params[$i]) != 'xmlrpcval') {
             $params[$i] = xmlrpc_encode($params[$i]);
         }
     }
     // send request
     $message = new xmlrpcmsg($method, $params);
     if ($this->debug) {
         //  $this->display_xml($message->serialize());
         print "<PRE>" . htmlentities($message->serialize()) . "</PRE>\n";
         //("XML-RPC message:\n $message->serialize()",0);
     }
     $addr = parse_url($url);
     $client = new xmlrpc_client($url, $addr['host'], $addr['port']);
     if ($this->debug) {
         $client->setDebug(1);
     }
     debug("XML-RPC", "call to " . $url);
     $response = $client->send($message);
     if ($this->debug) {
         print "<PRE>" . htmlentities($response->serialize()) . "</PRE>\n";
     }
     // process response
     //debug("XML-RPC Response", $response->serialize());
     if (!$response) {
         addError("No response: probably host is unreachable");
     } elseif ($response->faultCode() > 0) {
         // there was an error
         addError("Error response: " . $response->faultCode() . "  " . $response->faultString());
     } else {
         $retval = $response->value();
         if ($retval) {
             $retval = xmlrpc_decode($retval);
         }
         //debug("Response", $retval);
         return $retval;
     }
     return NULL;
 }
示例#11
0
    function encodeResponse($response)
    {
        $respClass = strtolower(@get_class($response));
        if ($respClass == 'pwgerror') {
            $code = $response->code();
            $msg = htmlspecialchars($response->message());
            $ret = <<<EOD
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>{$code}</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>{$msg}</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>
EOD;
            return $ret;
        }
        parent::flattenResponse($response);
        $ret = xmlrpc_encode($response);
        $ret = <<<EOD
<methodResponse>
  <params>
    <param>
      <value>
        {$ret}
      </value>
    </param>
  </params>
</methodResponse>
EOD;
        return $ret;
    }
示例#12
0
function syncResp($params)
{
    debug("incoming SYNC request");
    $lastSync = xmlrpc_decode($params->getParam(0));
    $nodeData = xmlrpc_decode($params->getParam(1));
    $objects = xmlrpc_decode($params->getParam(2));
    $neighbour = sotf_Neighbour::getById($nodeData['node_id']);
    if (!$neighbour) {
        logError("No access: you are not an allowed neighbour node!");
        return new xmlrpcresp(0, XMLRPC_ERR_NO_ACCESS, "No access: you are not an allowed neighbour node!");
    }
    $msg = checkAccess($neighbour);
    if ($msg) {
        logError($msg);
        return new xmlrpcresp(0, XMLRPC_ERR_NO_ACCESS, "No access: {$msg}!");
    }
    $retval = $neighbour->syncResponse($lastSync, $nodeData, $objects);
    // send response
    $retval = xmlrpc_encode($retval);
    return new xmlrpcresp($retval);
}
示例#13
0
 function to_xml_rpc()
 {
     if (function_exists('xmlrpc_encode')) {
         return xmlrpc_encode($this->driver->record);
     }
     return false;
 }
示例#14
0
 /**
  * Renders the output after preperation.
  * @see vB_Template::render()
  *
  * @param boolean	Whether to suppress the HTML comment surrounding option (for JS, etc)
  * @return string
  */
 protected function render_output($suppress_html_comments = false, $nopermissioncheck = false)
 {
     return xmlrpc_encode($this->registered);
 }
示例#15
0
<?php

$params = array("one" => "red", "two" => "blue", "three" => "green");
$response = xmlrpc_encode($params);
echo $response;
$params = array("red", "blue", "green");
$response = xmlrpc_encode($params);
echo $response;
$params = array(0 => "red", 1 => "blue", 3 => "green");
$response = xmlrpc_encode($params);
echo $response;
示例#16
0
function getProgrammes($params)
{
    global $config, $db;
    $prglist = xmlrpc_decode($params->getParam(0));
    $query = "SELECT programmes.* FROM (";
    $query .= " SELECT sotf_programmes.*, sotf_stations.name as station, sotf_series.title as seriestitle, sotf_series.description as seriesdescription, sotf_prog_rating.rating_value as rating FROM sotf_programmes";
    $query .= " LEFT JOIN sotf_stations ON sotf_programmes.station_id = sotf_stations.id";
    $query .= " LEFT JOIN sotf_series ON sotf_programmes.series_id = sotf_series.id";
    $query .= " LEFT JOIN sotf_prog_rating ON sotf_programmes.id = sotf_prog_rating.id";
    $query .= ") as programmes WHERE published = 't'";
    $results = array();
    foreach ($prglist as $prg) {
        //		debug("------------>".$prg."<------------------");
        //		debug("------------>".$query." AND id = '$prg'<------------------");
        $results[] = $db->getRow($query . " AND id = '{$prg}'");
    }
    foreach ($results as $key => $result) {
        //		debug("------------>".$result['id']."<------------------");
        $icon = sotf_Blob::cacheIcon($result['id']);
        $results[$key]['icon'] = $config['cacheUrl'] . "/" . $result['id'] . ".png";
        //TODO if no icon {$IMAGEDIR}/noicon.png $imageprefix????
    }
    $retval = xmlrpc_encode($results);
    return new xmlrpcresp($retval);
}
示例#17
0
 public function provideSerializeData()
 {
     return array(array(['test' => 1], xmlrpc_encode(['test' => 1])), array(['test' => "abc"], xmlrpc_encode(['test' => "abc"])), array(['test' => [1, 2, 3]], xmlrpc_encode(['test' => [1, 2, 3]])), array(['test' => ["test" => 1]], xmlrpc_encode(['test' => ["test" => 1]])));
 }
<?php

$params = date("Ymd\\TH:i:s", time());
xmlrpc_set_type($params, 'datetime');
echo xmlrpc_encode($params);
<?php

var_dump(xmlrpc_encode(1.123456789));
var_dump(xmlrpc_encode(11234567891010));
var_dump(xmlrpc_encode(11234567));
var_dump(xmlrpc_encode(""));
var_dump(xmlrpc_encode("test"));
var_dump(xmlrpc_encode("1.22222222222222222222222"));
echo "Done\n";
/**
 * Builds an xmlrpc struct value out of an AdoDB recordset
 * (data values only, no data definition)
 */
function rs2xmlrpcval_body($adodbrs)
{
    $numfields = $adodbrs->FieldCount();
    // build structure containing recordset data
    $adodbrs->MoveFirst();
    $rows = array();
    while (!$adodbrs->EOF) {
        $columns = array();
        // This should work on all cases of fetch mode: assoc, num, both or default
        if ($adodbrs->fetchMode == 'ADODB_FETCH_BOTH' || count($adodbrs->fields) == 2 * $adodbrs->FieldCount()) {
            for ($i = 0; $i < $numfields; $i++) {
                if ($adodbrs->fields[$i] === null) {
                    $columns[$i] = new xmlrpcval('');
                } else {
                    $columns[$i] = xmlrpc_encode($adodbrs->fields[$i]);
                }
            }
        } else {
            foreach ($adodbrs->fields as $val) {
                if ($val === null) {
                    $columns[] = new xmlrpcval('');
                } else {
                    $columns[] = xmlrpc_encode($val);
                }
            }
        }
        $rows[] = new xmlrpcval($columns, "array");
        $adodbrs->MoveNext();
    }
    $body = new xmlrpcval($rows, "array");
    return $body;
}
示例#21
0
function classifieds_info_query($method_name, $params, $app_data)
{
    $req = $params[0];
    $classifiedID = $req['classifiedID'];
    $sql = "SELECT * FROM classifieds WHERE classifieduuid = '" . mysql_real_escape_string($classifiedID) . "'";
    $result = mysql_query($sql);
    $data = array();
    while ($row = mysql_fetch_assoc($result)) {
        $data[] = array("classifieduuid" => $row["classifieduuid"], "creatoruuid" => $row["creatoruuid"], "creationdate" => $row["creationdate"], "expirationdate" => $row["expirationdate"], "category" => $row["category"], "name" => $row["name"], "description" => $row["description"], "parceluuid" => $row["parceluuid"], "parentestate" => $row["parentestate"], "snapshotuuid" => $row["snapshotuuid"], "simname" => $row["simname"], "posglobal" => $row["posglobal"], "parcelname" => $row["parcelname"], "classifiedflags" => $row["classifiedflags"], "priceforlisting" => $row["priceforlisting"]);
    }
    $response_xml = xmlrpc_encode(array('success' => True, 'errorMessage' => "", 'data' => $data));
    print $response_xml;
}
示例#22
0
		And that's bad. So we catch that issue here. */
if (function_exists($method)) {
    $output = $method($paramArray);
} else {
    statusCode(501);
    $output = "Either you are requesting an incorrect method, or this node has not implemented this method.";
}
/* Set output type and encode. Current default is XML */
if (strcasecmp($outputFormat, "json") == 0) {
    header('Content-Type: text/javascript; charset=utf8');
    $output = '(' . json_encode($output) . ');';
    /* A trick I learned about JSON output. 
    		It needs those parens and the semicolon. */
} else {
    if (strcasecmp($outputFormat, "xml") == 0) {
        header('Content-Type: text/xml; charset=utf8');
        $output = xmlrpc_encode($output);
    } else {
        if (strcasecmp($outputFormat, "txt") == 0) {
            header('Content-Type: text/text; charset=utf8');
            $output = print_r($output);
            /* Improve this in the future. */
        } else {
            header('Content-Type: text/xml; charset=utf8');
            $output = xmlrpc_encode($output);
        }
    }
}
/* Send output to client. */
echo $output;
/* EOF */
示例#23
0
文件: _For.25.php 项目: exakat/exakat
<?php

if ($adodbrs->fetchMode == 'ADODB_FETCH_BOTH' || count($adodbrs->fields) == 2 * $adodbrs->FieldCount()) {
    for ($i = 0; $i < $numfields; $i++) {
        if ($adodbrs->fields[$i] === null) {
            $columns[$i] =& new xmlrpcval('');
        } else {
            $columns[$i] =& xmlrpc_encode($adodbrs->fields[$i]);
        }
    }
} else {
    foreach ($adodbrs->fields as $val) {
        if ($val === null) {
            $columns[] =& new xmlrpcval('');
        } else {
            $columns[] =& xmlrpc_encode($val);
        }
    }
}
示例#24
0
 /**
  * Encodes PHP data into XML data
  * @param mixed PHP data
  * @return string XML encoded PHP data
  */
 public function encode($data)
 {
     return xmlrpc_encode($data);
 }
示例#25
0
 private function xmlrpc_fault($faultCode)
 {
     return xmlrpc_encode(['faultCode' => $faultCode, 'faultString' => $this->responses[$faultCode]]);
 }
示例#26
0
<?php

$response = xmlrpc_encode(3.24234);
echo $response;
$response = xmlrpc_encode(-3.24234);
echo $response;
$response = xmlrpc_encode('Is string');
echo $response;
示例#27
0
 /**
  * Optional XMLRPC error handler
  *
  * @param int $code
  * @param string $msg
  */
 public static function error($code, $msg, array $options = null)
 {
     echo xmlrpc_encode(array("faultCode" => $code, "faultString" => $msg), array("encoding" => self::$encoding) + (array) $options);
 }
示例#28
0
function i_whichToolkit($m)
{
    global $xmlrpcName, $xmlrpcVersion, $SERVER_SOFTWARE, $xmlrpcStruct;
    $ret = array("toolkitDocsUrl" => "http://xmlrpc.usefulinc.com/php.html", "toolkitName" => $xmlrpcName, "toolkitVersion" => $xmlrpcVersion, "toolkitOperatingSystem" => $SERVER_SOFTWARE);
    return new xmlrpcresp(xmlrpc_encode($ret));
}
示例#29
0
$encoder = new Encoder();
for ($i = 0; $i < $num_tests; $i++) {
    $value = $encoder->encode($data, array('auto_dates'));
    $out = $value->serialize();
}
end_test('Data encoding (large array)', 'automatic encoding', $out);
if (function_exists('xmlrpc_set_type')) {
    begin_test('Data encoding (large array)', 'xmlrpc-epi encoding');
    for ($i = 0; $i < $num_tests; $i++) {
        for ($j = 0; $j < 10; $j++) {
            foreach ($keys as $k) {
                xmlrpc_set_type($data[$j][$k][4], 'datetime');
                xmlrpc_set_type($data[$j][$k][8], 'datetime');
            }
        }
        $out = xmlrpc_encode($data);
    }
    end_test('Data encoding (large array)', 'xmlrpc-epi encoding', $out);
}
// test 'old style' data decoding vs. 'automatic style' decoding
$dummy = new Request('');
$out = new Response($value);
$in = '<?xml version="1.0" ?>' . "\n" . $out->serialize();
begin_test('Data decoding (large array)', 'manual decoding');
for ($i = 0; $i < $num_tests; $i++) {
    $response = $dummy->ParseResponse($in, true);
    $value = $response->value();
    $result = array();
    foreach ($value as $val1) {
        $out = array();
        foreach ($val1 as $name => $val) {
<?php

$response = xmlrpc_encode(1);
echo $response;