function debusquer_source($objet, $affiche) { $quoi = $GLOBALS['debug_objets'][$affiche][$objet]; if (!empty($GLOBALS['debug_objets']['boucle'][$objet]->id_boucle)) { $nom = $GLOBALS['debug_objets']['boucle'][$objet]->id_boucle; } else { $nom = $GLOBALS['debug_objets']['sourcefile'][$objet]; } $res2 = ""; if ($affiche == 'resultat') { $legend = $nom; $req = $GLOBALS['debug_objets']['requete'][$objet]; if (function_exists('_mysql_traite_query')) { $c = strtolower(_request('connect')); $c = $GLOBALS['connexions'][$c ? $c : 0]['prefixe']; $req = _mysql_traite_query($req, '', $c); } // permettre le copier/coller facile // $res = ancre_texte($req, array(), true); $res = "<div id='T" . md5($req) . "'>\n<pre>\n" . $req . "</pre>\n</div>\n"; // formatage et affichage des resultats bruts de la requete $ress_req = spip_query($req); $brut_sql = ''; $num = 1; // eviter l'affichage de milliers de lignes // personnalisation possible dans mes_options $max_aff = defined('_MAX_DEBUG_AFF') ? _MAX_DEBUG_AFF : 50; while ($retours_sql = sql_fetch($ress_req)) { if ($num <= $max_aff) { $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> => " . spip_htmlspecialchars(couper($val, 150)) . "<br />\n"; } $brut_sql .= "</p>"; } $num++; } $res2 = interdire_scripts($brut_sql); foreach ($quoi as $view) { // ne pas afficher les $contexte_inclus $view = preg_replace(",<\\?php.+\\?[>],Uims", "", $view); if ($view) { $res2 .= "\n<br /><fieldset>" . interdire_scripts($view) . "</fieldset>"; } } } elseif ($affiche == 'code') { $legend = $nom; $res = ancre_texte("<" . "?php\n" . $quoi . "\n?" . ">"); } elseif ($affiche == 'boucle') { $legend = _T('zbug_boucle') . ' ' . $nom; // Le compilateur prefixe le nom des boucles par l'extension du fichier source. $gram = preg_match('/^([^_]+)_/', $objet, $r) ? $r[1] : ''; $res = ancre_texte(public_decompiler($quoi, $gram, 0, 'boucle')); } elseif ($affiche == 'squelette') { $legend = $GLOBALS['debug_objets']['sourcefile'][$objet]; $res = ancre_texte($GLOBALS['debug_objets']['squelette'][$objet]); } return array($legend, $res, $res2); }
function emboite_texte($res, $fonc='',$self='') { include_spip('public/debusquer'); list($texte, $errs) = $res; if (!$texte) return array(ancre_texte('', array('','')), false); if (!$errs) return array(ancre_texte($texte, array('', '')), true); if (!isset($GLOBALS['debug_objets'])) { $colors = array('#e0e0f0', '#f8f8ff'); $encore = count_occ($errs); $encore2 = array(); $fautifs = array(); $err = '<tr><th>' . _T('numero') . "</th><th>" . _T('occurrence') . "</th><th>" . _T('ligne') . "</th><th>" . _T('colonne') . "</th><th>" . _T('erreur') . "</th></tr>"; $i = 0; $style = "style='text-align: right; padding-right: 5px'"; foreach($errs as $r) { $i++; list($msg, $ligne, $col) = $r; #spip_log("$r = list($msg, $ligne, $col"); if (isset($encore2[$msg])) $ref = ++$encore2[$msg]; else {$encore2[$msg] = $ref = 1;} $err .= "<tr style='background-color: " . $colors[$i%2] . "'><td $style><a href='#debut_err'>" . $i . "</a></td><td $style>" . "$ref/$encore[$msg]</td>" . "<td $style><a href='#L" . $ligne . "' id='T$i'>" . $ligne . "</a></td><td $style>" . $col . "</td><td>$msg</td></tr>\n"; $fautifs[]= array($ligne, $col, $i, $msg); } $err = "<h2 style='text-align: center'>" . $i . "<a href='#fin_err'>" . " "._T('erreur_texte') . "</a></h2><table id='debut_err' style='width: 100%'>" . $err . " </table><a id='fin_err'></a>"; return array(ancre_texte($texte, $fautifs), $err); } else { list($msg, $fermant, $ouvrant) = $errs[0]; $rf = reference_boucle_debug($fermant, $fonc, $self); $ro = reference_boucle_debug($ouvrant, $fonc, $self); $err = $msg . "<a href='#L" . $fermant . "'>$fermant</a>$rf<br />" . "<a href='#L" . $ouvrant . "'>$ouvrant</a>$ro"; return array(ancre_texte($texte, array(array($ouvrant), array($fermant))), $err); } }