class_Error.inc.php 4.62 KB
<?php
/**
 * @file	Error.inc.php
 * @category freeSN
 * @mailto	code [at] netz.coop
 * @version 0.4.200901
 * @link http://netz.coop
 * 
 *  @copyright Copyright by netz.coop e.G. 2015
 *  
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */
class Error{

	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;
	private 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;

	public 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;
	}

	public static function newError($param_title="",$param_comment="", $param_code="") {
		D::backtrace('Error '.$param_title.' '.$param_comment);
		self::$ErrorList[self::$Quantity] = new Error($param_title,$param_comment, $param_code);
		self::$Quantity++;
	}

	/********************************************************************************
	 *																				*
	 *	XML Funktionen (Es wird jeweils immer ein DOMElement zurück gegeben)
	 *																				*
	 ********************************************************************************/
	public function getNormalXML($DOMDocument){
		$DOMElement = $DOMDocument->createElement("Error");
		$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));
		}

		//		if($this->Code) {
		$DOMElement->appendChild($DOMDocument->createElement('Code',$this->Code));
		//			$DOMElement->appendChild($DOMDocument->createElement('Code','adsf'));
		//		}

		return $DOMElement;
	}
	public static function getAllXML($DOMDocument){
		$DOMElement = $DOMDocument->createElement("ErrorList");
		for($i=0; $i<count(self::$ErrorList);$i++){
			$DOMElement->appendChild(self::$ErrorList[$i]->getNormalXML($DOMDocument));
		}
		return $DOMElement;
	}
	public function getNormalText(){
		$string ="\n\n####################################\n";
		$string .= "Funktion: ". $this->ErrorFunction. "\n\n";

		if($this->Title)
		$string .= "Title: ". $this->Title. "\n";
		if($this->Comment)
		$string .= "Comment: ". $this->Comment. "\n";
		if($this->Code)
		$string .= "Code: ". $this->Code. "\n";

		$string .= "--------------------------------------\n";
		$k=0;
		for($i=count($this->array_debug_backtrace)-1; $i!=1; $i--) {
			$k++;
			$ul_start="";

			for($j=0; $j<$k; $j++) {
				$ul_start .= ".";
			}
			$string .= $ul_start." ".$this->array_debug_backtrace[$i]["class"].$this->array_debug_backtrace[$i]["type"].$this->array_debug_backtrace[$i]["function"]."(...)  Zeile ".$this->array_debug_backtrace[$i]["line"]." in ".basename($this->array_debug_backtrace[$i]["file"])."\n" ;
		}
		return $string;
	}
	public static function getAllText(){
		$string = "Fehler:";
		for($i=0; $i<count(self::$ErrorList);$i++){
			$string .= self::$ErrorList[$i]->getNormalText();
		}
		return $string;
	}
}
?>