Release plat/al core v1.1.13
[platal.git] / classes / xmlrpcclient.php
index dfc74da..d9365f7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2011 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -107,13 +107,26 @@ class XmlrpcClient
         if ($this->bt) {
             $this->bt->stop();
         }
+        if (is_null($answer)) {
+            Platal::page()->trigError("L'accès aux listes de diffusion n'est pas disponible actuellement.");
+            if ($this->bt) {
+                $this->bt->update(0, "Connection failed");
+            }
+            return null;
+        }
+        Platal::assert(starts_with($answer, 'HTTP/1.0 200 OK'), "HTTP Error:\n" . $answer,
+                       "Une erreur est survenue lors de l'accès aux listes de diffusion.");
         $result = $this->find_and_decode_xml($answer);
         if ($this->bt) {
-            if (isset($result['faultCode'])) {
+            if (is_array($result) && isset($result['faultCode'])) {
                 $this->bt->update(0, $result['faultString']);
             } else {
                 $this->bt->update(count($result));
             }
+        } else {
+            Platal::assert(!is_array($result) || !isset($result['faultCode']),
+                           "RPC Error:\n" . $answer,
+                           "Une erreur est survenue lors de l'accès aux listes de diffusion.");
         }
 
         if (is_array($result) && isset($result['faultCode'])) {
@@ -126,5 +139,5 @@ class XmlrpcClient
     }
 }
 
-// vim:set et sw=4 sts=4 sws=4 enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 fenc=utf-8:
 ?>