Moodle PHP Documentation 4.1
Moodle 4.1.11 (Build: 20240610) (c8c84b4af18)
|
Public Member Functions | |
__construct ($path, $server='', $port='', $method='') | |
getLogger () | |
multicall ($reqs, $timeout=0, $method='', $fallback=true) | |
Send an array of requests and return an array of responses. | |
send ($req, $timeout=0, $method='') | |
Send an xmlrpc request to the server. | |
setAcceptedCompression ($compMethod) | |
Enables/disables reception of compressed xmlrpc responses. | |
setCaCertificate ($caCert, $isDir=false) | |
Add a CA certificate to verify server with in SSL-enabled communication when SetSSLVerifypeer has been set to TRUE. | |
setCertificate ($cert, $certPass='') | |
Set the optional certificate and passphrase used in SSL-enabled communication with a remote server. | |
setCookie ($name, $value='', $path='', $domain='', $port=null) | |
Adds a cookie to list of cookies that will be sent to server with every further request (useful e.g. | |
setCredentials ($user, $password, $authType=1) | |
Sets the username and password for authorizing the client to the server. | |
setCurlOptions ($options) | |
Directly set cURL options, for extra flexibility (when in cURL mode). | |
setDebug ($level) | |
Enable/disable the echoing to screen of the xmlrpc responses received. | |
setKey ($key, $keyPass) | |
Set attributes for SSL communication: private SSL key. | |
setProxy ($proxyHost, $proxyPort, $proxyUsername='', $proxyPassword='', $proxyAuthType=1) | |
Set proxy info. | |
setRequestCompression ($compMethod) | |
Enables/disables http compression of xmlrpc request. | |
setSSLVerifyHost ($i) | |
Set attributes for SSL communication: verify the remote host's SSL certificate's common name (CN). | |
setSSLVerifyPeer ($i) | |
Set attributes for SSL communication: verify the remote host's SSL certificate, and cause the connection to fail if the cert verification fails. | |
setSSLVersion ($i) | |
Set attributes for SSL communication: SSL version to use. | |
setUseCurl ($useCurlMode) | |
setUserAgent ($agentString) | |
Set user-agent string that will be used by this client instance in http headers sent to the server. | |
Static Public Member Functions | |
static | setLogger ($logger) |
Public Attributes | |
$accepted_charset_encodings = array() | |
Charset encodings that can be decoded without problems by the client. | |
$accepted_compression = array() | |
List of http compression methods accepted by the client for responses. | |
$authtype = 1 | |
$cacert = '' | |
$cacertdir = '' | |
$cert = '' | |
$certpass = '' | |
$cookies = array() | |
$debug = 0 | |
$errno | |
$errstr | |
$extracurlopts = array() | |
$keepalive = false | |
Whether to use persistent connections for http 1.1 and https. | |
$key = '' | |
$keypass = '' | |
$method = 'http' | |
bool | $no_multicall = false |
This determines whether the multicall() method will try to take advantage of the system.multicall xmlrpc method to dispatch to the server an array of requests in a single http roundtrip or simply execute many consecutive http calls. | |
$password = '' | |
$path | |
$port = 0 | |
$proxy = '' | |
$proxy_authtype = 1 | |
$proxy_pass = '' | |
$proxy_user = '' | |
$proxyport = 0 | |
$request_charset_encoding = '' | |
The charset encoding that will be used for serializing request sent by the client. | |
$request_compression = '' | |
Name of compression scheme to be used for sending requests. | |
$return_type = XMLParser::RETURN_XMLRPCVALS | |
Decides the content of Response objects returned by calls to send() and multicall(). | |
$server | |
$sslversion = 0 | |
$use_curl = self::USE_CURL_AUTO | |
$user_agent | |
Sent to servers in http headers. | |
$username = '' | |
$verifyhost = 2 | |
$verifypeer = true | |
$xmlrpc_curl_handle = null | |
CURL handle: used for keep-alive connections (PHP 4.3.8 up, see: http://curl.haxx.se/docs/faq.html#7.3). | |
const | USE_CURL_ALWAYS = 1 |
const | USE_CURL_AUTO = 2 |
const | USE_CURL_NEVER = 0 |
Protected Member Functions | |
prepareCurlHandle ($req, $server, $port, $timeout=0, $username='', $password='', $authType=1, $cert='', $certPass='', $caCert='', $caCertDir='', $proxyHost='', $proxyPort=0, $proxyUsername='', $proxyPassword='', $proxyAuthType=1, $method='https', $keepAlive=false, $key='', $keyPass='', $sslVersion=0) | |
sendPayloadCURL ($req, $server, $port, $timeout=0, $username='', $password='', $authType=1, $cert='', $certPass='', $caCert='', $caCertDir='', $proxyHost='', $proxyPort=0, $proxyUsername='', $proxyPassword='', $proxyAuthType=1, $method='https', $keepAlive=false, $key='', $keyPass='', $sslVersion=0) | |
Contributed by Justin Miller justi.nosp@m.n@vo.nosp@m.xel.n.nosp@m.et Requires curl to be built into PHP NB: CURL versions before 7.11.10 cannot use proxy to talk to https servers! | |
sendPayloadHTTP10 ($req, $server, $port, $timeout=0, $username='', $password='', $authType=1, $proxyHost='', $proxyPort=0, $proxyUsername='', $proxyPassword='', $proxyAuthType=1, $method='http') | |
sendPayloadHTTPS ($req, $server, $port, $timeout=0, $username='', $password='', $authType=1, $cert='', $certPass='', $caCert='', $caCertDir='', $proxyHost='', $proxyPort=0, $proxyUsername='', $proxyPassword='', $proxyAuthType=1, $keepAlive=false, $key='', $keyPass='', $sslVersion=0) | |
sendPayloadSocket ($req, $server, $port, $timeout=0, $username='', $password='', $authType=1, $cert='', $certPass='', $caCert='', $caCertDir='', $proxyHost='', $proxyPort=0, $proxyUsername='', $proxyPassword='', $proxyAuthType=1, $method='http', $key='', $keyPass='', $sslVersion=0) | |
Static Protected Attributes | |
static | $logger |
PhpXmlRpc\Client::__construct | ( | $path, | |
$server = '', | |||
$port = '', | |||
$method = '' ) |
string | $path | either the PATH part of the xmlrpc server URL, or complete server URL (in which case you should use and empty string for all other parameters) e.g. /xmlrpc/server.php e.g. http://phpxmlrpc.sourceforge.net/server.php e.g. https://james:bond@secret.service.com:444/xmlrpcserver?agent=007 e.g. h2://fast-and-secure-services.org/endpoint |
string | $server | the server name / ip address |
integer | $port | the port the server is listening on, when omitted defaults to 80 or 443 depending on protocol used |
string | $method | the http protocol variant: defaults to 'http'; 'https', 'http11', 'h2' and 'h2c' can be used if CURL is installed. The value set here can be overridden in any call to $this->send(). Use 'h2' to make the lib attempt to use http/2 over a secure connection, and 'h2c' for http/2 without tls. Note that 'h2c' will not use the h2c 'upgrade' method, and be thus incompatible with any server/proxy not supporting http/2. This is because POST request are not compatible with h2c upgrade. |
PhpXmlRpc\Client::multicall | ( | $reqs, | |
$timeout = 0, | |||
$method = '', | |||
$fallback = true ) |
Send an array of requests and return an array of responses.
Unless $this->no_multicall has been set to true, it will try first to use one single xmlrpc call to server method system.multicall, and revert to sending many successive calls in case of failure. This failure is also stored in $this->no_multicall for subsequent calls. Unfortunately, there is no server error code universally used to denote the fact that multicall is unsupported, so there is no way to reliably distinguish between that and a temporary failure. If you are sure that server supports multicall and do not want to fallback to using many single calls, set the fourth parameter to FALSE.
NB: trying to shoehorn extra functionality into existing syntax has resulted in pretty much convoluted code...
Request[] | $reqs | an array of Request objects |
integer | $timeout | connection timeout (in seconds). See the details in the docs for the send() method |
string | $method | the http protocol variant to be used. See the details in the docs for the send() method |
boolean | fallback When true, upon receiving an error during multicall, multiple single calls will be attempted |
Response[] |
PhpXmlRpc\Client::send | ( | $req, | |
$timeout = 0, | |||
$method = '' ) |
Send an xmlrpc request to the server.
Request | Request[] | string | $req | The Request object, or an array of requests for using multicall, or the complete xml representation of a request. When sending an array of Request objects, the client will try to make use of a single 'system.multicall' xml-rpc method call to forward to the server all the requests in a single HTTP round trip, unless $this->no_multicall has been previously set to TRUE (see the multicall method below), in which case many consecutive xmlrpc requests will be sent. The method will return an array of Response objects in both cases. The third variant allows to build by hand (or any other means) a complete xmlrpc request message, and send it to the server. $req should be a string containing the complete xml representation of the request. It is e.g. useful when, for maximal speed of execution, the request is serialized into a string using the native php xmlrpc functions (see http://www.php.net/xmlrpc) |
integer | $timeout | Connection timeout, in seconds, If unspecified, a platform specific timeout will apply. This timeout value is passed to fsockopen(). It is also used for detecting server timeouts during communication (i.e. if the server does not send anything to the client for $timeout seconds, the connection will be closed). |
string | $method | valid values are 'http', 'http11', 'https', 'h2' and 'h2c'. If left unspecified, the http protocol chosen during creation of the object will be used. Use 'h2' to make the lib attempt to use http/2 over a secure connection, and 'h2c' for http/2 without tls. Note that 'h2c' will not use the h2c 'upgrade' method, and be thus incompatible with any server/proxy not supporting http/2. This is because POST request are not compatible with h2c upgrade. |
Response|Response[] | Note that the client will always return a Response object, even if the call fails |
allow throwing exceptions instead of returning responses in case of failed calls and/or Fault responses
refactor: we now support many options besides connection timeout and http version to use. Why only privilege those?
|
protected |
Contributed by Justin Miller justi.nosp@m.n@vo.nosp@m.xel.n.nosp@m.et Requires curl to be built into PHP NB: CURL versions before 7.11.10 cannot use proxy to talk to https servers!
Request | $req | |
string | $server | |
int | $port | |
int | $timeout | |
string | $username | |
string | $password | |
int | $authType | |
string | $cert | |
string | $certPass | |
string | $caCert | |
string | $caCertDir | |
string | $proxyHost | |
int | $proxyPort | |
string | $proxyUsername | |
string | $proxyPassword | |
int | $proxyAuthType | |
string | $method | 'http' (let curl decide), 'http10', 'http11', 'https', 'h2c' or 'h2' |
bool | $keepAlive | |
string | $key | |
string | $keyPass | |
int | $sslVersion |
Response |
|
protected |
Request | $req | |
string | $server | |
int | $port | |
int | $timeout | |
string | $username | |
string | $password | |
int | $authType | |
string | $proxyHost | |
int | $proxyPort | |
string | $proxyUsername | |
string | $proxyPassword | |
int | $proxyAuthType | |
string | $method |
Response |
|
protected |
Request | $req | |
string | $server | |
int | $port | |
int | $timeout | |
string | $username | |
string | $password | |
int | $authType | |
string | $cert | |
string | $certPass | |
string | $caCert | |
string | $caCertDir | |
string | $proxyHost | |
int | $proxyPort | |
string | $proxyUsername | |
string | $proxyPassword | |
int | $proxyAuthType | |
bool | $keepAlive | |
string | $key | |
string | $keyPass | |
int | $sslVersion |
Response |
|
protected |
Request | $req | |
string | $server | |
int | $port | |
int | $timeout | |
string | $username | |
string | $password | |
int | $authType | only value supported is 1 |
string | $cert | |
string | $certPass | |
string | $caCert | |
string | $caCertDir | |
string | $proxyHost | |
int | $proxyPort | |
string | $proxyUsername | |
string | $proxyPassword | |
int | $proxyAuthType | only value supported is 1 |
string | $method | 'http' (synonym for 'http10'), 'http10' or 'https' |
string | $key | |
string | $keyPass |
int | $sslVersion |
Response |
PhpXmlRpc\Client::setAcceptedCompression | ( | $compMethod | ) |
Enables/disables reception of compressed xmlrpc responses.
This requires the "zlib" extension to be enabled in your php install. If it is, by default xmlrpc_client instances will enable reception of compressed content. Note that enabling reception of compressed responses merely adds some standard http headers to xmlrpc requests. It is up to the xmlrpc server to return compressed responses when receiving such requests.
string | $compMethod | either 'gzip', 'deflate', 'any' or '' |
PhpXmlRpc\Client::setCaCertificate | ( | $caCert, | |
$isDir = false ) |
Add a CA certificate to verify server with in SSL-enabled communication when SetSSLVerifypeer has been set to TRUE.
See the php manual page about CURLOPT_CAINFO for more details.
string | $caCert | certificate file name (or dir holding certificates) |
bool | $isDir | set to true to indicate cacert is a dir. defaults to false |
PhpXmlRpc\Client::setCertificate | ( | $cert, | |
$certPass = '' ) |
Set the optional certificate and passphrase used in SSL-enabled communication with a remote server.
Note: to retrieve information about the client certificate on the server side, you will need to look into the environment variables which are set up by the webserver. Different webservers will typically set up different variables.
string | $cert | the name of a file containing a PEM formatted certificate |
string | $certPass | the password required to use it |
PhpXmlRpc\Client::setCookie | ( | $name, | |
$value = '', | |||
$path = '', | |||
$domain = '', | |||
$port = null ) |
Adds a cookie to list of cookies that will be sent to server with every further request (useful e.g.
for keeping session info outside of the xml-rpc payload).
NB: By default cookies are sent using the 'original/netscape' format, which is also the same as the RFC 2965; setting any param but name and value will turn the cookie into a 'version 1' cookie (i.e. RFC 2109 cookie) that might not be fully supported by the server. Note that RFC 2109 has currently 'historic' status...
string | $name | nb: will not be escaped in the request's http headers. Take care not to use CTL chars or separators! |
string | $value | |
string | $path | leave this empty unless the xml-rpc server only accepts RFC 2109 cookies |
string | $domain | leave this empty unless the xml-rpc server only accepts RFC 2109 cookies |
int | $port | leave this empty unless the xml-rpc server only accepts RFC 2109 cookies |
check correctness of urlencoding cookie value (copied from php way of doing it, but php is generally sending response not requests. We do the opposite...)
strip invalid chars from cookie name? As per RFC6265, we should follow RFC2616, Section 2.2
PhpXmlRpc\Client::setCredentials | ( | $user, | |
$password, | |||
$authType = 1 ) |
Sets the username and password for authorizing the client to the server.
With the default (HTTP) transport, this information is used for HTTP Basic authorization. Note that username and password can also be set using the class constructor. With HTTP 1.1 and HTTPS transport, NTLM and Digest authentication protocols are also supported. To enable them use the constants CURLAUTH_DIGEST and CURLAUTH_NTLM as values for the auth type parameter.
string | $user | username |
string | $password | password |
integer | $authType | auth type. See curl_setopt man page for supported auth types. Defaults to CURLAUTH_BASIC (basic auth). Note that auth types NTLM and Digest will only work if the Curl php extension is enabled. |
PhpXmlRpc\Client::setCurlOptions | ( | $options | ) |
Directly set cURL options, for extra flexibility (when in cURL mode).
It allows eg. to bind client to a specific IP interface / address.
array | $options |
PhpXmlRpc\Client::setDebug | ( | $level | ) |
Enable/disable the echoing to screen of the xmlrpc responses received.
The default is not no output anything.
The debugging information at level 1 includes the raw data returned from the XML-RPC server it was querying (including bot HTTP headers and the full XML payload), and the PHP value the client attempts to create to represent the value returned by the server At level2, the complete payload of the xmlrpc request is also printed, before being sent t the server.
This option can be very useful when debugging servers as it allows you to see exactly what the client sends and the server returns.
integer | $level | values 0, 1 and 2 are supported (2 = echo sent msg too, before received response) |
PhpXmlRpc\Client::setKey | ( | $key, | |
$keyPass ) |
Set attributes for SSL communication: private SSL key.
NB: does not work in older php/curl installs. Thanks to Daniel Convissor.
string | $key | The name of a file containing a private SSL key |
string | $keyPass | The secret password needed to use the private SSL key |
PhpXmlRpc\Client::setProxy | ( | $proxyHost, | |
$proxyPort, | |||
$proxyUsername = '', | |||
$proxyPassword = '', | |||
$proxyAuthType = 1 ) |
Set proxy info.
NB: CURL versions before 7.11.10 cannot use a proxy to communicate with https servers.
string | $proxyHost | |
string | $proxyPort | Defaults to 8080 for HTTP and 443 for HTTPS |
string | $proxyUsername | Leave blank if proxy has public access |
string | $proxyPassword | Leave blank if proxy has public access |
int | $proxyAuthType | defaults to CURLAUTH_BASIC (Basic authentication protocol); set to constant CURLAUTH_NTLM to use NTLM auth with proxy (has effect only when the client uses the HTTP 1.1 protocol) |
PhpXmlRpc\Client::setRequestCompression | ( | $compMethod | ) |
Enables/disables http compression of xmlrpc request.
This requires the "zlib" extension to be enabled in your php install. Take care when sending compressed requests: servers might not support them (and automatic fallback to uncompressed requests is not yet implemented).
string | $compMethod | either 'gzip', 'deflate' or '' |
PhpXmlRpc\Client::setSSLVerifyHost | ( | $i | ) |
Set attributes for SSL communication: verify the remote host's SSL certificate's common name (CN).
Note that support for value 1 has been removed in cURL 7.28.1
int | $i | Set to 1 to only the existence of a CN, not that it matches |
PhpXmlRpc\Client::setSSLVerifyPeer | ( | $i | ) |
Set attributes for SSL communication: verify the remote host's SSL certificate, and cause the connection to fail if the cert verification fails.
By default, verification is enabled. To specify custom SSL certificates to validate the server with, use the setCaCertificate method.
bool | $i | enable/disable verification of peer certificate |
PhpXmlRpc\Client::setSSLVersion | ( | $i | ) |
Set attributes for SSL communication: SSL version to use.
Best left at 0 (default value): let cURL decide
int | $i |
PhpXmlRpc\Client::setUseCurl | ( | $useCurlMode | ) |
int | $useCurlMode | self\USE_CURL_ALWAYS, self\USE_CURL_AUTO or self\USE_CURL_NEVER |
PhpXmlRpc\Client::setUserAgent | ( | $agentString | ) |
Set user-agent string that will be used by this client instance in http headers sent to the server.
The default user agent string includes the name of this library and the version number.
string | $agentString |
PhpXmlRpc\Client::$accepted_compression = array() |
List of http compression methods accepted by the client for responses.
NB: PHP supports deflate, gzip compressions out of the box if compiled w. zlib.
NNB: you can set it to any non-empty array for HTTP11 and HTTPS, since in those cases it will be up to CURL to decide the compression methods it supports. You might check for the presence of 'zlib' in the output of curl_version() to determine whether compression is supported or not
PhpXmlRpc\Client::$method = 'http' |
bool PhpXmlRpc\Client::$no_multicall = false |
This determines whether the multicall() method will try to take advantage of the system.multicall xmlrpc method to dispatch to the server an array of requests in a single http roundtrip or simply execute many consecutive http calls.
Defaults to FALSE, but it will be enabled automatically on the first failure of execution of system.multicall.
PhpXmlRpc\Client::$request_charset_encoding = '' |
The charset encoding that will be used for serializing request sent by the client.
It defaults to NULL, which means using US-ASCII and encoding all characters outside of the ASCII printable range using their xml character entity representation (this has the benefit that line end characters will not be mangled in the transfer, a CR-LF will be preserved as well as a singe LF). Valid values are 'US-ASCII', 'UTF-8' and 'ISO-8859-1'. For the fastest mode of operation, set your both your app internal encoding as well as this to UTF-8.
PhpXmlRpc\Client::$request_compression = '' |
Name of compression scheme to be used for sending requests.
Either null, gzip or deflate.
PhpXmlRpc\Client::$return_type = XMLParser::RETURN_XMLRPCVALS |
Decides the content of Response objects returned by calls to send() and multicall().
Valid values are 'xmlrpcvals', 'phpvals' or 'xml'.
Determines whether the value returned inside an Response object as results of calls to the send() and multicall() methods will be a Value object, a plain php value or a raw xml string. Allowed values are 'xmlrpcvals' (the default), 'phpvals' and 'xml'. To allow the user to differentiate between a correct and a faulty response, fault responses will be returned as Response objects in any case. Note that the 'phpvals' setting will yield faster execution times, but some of the information from the original response will be lost. It will be e.g. impossible to tell whether a particular php string value was sent by the server as an xmlrpc string or base64 value.