Skip to content
Extraits de code Groupes Projets
SparklineObject.php 3,87 ko
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /*
     * Sparkline PHP Graphing Library
    
    mattpiwik's avatar
    mattpiwik a validé
     * Copyright 2004 James Byers <jbyers@gmail.com>
    
     * http://sparkline.org
     *
    
    mattpiwik's avatar
    mattpiwik a validé
     * Dual-licensed under the BSD (LICENSE-BSD.txt) and GPL (LICENSE-GPL.txt)
     * licenses.
    
    mattpiwik's avatar
    mattpiwik a validé
     * $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 SparklineObject {
    
    
      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
    
    ?>