class_Error.inc.php 4.14 KB
<?php
/** 
 * @copyright (c) 2014, netz.coop eG
 */
/**
 *	@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;
	}

}
?>