// Mark Huang <mlhuang@cs.princeton.edu>
// Copyright (C) 2005-2006 The Trustees of Princeton University
//
-// $Id$
-// $URL$
-//
-//
require_once 'plc_config.php';
$this->multicall = false;
}
+ function rec_join ($arg) {
+ if ( is_array($arg) ) {
+ $ret = "";
+ foreach ( $arg as $i ) {
+ $l = $this->rec_join($i);
+ # ignore html code.
+ if ( $l[0] != "<" ) { $ret .= $l . ", "; }
+ }
+ return $ret;
+ } else {
+ settype($arg, "string");
+ return $arg;
+ }
+ }
+
+ function backtrace_php () {
+ $backtrace = debug_backtrace();
+ $msg = "";
+ $len = count($backtrace);
+ $cnt = 1;
+ foreach( array_reverse($backtrace) as $line ) {
+ $msg .= "File '". $line['file'] . "' line " . $line['line'] . "\n";
+ $msg .= " " . $line['function'] . "( " . $this->rec_join($line['args']) . ")\n";
+ $cnt += 1;
+ if ( $cnt == $len ) { break; }
+ }
+ return $msg;
+ }
+
function error_log($error_msg, $backtrace_level = 1)
{
$backtrace = debug_backtrace();
if ($file) $error_line .= ' in file ' . $file;
if ($line) $error_line .= ' on line ' . $line;
$this->errors[] = $error_line;
- error_log($error_line);
+ # TODO: setup a config variable for more detailed stack traces, for API errors.
+ if ( TRUE ){
+ error_log($error_line);
+ } else {
+ error_log($this->backtrace_php());
+ }
}
function error()