source: plugins_spip/xmlrpc/inc/xmlrpc.php @ 6301

Last change on this file since 6301 was 6301, checked in by kent1, 9 years ago

de meilleurs retours

File size: 1.7 KB
Line 
1<?php
2/**
3 * Plugin xmlrpc
4 *
5 * Auteurs : kent1 (http://www.kent1.info)
6 * © 2011 - GNU/GPL v3
7 *
8 * Fonction cliente xml-rpc
9 */
10
11if (!defined("_ECRIRE_INC_VERSION")) return;
12
13/**
14 * Fonction cliente XML-RPC
15 *
16 *
17 * @return unknown_type
18 */
19function inc_xmlrpc_dist(){
20        include_spip(_DIR_IXR.'ixr_library');
21
22        $args = func_get_args();
23        $url = array_shift($args);
24        $rpc_call = new IXR_Client($url,'','',10);
25        //$rpc_call->debug = true;
26        xmlrpc_erreur('','',true);
27
28        if (is_array($args[0])) {
29                $method = 'system.multicall';
30                $multicall_args = array();
31                foreach ($args[0] as $call) {
32                        $multicall_args[] = array('methodName' => array_shift($call), 'params' => $call);
33                }       
34                $args = array($multicall_args);
35        }
36        else {
37                $method = array_shift($args);
38        }
39        $args = array_shift($args);
40
41        $rpc_call->useragent = 'SPIP XML-RPC';
42        $rpc_call->query($method,$args);
43
44        /**
45         * La connexion au serveur renvoie une erreur
46         */
47        if ($rpc_call->isError()) {
48                $erreur = xmlrpc_erreur($rpc_call->getErrorCode(),$rpc_call->getErrorMessage());
49                return $erreur;
50        }
51
52        //Now parse what we've got back
53        //if (!xmlrpc_message_parse($message)) {
54                // XML error
55        //      xmlrpc_error(-32700, t('Parse error. Not well formed'));
56        //      return false;
57        //}
58        /**
59         * Le serveur répond une erreur à notre requête
60         */
61        if ($rpc_call->messagetype == 'fault') {
62                xmlrpc_erreur($message[0], $message[1]);
63                return false;
64        }
65        return $rpc_call->message->params[0];
66}
67
68function xmlrpc_erreur($code=null, $message=null, $reset = false){
69        static $xmlrpc_erreur;
70        if (isset($code)) {
71                $xmlrpc_erreur = new stdClass();
72                $xmlrpc_erreur->is_error = true;
73                $xmlrpc_erreur->code = $code;
74                $xmlrpc_erreur->message = $message;
75        }
76        elseif ($reset) {
77                $xmlrpc_erreur = null;
78        }
79
80        return $xmlrpc_erreur;
81}
82?>
Note: See TracBrowser for help on using the repository browser.