Add sort_name to pluser.
[platal.git] / classes / plbacktrace.php
index 89703aa..711766d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2011 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -37,35 +37,44 @@ class PlBacktrace
         }
     }
 
+    private function fixCharset($action)
+    {
+        if (!is_string($action)) {
+            return $action;
+        } else {
+            return is_utf8($action) ? $action : utf8_encode($action);
+        }
+    }
+
     private function add(array &$entry, $sizef = 'rows', $timef = 'exectime', $errorf = 'error')
     {
         $trace = array();
-        $trace['action'] = $entry['action'];
+        $trace['action'] = $this->fixCharset($entry['action']);
         unset($entry['action']);
         $trace['exectime'] = @$entry[$timef];
         $this->totaltime += $trace['exectime'];
         unset($entry[$timef]);
         $trace['rows'] = @$entry[$sizef];
         unset($entry[$sizef]);
-        $trace['error'] = @$entry[$errorf];
+        $trace['error'] = $this->fixCharset(@$entry[$errorf]);
         unset($entry[$errorf]);
         if ($trace['error']) {
             $this->error = true;
         }
-        $trace['data'] = array($entry);
+        $trace['data'] = array($this->fixCharset($entry));
         $this->traces[] =& $trace;
     }
 
     public function newEvent($action, $rows = 0, $error = null, array $userdata = array())
     {
-        $trace = array('action' => $action, 'time' => 0);
+        $trace = array('action' => $this->fixCharset($action), 'time' => 0);
         $this->traces[] =& $trace;
         $this->update($rows, $error, $userdata);
     }
 
     public function start($action)
     {
-        $this->traces[] =  array('action' => $action, 'starttime' => microtime(true));;
+        $this->traces[] =  array('action' => $this->fixCharset($action), 'starttime' => microtime(true));;
     }
 
     public function stop($rows = 0, $error = null, array $userdata = array())
@@ -85,7 +94,8 @@ class PlBacktrace
     {
         $trace =& $this->traces[count($this->traces) - 1];
         $trace['rows']  = $rows;
-        $trace['error'] = $error;
+        $trace['error'] = $this->fixCharset($error);
+        array_walk_recursive($userdata, array($this, 'fixCharset'));
         $trace['data']  = $userdata;
         if ($trace['error']) {
             $this->error = true;
@@ -102,5 +112,5 @@ class PlBacktrace
     }
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>