questlab/www/analytics/libs/sparkline/lib/Object.php
2016-04-10 18:55:57 +02:00

159 lines
3.9 KiB
PHP

<?php
/*
* Sparkline PHP Graphing Library
* Copyright 2004 James Byers <jbyers@gmail.com>
* http://sparkline.org
*
* Dual-licensed under the BSD (LICENSE-BSD.txt) and GPL (LICENSE-GPL.txt)
* licenses.
*
* $Id: Object.php,v 1.9 2008/03/11 19:12:49 jbyers Exp $
*
*/
define('DEBUG_NONE', 0); // nothing
define('DEBUG_ERROR', 1); // major errors
define('DEBUG_WARNING', 2); // warnings
define('DEBUG_STATS', 4); // dataset, rendering statistics
define('DEBUG_CALLS', 8); // major function calls
define('DEBUG_SET', 16); // all Set methods
define('DEBUG_DRAW', 32); // all Draw methods
define('DEBUG_ALL', 2047); // everything
function error_handler($errno, $errstr, $errfile, $errline) {
switch ($errno) {
case E_ERROR:
$message = "ERROR: ";
break;
case E_WARNING:
$message = "WARNING: ";
break;
case E_PARSE:
$message = "PARSE: ";
break;
case E_NOTICE:
$message = "NOTICE: ";
break;
case E_USER_ERROR:
$message = "UERROR: ";
break;
case E_USER_WARNING:
$message = "UWARNING: ";
break;
case E_USER_NOTICE:
$message = "UNOTICE: ";
break;
default:
$message = "UNKNOWN: ";
break;
} // switch
$message .= "$errstr in $errfile at line $errline\n";
if (($errno != E_NOTICE) && // suppress notices
(error_reporting() != 0)) { // respect supressed errors (@)
log_write($message, 'PHP');
}
} // function error_handler
function log_write($string, $type = '', $date = false) {
global $LOGFILE;
if (isset($LOGFILE)) {
if ($date == false) {
$date = time();
}
$message = date('d/m/Y:H:i:s', $date) . " $type: $string \n";
error_log($message, 3, $LOGFILE);
}
} // function log_write
class Object {
var $isError;
var $logFile;
var $errorList;
var $debugList;
var $debugLevel;
var $startTime;
////////////////////////////////////////////////////////////////////////////
// constructor
//
function __construct($catch_errors = true) {
$this->isError = false;
$this->logFile = null;
$this->logDate = '';
$this->errorList = array();
$this->debugList = array();
$this->debugLevel = DEBUG_NONE;
$this->startTime = $this->microTimer();
// if ($catch_errors) {
set_error_handler('error_handler');
//}
} // function Object
////////////////////////////////////////////////////////////////////////////
// utility
//
function microTimer() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
} // function microTimer
////////////////////////////////////////////////////////////////////////////
// error handling
//
function SetDebugLevel($level, $file = null) {
global $LOGFILE;
if ($level >= DEBUG_NONE &&
$level <= DEBUG_ALL) {
$this->debugLevel = $level;
}
if ($file != null) {
if ((!file_exists($file) && !touch($file)) ||
!is_writable($file)) {
die("error log file '$file' is not writable to the web server user");
} else {
$this->logFile = $file;
$LOGFILE = $file;
}
}
} // function SetDebugLevel
function Debug($string, $level = DEBUG_WARNING) {
$this->debugList[] = $string;
if ($this->debugLevel & $level &&
$this->logFile != null) {
log_write($string, 'DEBUG');
}
} // function Debug
function Error($string) {
$this->isError = true;
$this->errorList[] = $string;
if ($this->debugLevel & DEBUG_ERROR &&
$this->logFile != null) {
log_write($string, 'ERROR');
}
} // function Error
function GetDebug() {
return $this->debugList;
} // function GetDebug
function GetError() {
return $this->errorList;
} // function GetError
function IsError() {
return $this->isError;
} // function IsError
} // class Object
?>