Changeset 97808 in spip-zone


Ignore:
Timestamp:
May 16, 2016, 6:44:54 PM (3 years ago)
Author:
marcimat@…
Message:

Reports de r96286 et r97807 : attraper les erreurs d'analyse XML et JSON et les loger.

Location:
_plugins_/rainette/branches/v2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rainette/branches/v2/inc/phraser.php

    r79738 r97808  
    11<?php
    22
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57/**
    68 * @param string $url
    79 * @param string $utiliser_namespace
     10 *
    811 * @return array
    912 */
    10 function url2flux_xml($url, $utiliser_namespace='false') {
     13function url2flux_xml($url, $utiliser_namespace = 'false') {
    1114
    1215        // Acquisition des données spécifiées par l'url
     
    1417        $flux = recuperer_page($url);
    1518
     19        if (!$flux) {
     20                spip_log("URL indiponible : $url", "rainette");
     21                return array();
     22        }
     23
    1624        // Tranformation de la chaine xml reçue en tableau associatif
    1725        $convertir = charger_fonction('simplexml_to_array', 'inc');
    18         $xml = $convertir(simplexml_load_string($flux), $utiliser_namespace);
    19         $xml = $xml['root'];
     26
     27        // Pouvoir attraper les erreurs de simplexml_load_string() !!!
     28        // http://stackoverflow.com/questions/17009045/how-do-i-handle-warning-simplexmlelement-construct/17012247#17012247
     29        set_error_handler(function($errno, $errstr, $errfile, $errline) {
     30                throw new Exception($errstr, $errno);
     31        });
     32
     33        try {
     34                $xml = $convertir(simplexml_load_string($flux), $utiliser_namespace);
     35                $xml = $xml['root'];
     36        } catch (Exception $e) {
     37                restore_error_handler();
     38                spip_log("Erreur analyse xml : " . $e->getMessage(), "rainette");
     39                return array();
     40        }
     41
     42        restore_error_handler();
    2043
    2144        return $xml;
     
    2447/**
    2548 * @param string $url
     49 *
    2650 * @return array
    2751 */
     
    3256        $flux = recuperer_page($url);
    3357
     58        if (!$flux) {
     59                spip_log("URL indiponible : $url", "rainette");
     60                return array();
     61        }
     62
    3463        // Tranformation de la chaine json reçue en tableau associatif
    35         $json = json_decode($flux, true);
     64        try {
     65                $json = json_decode($flux, true);
     66        } catch (Exception $e) {
     67                spip_log("Erreur analyse json : " . $e->getMessage(), "rainette");
     68                return array();
     69        }
    3670
    3771        return $json;
    3872}
    39 
    40 ?>
  • _plugins_/rainette/branches/v2/paquet.xml

    r97805 r97808  
    22        prefix="rainette"
    33        categorie="divers"
    4         version="2.2.5"
     4        version="2.2.6"
    55        etat="test"
    66        compatibilite="[3.0.11;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.