Adds type information to the subclass-defined method 'fetch' of PlFeed, to ensure...
[platal.git] / classes / xdb.php
index 91b0d19..a51e210 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -76,7 +76,9 @@ class XDB
         global $globals;
 
         if (!XDB::$mysqli && !XDB::connect()) {
-            return false;
+            header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error');
+            Platal::page()->kill('Impossible de se connecter à la base de données.');
+            exit;
         }
 
         if ($globals->debug & DEBUG_BT) {
@@ -100,6 +102,26 @@ class XDB
                                             XDB::$mysqli->error,
                                             $explain);
         }
+
+        if ($res === false) {
+            header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error');
+            if (strpos($query, 'INSERT') === false && strpos($query, 'UPDATE') === false
+                && strpos($query, 'REPLACE') === false && strpos($query, 'DELETE') === false) {
+                $text = 'Erreur lors de l\'interrogation de la base de données';
+            } else {
+                $text = 'Erreur lors de l\'écriture dans la base de données';
+            }
+            if ($globals->debug) {
+                $text .= '<pre>' . pl_entities(XDB::_reformatQuery($query)) . '</pre>';
+            } else {
+                $file = fopen($globals->spoolroot . '/spool/tmp/query_errors', 'a');
+                fwrite($file, '<pre>' . pl_entities(XDB::_reformatQuery($query)) . '</pre>'
+                            . '<pre>' . XDB::$mysqli->error . '</pre>' . "\n");
+                fclose($file);
+            }
+            Platal::page()->kill($text);
+            exit;
+        }
         return $res;
     }
 
@@ -166,6 +188,9 @@ class XDB
             return 'NULL';
 
           case 'object':
+            if ($var instanceof PlFlagSet) {
+                return "'" . addslashes($var->flags()) . "'";
+            }
           case 'array':
             return "'".addslashes(serialize($var))."'";