Note that it's not necessary in PHP to specify the type of all arguments given 
to XML-RPC calls if you use php_xmlrpc_encode() function. In fact, we had 
something similar to what you did which avoids passing $uid and parameter types 
in each call:


$server = new OpenErpConnection($user, $password, $database, $url);
$server->login();
$domain = 
array(array('ref','=',$code),array('password','=',$_POST['password']));
$ids = $server->search('res.partner', $domain);
$server->read('res.partner', $ids, array('id','name','code') );


We didn't need create, write, unlink or action, but is the code that implements 
login, search and read, in case it's useful to anyone:


class OpenErpConnection
{
        public $user;
        public $userId;
        public $password;
        public $database;
        public $url;
        public $connection;

        function __construct($user, $password, 
$database, $url)
        {
                $this->user = $user;
                $this->password = 
$password;
                $this->database = 
$database;
                $this->url = $url;
        }

        function login()
        {
                $msg = new 
xmlrpcmsg('login');
                $msg->addParam(new 
xmlrpcval($this->database, "string"));
                $msg->addParam(new 
xmlrpcval($this->user, "string"));
                $msg->addParam(new 
xmlrpcval($this->password, "string"));

                $connection = new 
xmlrpc_client($this->url.'common');
                $resp = 
$connection->send($msg);
                $val = 
$resp->value();
                $this->userId = 
$val->scalarVal();
                return $this->userId;
        }

        function search($relation,$domain)
        {
                $msg = new 
xmlrpcmsg('execute');
                $msg->addParam(new 
xmlrpcval($this->database, "string"));
                $msg->addParam(new 
xmlrpcval($this->userId, "int"));
                $msg->addParam(new 
xmlrpcval($this->password, "string"));
                $msg->addParam(new 
xmlrpcval($relation, "string"));
                $msg->addParam(new 
xmlrpcval("search", "string"));
                
$msg->addParam(php_xmlrpc_encode($domain));

                $connection = new 
xmlrpc_client($this->url.'object');
                $resp = 
$connection->send($msg);
                //echo "FAULT: " . 
$resp->faultString();
                $val = 
$resp->value();

                return 
php_xmlrpc_decode($val);
        }

        function 
read($relation,$ids,$fields=array(),$context=array())
        {
                $msg = new 
xmlrpcmsg('execute');
                $msg->addParam(new 
xmlrpcval($this->database, "string"));
                $msg->addParam(new 
xmlrpcval($this->userId, "int"));
                $msg->addParam(new 
xmlrpcval($this->password, "string"));
                $msg->addParam(new 
xmlrpcval($relation, "string"));
                $msg->addParam(new 
xmlrpcval("read", "string"));
                
$msg->addParam(php_xmlrpc_encode($ids));
                
$msg->addParam(php_xmlrpc_encode($fields));
                $connection = new 
xmlrpc_client($this->url.'object');
                $resp = 
$connection->send($msg);
                $val = 
$resp->value();

                return 
php_xmlrpc_decode($val);
        }
}


------------------------
Albert Cervera i Areny
http://www.NaN-tic.com
OpenERP Partners

http://twitter.com/albertnan




-------------------- m2f --------------------

--
http://www.openobject.com/forum/viewtopic.php?p=62878#62878

-------------------- m2f --------------------


_______________________________________________
Tinyerp-users mailing list
http://tiny.be/mailman2/listinfo/tinyerp-users

Reply via email to