$this->set_protocolname("XML-RPC");
$this->set_protocolid("xmlrpc");
}
-
+
public function run() {
$enable = $this->get_enable();
if (empty($enable)) {
if (empty($token)) {
$server = new Zend_XmlRpc_Server();
$server->setClass("ws_authentication", "authentication");
- echo $server->handle();
+ // Create a request object
+ $request = new Zend_XmlRpc_Request_Http();
+ $params = $request->getParams();
+ $this->convertXmlrpcParams($params);
+ $request->setParams($params);
+ echo $server->handle($request);
} else { // if token exist, do the authentication here
- /// TODO: following function will need to be modified
+ /// TODO: following function will need to be modified
$user = webservice_lib::mock_check_token($token);
if (empty($user)) {
throw new moodle_exception('wrongidentification');
} else {
- /// TODO: probably change this
+ /// TODO: probably change this
global $USER;
$USER = $user;
}
require_once(dirname(__FILE__) . '/../../'.$classpath.'/external.php');
/// run the server
- $server = new Zend_XmlRpc_Server();
+ $server = new Zend_XmlRpc_Server();
$server->setClass($classpath."_external", $classpath);
- echo $server->handle();
+ $request = new Zend_XmlRpc_Request_Http();
+ $params = $request->getParams();
+ $this->convertXmlrpcParams($params);
+ $request->setParams($params);
+ echo $server->handle($request);
+ }
+ }
+
+ private function convertXmlrpcParams(&$params) {
+ if (is_array($params)) {
+ //get the first key
+ $key = key($params);
+
+ reset($params);
+
+ //if first key == 0 so do not change the params
+ if (strcmp($key, "0") == 0) {
+ foreach ($params as &$param) {
+ $this->convertXmlrpcParams($param);
+ }
+ }
+
+ //first key is a string, params need to be converted into an object
+ //first go into
+ else {
+ foreach ($params as $paramkey => &$param) {
+ $this->convertXmlrpcParams($param);
+ }
+ $params = (object) $params;
+ }
}
}
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
-
+
//1. authentication
$client = new Zend_XmlRpc_Client($CFG->wwwroot."/webservice/xmlrpc/server.php");
-$token = $client->call('authentication.get_token', array(array('username' => "wsuser", 'password' => "wspassword")));
+$params = new stdClass();
+$params->username = 'wsuser';
+$params->password = 'wspassword';
+$token = $client->call('authentication.get_token', $params);
var_dump($token);
//2. test functions
$client = new Zend_XmlRpc_Client($CFG->wwwroot."/webservice/xmlrpc/server.php?classpath=user&token=".$token);
-var_dump($users = $client->call('user.get_users', array(array('search' => "admin"))));
+$params = new stdClass();
+$params->search = "admin";
+var_dump($users = $client->call('user.get_users', $params));
print "<br/><br/>\n";
-var_dump($users = $client->call('user.create_users', array(array(array('firstname' => "firstname6",'username' => "mockuser66",'lastname' => "lastname6",'email' => "mockuser6@mockuser6.com",'password' => "password6")))));
+$user = new stdClass();
+$user->password = "password6";
+$user->email = "mockuser6@mockuser6.com";
+$user->username = "mockuser66";
+$user->firstname = "firstname6";
+$user->lastname = "lastname6";
+$params = new stdClass();
+$params->users = array($user);
+var_dump($users = $client->call('user.create_users', $params));
print "<br/><br/>\n";
-var_dump($users = $client->call('user.update_users', array(array(array('username' => "mockuser66",'newusername' => "mockuser6b",'firstname' => "firstname6b")))));
+$usertoupdate = new stdClass();
+$usertoupdate->email = "mockuser6@mockuser6.com";
+$usertoupdate->username = "mockuser66";
+$usertoupdate->newusername = 'mockuser6b';
+$usertoupdate->firstname = "firstname6b";
+$params = new stdClass();
+$params->users = array($usertoupdate);
+var_dump($users = $client->call('user.update_users', $params));
print "<br/><br/>\n";
-var_dump($users = $client->call('user.delete_users', array(array(array('username' => "mockuser6b")))));
+$params = new stdClass();
+$params->usernames = array("mockuser6b");
+var_dump($users = $client->call('user.delete_users', $params));
//print "<br/><br/>\n";
//var_dump($users = $client->call('user.tmp_do_multiple_user_searches', array(array(array('search' => "jerome"),array('search' => "admin")))));
//print "<br/><br/>\n";