<?php
 
 
/**
 
 * Event class event definition.
 
 * 
 
 * @author Marius Zadara <[email protected]>
 
 * @category org.zadara.marius.logger.classes
 
 * @copyright (C) 2008 Marius Zadara <[email protected]>
 
 * @license GNU GPL
 
 * @package org.zadara.marius.logger
 
 */
 
 
class Event implements IEvent   
 
{
 
    /**
 
     * Id of the event.
 
     * 
 
     * @access protected
 
     * @see EventIDs
 
     */
 
    protected $id;
 
 
    /**
 
     * Source of the event.
 
     * 
 
     * @access protected
 
     * @see Sources
 
     */
 
    protected $source;
 
    
 
    /**
 
     * Category of the event.
 
     * 
 
     * @access protected
 
     * @see Categories
 
     */    
 
    protected $category;
 
    
 
    /**
 
     * Message of the event.
 
     * 
 
     * @access protected
 
     */    
 
    protected $message;
 
 
    
 
    /**
 
     * Level of the event.
 
     * 
 
     * @access protected
 
     * @see Levels
 
     */
 
    protected $level;
 
        
 
    /**
 
     * Timestamp of the event.
 
     * 
 
     * @access protected
 
     */    
 
    protected $timestamp;
 
 
    
 
    /**
 
     * Extra-fields for the event.
 
     * These are not standard fields definned in Fields class.
 
     *  
 
     * @access protected
 
     */    
 
    protected $extraFields;
 
    
 
 
    /**
 
     * Event constructor.
 
     *
 
     * @param String $id Id of the event. Allows null.
 
     * @param String $source Source of the event. Allows null.
 
     * @param String $category Category of the event. Allows null.
 
     * @param String $level Level of the event. Allows null.
 
     * @param $String message Message of the event. Allows null.
 
     * @param Array $extraFields Extrapfields of the event. Allows null. Use pairs as: key[0] = value[0], key[1] = value[1], etc. 
 
     * 
 
     * @return Event
 
     * 
 
     * @see EventIDs
 
     * @see Sources
 
     * @see Categories
 
     * @see Levels
 
     *  
 
     */
 
    public function Event($id = null, $source = null, $category = null, $level = null, $message = null, $extraFields = null)
 
    {
 
        // init the fields
 
        $this->id = is_null($id) ? null : $id;
 
        $this->source = is_null($source) ? null : $source;
 
        $this->category = is_null($category) ? null : $category;
 
        $this->level = is_null($level) ? null : $level;
 
        $this->message = is_null($message) ? null : $message;
 
        
 
        // set the current timestamp
 
        $this->timestamp = time();
 
        
 
        $this->extraFields = null;
 
        
 
        // validat the extra fields
 
        if (is_array($extraFields) && (sizeof($extraFields) > 0))
 
        {
 
            $this->extraFields = array();
 
            $this->extraFields = $extraFields;
 
        }
 
    }
 
    
 
    /**
 
     * Event id getter
 
     * @access public
 
     */    
 
    public function getId() 
 
    {
 
        return $this->id;
 
    }
 
    
 
    /**
 
     * Event source getter
 
     * @access public 
 
     */    
 
    public function getSource() 
 
    {
 
        return $this->source;
 
    }
 
    
 
    
 
    /**
 
     * Event category getter
 
     * @access public 
 
     */        
 
    public function getCategory() 
 
    {
 
        return $this->category;
 
    }
 
    
 
    /**
 
     * Event message getter
 
     * @access public 
 
     */        
 
    public function getMessage() 
 
    {
 
        return $this->message;
 
    }
 
    
 
    /**
 
     * Event timestamp getter
 
     * @access public 
 
     */        
 
    public function getTimestamp() 
 
    {
 
        return $this->timestamp;
 
    }
 
    
 
    /**
 
     * Event level getter
 
     * @access public 
 
     */        
 
    public function getLevel() 
 
    {
 
        return $this->level;
 
    }
 
    
 
    
 
    /**
 
     * Function to get the translation of a variable
 
     *
 
     * @param $var The variable
 
     * @see Translations
 
     */
 
    private function getTranslation($var)
 
    {
 
        return sprintf("<b>%s</b>", Translations::${$var});
 
    }
 
    
 
 
    /**
 
     * Event string representation.
 
     * 
 
     * @see Translations
 
     * @see getTranslation()
 
     * 
 
     * @return string
 
     */
 
    public function __toString()
 
    {
 
        // return default string representation
 
        // in case of empty fields
 
        if 
 
        (
 
            ($this->id == null) && ($this->source == null) && ($this->category == null) &&
 
            ($this->message == null) && ($this->level == null) && ($this->extraFields == null)
 
        )
 
        return sprintf("%s: %s=%s", $this->getTranslation("EVENT"), $this->getTranslation("TIMESTAMP"), $this->timestamp);
 
 
        // init the string representation
 
        $asString = sprintf("%s: ", $this->getTranslation("EVENT"));
 
 
        // add fields only if they have been set
 
        if ($this->id != null) $asString .= sprintf("%s=%s;", $this->getTranslation("ID"), $this->id);
 
        if ($this->source != null) $asString .= sprintf("%s=%s;", $this->getTranslation("SOURCE"), $this->source);
 
        if ($this->category != null) $asString .= sprintf("%s=%s;", $this->getTranslation("CATEGORY"), $this->category);
 
        if ($this->level != null) $asString .= sprintf("%s=%s;", $this->getTranslation("LEVEL"), $this->level);
 
        
 
        $asString .= sprintf("%s=%s;", $this->getTranslation("TIMESTAMP"), $this->timestamp);
 
        
 
        if ($this->message != null) $asString .= sprintf("%s=%s;", $this->getTranslation("MESSAGE"), $this->message);
 
        
 
        // add also the extra fields
 
        if ($this->extraFields != null)
 
        {
 
            $asString .= sprintf("%s:", $this->getTranslation("EXTRA_FIELDS"));
 
 
            // add each extra field with its value
 
            for ($i=0; $i < sizeof($this->extraFields); $i++)
 
                $asString .= (($i % 2) == 0) ? sprintf("%s -> ", $this->extraFields[$i]) : sprintf("%s, ", $this->extraFields[$i]);
 
        }
 
 
        // return the string representation
 
        return $asString;
 
    }
 
}
 
 
 
?>
 
 |