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

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

spip.lire_article et spip.lire_auteur qui fonctionnent

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
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        spip_log($args,'xmpp');
42
43        $rpc_call->useragent = 'SPIP XML-RPC';
44        $rpc_call->query($method,$args);
45
46        /**
47         * La connexion au serveur renvoie une erreur
48         */
49        if ($rpc_call->isError()) {
50                xmlrpc_erreur($rpc_call->getErrorCode(),$rpc_call->getErrorMessage());
51                return false;
52        }
53
54        //Now parse what we've got back
55        //if (!xmlrpc_message_parse($message)) {
56                // XML error
57        //      xmlrpc_error(-32700, t('Parse error. Not well formed'));
58        //      return false;
59        //}
60        /**
61         * Le serveur répond une erreur à notre requête
62         */
63        if ($rpc_call->messagetype == 'fault') {
64                xmlrpc_erreur($message[0], $message[1]);
65                return false;
66        }
67        spip_log($message,'xmpp');
68        return $message;
69}
70
71function xmlrpc_erreur($code=null, $message=null, $reset = false){
72        static $xmlrpc_erreur;
73        if (isset($code)) {
74                $xmlrpc_erreur = new stdClass();
75                $xmlrpc_erreur->is_error = true;
76                $xmlrpc_erreur->code = $code;
77                $xmlrpc_erreur->message = $message;
78        }
79        elseif ($reset) {
80                $xmlrpc_erreur = null;
81        }
82
83        return $xmlrpc_erreur;
84}
85?>
Note: See TracBrowser for help on using the repository browser.