[SPIP] ~maj v3.0.14-->v3.0.17
[ptitvelo/web/www.git] / www / ecrire / public / debusquer.php
index 1e3e346..1fb6dd8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2012                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -13,6 +13,7 @@
 if (!defined('_ECRIRE_INC_VERSION')) return;
 
 include_spip('public/decompiler');
+include_spip('inc/filtres_mini');
 
 // Le debusqueur repose sur la globale debug_objets,
 // affectee par le compilateur et le code produit par celui-ci.
@@ -37,19 +38,47 @@ include_spip('public/decompiler');
  */
 defined('_DEBUG_MAX_SQUELETTE_ERREURS') || define('_DEBUG_MAX_SQUELETTE_ERREURS', 9);
 
-//
-// Point d'entree general, 
-// pour les appels involontaires ($message non vide => erreur)
-// et volontaires (var_mode et var_profile) 
-// Si pas d'autorisation, les erreurs ne sont pas affichees
-// (mais seront dans les logs)
-// Si l'erreur vient de SPIP,  en parler sur spip@rezo.net
 
-function public_debusquer_dist($message = '', $lieu = ''){
+/**
+ * Point d'entrée pour les erreurs de compilation
+ *
+ * Point d'entrée pour les appels involontaires ($message non vide => erreur)
+ *  et volontaires (var_mode et var_profile)
+ * 
+ * Si pas d'autorisation, les erreurs ne sont pas affichées
+ * (mais seront dans les logs)
+ *
+ * Si l'erreur vient de SPIP,  en parler sur `spip@rezo.net`
+ * 
+ * @param bool|string|array $message
+ *     - Message d'erreur (string|array)
+ *     - false pour retourner le texte des messages d'erreurs
+ *     - vide pour afficher les messages d'erreurs
+ * @param string|Contexte $lieu
+ *     Contexte : lieu d'origine de l'erreur
+ * @param array $opt
+ *     Options pour debug ou tests unitaires
+ *     - 'erreurs' = 'get' : Retourne le tableau des erreurs
+ *     - 'erreurs' = 'reset' : Efface le tableau des erreurs
+ * @return null|string
+ *     - string si $message à false.
+**/
+function public_debusquer_dist($message = '', $lieu = '', $opt = array()){
        global $visiteur_session;
        global $debug_objets;
        static $tableau_des_erreurs = array();
 
+       // Pour des tests unitaires, pouvoir récupérer les erreurs générées
+       if (isset($opt['erreurs'])) {
+               if ($opt['erreurs'] == 'get') {
+                       return $tableau_des_erreurs;
+               }
+               if ($opt['erreurs'] == 'reset') {
+                       $tableau_des_erreurs = array();
+                       return true;
+               }
+       }
+
        // Erreur ou appel final ?
        if ($message){
                $message = debusquer_compose_message($message);
@@ -277,9 +306,9 @@ function debusquer_requete($message){
 
        // Requete erronee
        $err = "<b>" . _T('avis_erreur_mysql') . " $errno</b><br /><tt>\n"
-               . htmlspecialchars($msg)
+               . spip_htmlspecialchars($msg)
                . "\n<br /><span style='color: red'><b>"
-               . htmlspecialchars($query)
+               . spip_htmlspecialchars($query)
                . "</b></span></tt><br />";
        //. aide('erreur_mysql');
 
@@ -455,7 +484,7 @@ function debusquer_squelette($fonc, $mode, $self){
                }
                else
                        return strlen(trim($res))
-                       ? "<img src='".chemin_image('compat-16.png')."' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>$res</div>"
+                       ? "<img src='".chemin_image('compat-16.png')."' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"var x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>$res</div>"
                        // cas de l'appel sur erreur: montre la page
                        : $GLOBALS['debug_objets']['resultat']['tout'];
        }
@@ -475,7 +504,7 @@ function debusquer_squelette($fonc, $mode, $self){
                $res = $id = '';
        }
        return !trim($texte) ? '' : (
-               "<img src='".chemin_image('compat-16.png')."' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>$res"
+               "<img src='".chemin_image('compat-16.png')."' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"var x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>$res"
                        . "<div id='debug_boucle'><fieldset$id><legend>"
                        . "<a href='".$self."#f_".substr($fonc, 0, 37)."'> &#8593; "
                        . ($legend ? $legend : $mode)
@@ -646,7 +675,7 @@ function debusquer_navigation_boucles($boucles, $nom_skel, $self, $nom_source){
                                "</td><td>\n" .
                                $req .
                                "</td><td>\n" .
-                               htmlspecialchars($crit) .
+                               spip_htmlspecialchars($crit) .
                                "</td></tr>";
                }
        }
@@ -681,7 +710,7 @@ function debusquer_source($objet, $affiche){
                                $brut_sql .= "<h3>" . ($num==1 ? $num . " sur " . sql_count($ress_req) : $num) . "</h3>";
                                $brut_sql .= "<p>";
                                foreach ($retours_sql as $key => $val){
-                                       $brut_sql .= "<strong>" . $key . "</strong> => " . htmlspecialchars(couper($val, 150)) . "<br />\n";
+                                       $brut_sql .= "<strong>" . $key . "</strong> => " . spip_htmlspecialchars(couper($val, 150)) . "<br />\n";
                                }
                                $brut_sql .= "</p>";
                        }