summaryrefslogtreecommitdiff
path: root/fs_selfservice/drupal/freeside.class.php
blob: cf49a03d8bfec1461d5a9eb1b91209c695f5996b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?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 = '';
    function FreesideSelfService() {
      $this->URL = 'http://' . variable_get('freeside_hostname','') . ':8080';
      $this;
    }

  public function __call($name, $arguments) {

    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;
    }
  }

}

?>