<?php /** * @filesource class_Error.inc.php * * @category losp * @copyright Copyright by mensch.coop e.G. 2009 * @mailto dev [at] mensch.coop * @version 0.4.200901 * @link http://mensch.coop */ class Error extends mcReport { public static $ErrorArray = array( 1 => 'E_ERROR', 2 => 'E_WARNING', 4 => 'E_PARSE', 8 => 'E_NOTICE', 16 => 'E_CORE_ERROR', 32 => 'E_CORE_WARNING', 64 => 'E_COMPILE_ERROR', 128 => 'E_COMPILE_WARNING', 256 => 'E_USER_ERROR', 512 => 'E_USER_WARNING', 1024 => 'E_USER_NOTICE', 2048 => 'E_STRICT', 4096 => 'E_RECOVERABLE_ERROR', ) ; private static $ErrorList; public static $Quantity=0; private $ErrorFunction; /** * @var string code word for error level * * DevError - Error which is for user invisible * DisplayError - Errir which is for user visible */ private $Title; /** * @var string code word for errors * * NoLoadBE - Error BE cant be load * NoSaveBE - Error BE cant be save * NoExistBE - Error BE not exist * NoLinkBE - Error BE cant be link with others BEs */ private $Comment; private $Code; private $array_debug_backtrace; private function __construct($param_title="",$param_comment="", $param_code=""){ $this->array_debug_backtrace = debug_backtrace(); $this->ErrorFunction = $this->array_debug_backtrace[2]["class"].$this->array_debug_backtrace[2]["type"] .$this->array_debug_backtrace[2]["function"]."(...) :".$this->array_debug_backtrace[1]["line"].""; $this->Title = $param_title; $this->Comment = $param_comment; $this->Code = $param_code; } /** * @todo klar die Parameter definieren, es werden leider immer wieder unterschiedliche Werte übergeben * * * @param <type> $param_title * @param <type> $param_comment * @param <type> $param_code */ public static function newError($param_title="",$param_comment="", $param_code="") { global $_LOSP_DEV; if($_LOSP_DEV) { D::ulli('<b>'.$param_title.'</b> -- '.$param_comment.' -- '.$param_code); } self::$ErrorList[self::$Quantity] = new Error($param_title,$param_comment, $param_code); mcReport::add(self::$ErrorList[self::$Quantity]); self::$Quantity++; } protected function getTextMessage() { if(is_null($this->TextMessage)) { $this->TextMessage .= 'Title:'. mcCONST::TAB. $this->Title. mcCONST::LINEBREAK; if(array_key_exists($this->Code, Error::$ErrorArray)) { $this->TextMessage .= 'Typ:'. mcCONST::TAB. Error::$ErrorArray[$this->Code].mcCONST::LINEBREAK; } else { $this->TextMessage .= 'Code:'. mcCONST::TAB. $this->Code. mcCONST::LINEBREAK; } $this->TextMessage .= 'Notice:'. mcCONST::TAB. $this->Comment. mcCONST::LINEBREAK; $this->TextMessage .= 'ErrorFnc:'. mcCONST::TAB. $this->ErrorFunction. mcCONST::LINEBREAK; $this->TextMessage .= mcCONST::LINEBREAK; } return $this->TextMessage; } /******************************************************************************** * * * XML Funktionen (Es wird jeweils immer ein DOMElement zurück gegeben) * * ********************************************************************************/ protected function getDOMElement(DOMDocument $DOMDocument){ $DOMElement = parent::getDOMElement($DOMDocument); $DOMElement->setAttribute('class', 'error'); $DOMElement->appendChild($DOMDocument->createElement('Function',$this->ErrorFunction)); $DOMElement->appendChild($DOMDocument->createElement('Title',$this->Title)); if($this->Comment) { $DOMElement->appendChild($DOMDocument->createElement('Comment',$this->Comment)); } $DOMElement->appendChild($DOMDocument->createElement('Code',$this->Code)); return $DOMElement; } public static function getAllXML($DOMDocument){ $DOMElement = $DOMDocument->createElement("ErrorList"); // D::ulli(self::$Quantity.'('.count(self::$ErrorList).'/'.self::$Quantity.'): '.$param_title); for($i=0; $i<count(self::$ErrorList);$i++){ $DOMElement->appendChild(self::$ErrorList[$i]->getDOMElement($DOMDocument)); } return $DOMElement; } } ?>