diff options
| author | mark <mark> | 2011-05-12 22:13:59 +0000 | 
|---|---|---|
| committer | mark <mark> | 2011-05-12 22:13:59 +0000 | 
| commit | 20434fef2eb78ccf1b80fdccb3a47fb04814354c (patch) | |
| tree | a27318d7faeeb93a687d948ef492f96d4cf30552 | |
| parent | b8d1f6382bd483b4c5718a7930ea2493a1686d50 (diff) | |
fix Drupal argument passing, #9380
| -rw-r--r-- | fs_selfservice/drupal/freeside.class.php | 44 | 
1 files changed, 27 insertions, 17 deletions
diff --git a/fs_selfservice/drupal/freeside.class.php b/fs_selfservice/drupal/freeside.class.php index 161156a22..cf49a03d8 100644 --- a/fs_selfservice/drupal/freeside.class.php +++ b/fs_selfservice/drupal/freeside.class.php @@ -1,5 +1,14 @@  <?php +function flatten($hash) { +  if ( !is_array($hash) ) return $hash; +  $flat = array(); +  array_walk($hash, function($value, $key, &$to) {  +    array_push($to, $key, $value); +  }, &$flat); +  return($flat); +} +  class FreesideSelfService  {    public $URL = ''; @@ -8,25 +17,26 @@ class FreesideSelfService  {        $this;      } -    public function __call($name, $arguments) { - -        error_log("[FreesideSelfService] $name called, sending to ". $this->URL); +  public function __call($name, $arguments) { -        $request = xmlrpc_encode_request("FS.ClientAPI_XMLRPC.$name", $arguments); -        $context = stream_context_create( array( 'http' => array( -            'method' => "POST", -            'header' => "Content-Type: text/xml", -            'content' => $request -        ))); -        $file = file_get_contents($this->URL, false, $context); -        $response = xmlrpc_decode($file); -        if (xmlrpc_is_fault($response)) { -            trigger_error("[FreesideSelfService] XML-RPC communication error: $response[faultString] ($response[faultCode])"); -        } else { -            //error_log("[FreesideSelfService] $response"); -            return $response; -        } +    error_log("[FreesideSelfService] $name called, sending to ". $this->URL); +    $request = xmlrpc_encode_request("FS.ClientAPI_XMLRPC.$name",  +      flatten($arguments[0]) +    ); +    $context = stream_context_create( array( 'http' => array( +      'method' => "POST", +      'header' => "Content-Type: text/xml", +      'content' => $request +    ))); +    $file = file_get_contents($this->URL, false, $context); +    $response = xmlrpc_decode($file); +    if (xmlrpc_is_fault($response)) { +      trigger_error("[FreesideSelfService] XML-RPC communication error: $response[faultString] ($response[faultCode])"); +    } else { +      //error_log("[FreesideSelfService] $response"); +      return $response;      } +  }  }  | 
