Пример #1
0
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);
}
Пример #2
0
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);
	}
}