From bdc1fc7016c158cdb34c4df4e391000161cea862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Thu, 14 Oct 2010 19:08:39 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20l'affichage=20du=20deb?= =?UTF-8?q?ug.=20=C3=87a=20soulage=20un=20peu...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms2/code/bdd.php | 22 +++++++-------- cms2/code/debug.php | 69 ++++++++++++++++++++++++++++++++------------- cms2/code/main.php | 11 ++++---- 3 files changed, 67 insertions(+), 35 deletions(-) diff --git a/cms2/code/bdd.php b/cms2/code/bdd.php index 5157d3b..e2cd035 100644 --- a/cms2/code/bdd.php +++ b/cms2/code/bdd.php @@ -15,7 +15,7 @@ class BDD { Config::get('db_mot_de_passe') ); if (!is_resource(self::$handle)) { - Debug::error("Échec à la connexion à la base de données"); + Debug::erreur("Échec à la connexion à la base de données"); } // TODO : begin transaction à la 1ere écriture. self::begin_transaction(); @@ -42,7 +42,7 @@ class BDD { public static function init() { self::unbuf_query("create database if not exists " . Config::get('db_base')); - mysql_select_db(Config::get('db_base'), self::$handle) or Debug::sqlerror(); + mysql_select_db(Config::get('db_base'), self::$handle) or Debug::erreur_sql(); if (count(self::select("show tables like '" . self::table("_pages") . "'")) == 1) { Debug::info("La base de données est déjà initialisée, on continue..."); @@ -113,13 +113,13 @@ class BDD { } public static function unbuf_query($q) { - debug::info("sql : " . $q . ";"); - mysql_unbuffered_query($q . ";", self::get()) or Debug::sqlerror(); + debug::sql($q . ";"); + mysql_unbuffered_query($q . ";", self::get()) or Debug::erreur_sql(); } public static function select($q) { - debug::info("sql : " . $q); - $qres = mysql_query($q, BDD::get()) or Debug::sqlerror(); + debug::sql($q); + $qres = mysql_query($q, BDD::get()) or Debug::erreur_sql(); $ret = array(); while ($row = mysql_fetch_array($qres)) { $ret[] = $row; @@ -131,18 +131,18 @@ class BDD { public static function select_one($q, $strict = true) { $res = self::select($q); if ($strict && count($res) != 1) { - Debug::error("Un rang de la base de données a été demmandé, mais, soit aucun rang correspondant aux critères n'a été trouvé, soit plusieurs ont été trouvés."); + Debug::erreur("Un rang de la base de données a été demmandé, mais, soit aucun rang correspondant aux critères n'a été trouvé, soit plusieurs ont été trouvés."); return null; } if (count($res) == 0) { - Debug::error("Un rang de la base de données a été demmandé, mais, aucun rang correspondant aux critères n'a été trouvé."); + Debug::erreur("Un rang de la base de données a été demmandé, mais, aucun rang correspondant aux critères n'a été trouvé."); } return $res[0][0]; } public static function modify($q) { - debug::info("sql : $q;"); - mysql_unbuffered_query($q . ";", self::get()) or Debug::sqlerror(); + debug::sql($q . ";"); + mysql_unbuffered_query($q . ";", self::get()) or Debug::erreur_sql(); // http://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value return mysql_insert_id(self::get()); } @@ -154,7 +154,7 @@ class BDD { public static function close() { if (is_resource(self::$handle)) { self::commit(); - mysql_close(self::get()) or Debug::sqlerror(); + mysql_close(self::get()) or Debug::erreur_sql(); self::$handle = null; } } diff --git a/cms2/code/debug.php b/cms2/code/debug.php index afbbb64..89b5f9e 100644 --- a/cms2/code/debug.php +++ b/cms2/code/debug.php @@ -1,38 +1,69 @@ 'Erreur', + "niy" => 'Pas encore implémenté', + "info" => 'Info', + "sql" => 'Requête SQL', + "erreur_sql" => 'Erreur SQL', + "permission" => 'Permission non accordée' + ); + public static $filtre_erreurs = array( + "erreur" => true, + "niy" => true, + "info" => true, + "sql" => false, + "erreur_sql" => true, + "permission" => true + ); + public static $toutes_erreurs = false; // true <=> ignorer le filtre. + public static $erreurs = array(); + + public static function __callStatic($nom, $args) { + if (!array_key_exists($nom, self::$types_erreur)) { + self::erreur("Type d'erreur inconnu : " . $nom . "\nArguments de Debug::$nom() : " . var_export($args, true)); + } elseif (count($args) != 1) { + self::erreur("Mauvais nombre d'arguments pour Debug::$nom().\nArguments : " . var_export($args, true)); + } else { + self::push($nom, $args[0]); + } } - public static function info($msg) { - array_push(self::$errors, "Info : $msg"); + public static function push($cat, $msg) { + array_push(self::$erreurs, array($cat, $msg)); } - public static function error($msg) { - array_push(self::$errors, "Error : $msg"); - self::afficher(true, true, false); - echo "\n"; + public static function erreur($msg) { + self::push("erreur", $msg); + self::die_btrace(); + } + public static function erreur_sql() { + self::push("erreur_sql", mysql_error()); + self::die_btrace(); + } + public static function die_btrace() { + echo self::afficher(true, true, false); + echo '
Backtrace
'; debug_print_backtrace(); - self::afficher(false, false, true); + echo self::afficher(false, false, true); die(); } - public static function sqlerror() { - self::error("MySQL : " . mysql_error()); - } public static function afficher($start = true, $print = true, $end = true) { + $ret = ""; if ($start) { - echo "
";
-			echo 'Erreurs:' . "\n";
+			$ret .= '
';
+			$ret .= '
Erreurs
'; } if ($print) { - foreach (self::$errors as $e) { - echo $e . "\n"; + foreach (self::$erreurs as $e) { + if (self::$toutes_erreurs === true || self::$filtre_erreurs[$e[0]] === true) { + $ret .= self::$types_erreur[$e[0]] . " : " . $e[1] . "\n"; + } } } if ($end) { - echo 'Fin erreurs.' . "\n"; - echo "
"; + $ret .= "
"; } + return $ret; } } diff --git a/cms2/code/main.php b/cms2/code/main.php index 4c88ef0..4334f51 100644 --- a/cms2/code/main.php +++ b/cms2/code/main.php @@ -19,14 +19,15 @@ function main() { } else { $page = mPage::page_systeme('racine'); } - $rendu = $page->rendu($res); - echo "
";
-	echo htmlspecialchars($rendu->to_XHTML_5());
-	echo "
"; + $rendu = $page->rendu($res); + $rendu = htmlspecialchars($rendu->to_XHTML_5()); BDD::close(); - Debug::afficher(); + + echo Debug::afficher(); + echo "
";
+	echo $rendu;
 	echo "
"; }