<?php 
/** 
 * Simple log line aggregator. 
 * 
 * @author A. Grandt <[email protected]> 
 * @copyright 2012-2013 A. Grandt 
 * @license GNU LGPL, Attribution required for commercial implementations, requested for everything else. 
 * @version 1.00 
 */ 
class Logger { 
    const VERSION = 1.00; 
 
    private $log = ""; 
    private $tStart; 
    private $tLast; 
    private $name = NULL; 
    private $isLogging = FALSE; 
    private $isDebugging = FALSE; 
 
    /** 
     * Class constructor. 
     * 
     * @return void 
     */ 
    function __construct($name = NULL, $isLogging = FALSE) { 
        if ($name === NULL) { 
            $this->name = ""; 
        } else { 
            $this->name = $name . " : "; 
        } 
        $this->isLogging = $isLogging; 
        $this->start(); 
    } 
 
    /** 
     * Class destructor 
     * 
     * @return void 
     * @TODO make sure elements in the destructor match the current class elements 
     */ 
    function __destruct() { 
        unset($this->log); 
    } 
 
    function start() { 
        /* Prepare Logging. Just in case it's used. later */ 
        if ($this->isLogging) { 
            $this->tStart = gettimeofday(); 
            $this->tLast = $this->tStart; 
            $this->log = "<h1>Log: " . $this->name . "</h1>\n<pre>Started: " . gmdate("D, d M Y H:i:s T", $this->tStart['sec']) . "\n Δ Start ;  Δ Last  ;"; 
            $this->logLine("Start"); 
        } 
    } 
 
    function dumpInstalledModules() { 
        if ($this->isLogging) { 
            $isCurlInstalled = extension_loaded('curl') && function_exists('curl_version'); 
            $isGdInstalled = extension_loaded('gd') && function_exists('gd_info'); 
            $isExifInstalled = extension_loaded('exif') && function_exists('exif_imagetype'); 
            $isFileGetContentsInstalled = function_exists('file_get_contents'); 
            $isFileGetContentsExtInstalled = $isFileGetContentsInstalled && ini_get('allow_url_fopen'); 
 
            $this->logLine("isCurlInstalled...............: " . ($isCurlInstalled ? "Yes" : "No")); 
            $this->logLine("isGdInstalled.................: " . ($isGdInstalled ? "Yes" : "No")); 
            $this->logLine("isExifInstalled...............: " . ($isExifInstalled ? "Yes" : "No")); 
            $this->logLine("isFileGetContentsInstalled....: " . ($isFileGetContentsInstalled ? "Yes" : "No")); 
            $this->logLine("isFileGetContentsExtInstalled.: " . ($isFileGetContentsExtInstalled ? "Yes" : "No")); 
        } 
    } 
 
    function logLine($line) { 
        if ($this->isLogging) { 
            $tTemp = gettimeofday(); 
            $tS = $this->tStart['sec'] + (((int)($this->tStart['usec']/100))/10000); 
            $tL = $this->tLast['sec'] + (((int)($this->tLast['usec']/100))/10000); 
            $tT = $tTemp['sec'] + (((int)($tTemp['usec']/100))/10000); 
 
            $logline = sprintf("\n+%08.04f; +%08.04f; ", ($tT-$tS), ($tT-$tL)) . $this->name . $line; 
            $this->log .= $logline; 
            $this->tLast = $tTemp; 
 
            if ($this->isDebugging) { 
                echo "<pre>" . $logline . "\n</pre>\n"; 
            } 
        } 
    } 
 
    function getLog() { 
        return $this->log; 
    } 
} 
?>
 
 |