<?php
/**
* Error Talk Class
*
* Give The Ability To Manage All Application Error Messages.
*
* @package Utilities and Tools
* @subpackage Libraries
* @category Libraries
* @author MOHAMED ELMAHDY - WEB DEVELOPER
* @version 1.0
* @link http://mohamedelmahdy.com/
*/
/**
* all configuration needs to be edit found at initialize function
*/
class errorTalk {
public static $conf = array();
public static function initialize()
{
//if E_STRICT is not defined, define it
if(!defined('E_STRICT')) define('E_STRICT', 0);
/*************************************************************************
*
* Send Errors to Specified Email Address ?
*
* @var boolean
*
*************************************************************************
*/
self::$conf['emailActive'] = TRUE;
/*************************************************************************
*
* print error to browser
*
* @var boolean
*
*************************************************************************
*/
self::$conf['showErrorToBrowser'] = TRUE;
/*************************************************************************
*
* Throwing errors in a specific file
*
* @var boolean
*
*************************************************************************
*/
self::$conf['logFile'] = TRUE;
/*************************************************************************
*
* File Path Errors
*
* @var string
*
*************************************************************************
*/
self::$conf['logFilePath'] = "erroTalkLogFile.txt";
/*************************************************************************
*
* E-mail that you want to tell him mistakes
*
* Note that this fueature will disable if self::$conf['Email'] is False
*
* @var string
*
*************************************************************************
*/
self::$conf['Email'] = "mhamedelmahdy@gmail.com";
/*************************************************************************
*
* Webmaster email
*
* Note that this fueature will disable if self::$conf['Email'] is False
*
* @var string
*
*************************************************************************
*/
self::$conf['webmasterEmail'] = 'mhamedelmahdy@gmail.com';
/*************************************************************************
*
* Email header
*
* Note that this fueature will disable if self::$conf['Email'] is False
*
* @var string
*
*************************************************************************
*/
self::$conf['emailHeader'] = 'From : errorTalk ';
/*************************************************************************
*
* Error Handler
*
* @var array
*
*************************************************************************
*/
self::$conf['handlerName'] = array("errorTalk","errorHandler");
/*************************************************************************
*
* E_COMPILE_ERROR default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_COMPILE_ERROR] = "Fatal compile-time errors";
/*************************************************************************
*
* E_COMPILE_WARNING default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_COMPILE_WARNING] = "Compile-time warnings";
/*************************************************************************
*
* E_CORE_ERROR default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_CORE_ERROR] = "Fatal errors that occur during PHP's initial startup";
/*************************************************************************
*
* E_CORE_WARNING default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_CORE_WARNING] = "Warnings Generated By The Core Of PHP";
/*************************************************************************
*
* E_DEPRECATED default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_DEPRECATED] = "Deprecated Function";
/*************************************************************************
*
* E_ERROR default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_ERROR] = "Fatal run-time errors";
/*************************************************************************
*
* E_PARSE default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_PARSE] = "Compile-time parse errors";
/*************************************************************************
*
* E_RECOVERABLE_ERROR default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_RECOVERABLE_ERROR] = "Catchable fatal error";
/*************************************************************************
*
* E_STRICT default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_STRICT] = "System Suggest";
/*************************************************************************
*
* E_WARNING default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_WARNING] = "Run-time warnings";
/*************************************************************************
*
* E_USER_ERROR default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_USER_ERROR] = "User-generated error message";
/*************************************************************************
*
* E_USER_NOTICE default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_USER_NOTICE] = "User-generated notice message.";
/*************************************************************************
*
* E_USER_WARNING default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_USER_WARNING] = "User-generated warning message";
/*************************************************************************
*
* E_USER_DEPRECATED default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_USER_DEPRECATED] = "User-generated warning message";
/*************************************************************************
*
* E_DEPRECATED default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_ALL] = "Fatal Error";
/*************************************************************************
*
* E_NOTICE default message
*
* @var string
*
*************************************************************************
*/
self::$conf[E_NOTICE] = "Run-time notices";
/*************************************************************************
*
* Error Level
*
* @var int
*
*************************************************************************
*/
self::$conf['errorLevel'] = E_ALL | E_STRICT;
}
/*
****************************************************************************
* @access public
* @param int
* @param string
* @param string
* @param int
* @param array
* @return string
****************************************************************************
*/
public static function errorHandler($errLevel,$errMessage,$errFile,$errLine,$errContext)
{
self::outputHandler($errLevel, $errMessage, $errFile, $errLine, $errContext);
}
/*
****************************************************************************
* @access public
* @param int
* @param string
* @param string
* @param int
* @param array
* @return string
****************************************************************************
*/
private static function outputHandler($errLevel,$errMessage,$errFile,$errLine,$errContext)
{
$alertMsg = "**************************************************************%errotalk-br%";
$alertMsg .= "!Oops : [".self::getErrorLevel($errLevel)."] ($errMessage).%errotalk-br%";
$alertMsg .= "Line Number : $errLine.%errotalk-br%";
$alertMsg .= "File Path : $errFile.%errotalk-br%";
$alertMsg .= "Date : ".date('d.m.Y h:i:s').".%errotalk-br%";
$alertMsg .= "**************************************************************%errotalk-br%";
$output = str_replace ("%errotalk-br%", "<br>", $alertMsg); // write <br> tag to break line the lines with browsers
if(self::$conf['showErrorToBrowser'])
echo $output;
$alertMsg = str_replace ("%errotalk-br%", "\r\n", $alertMsg); // write /r/n to break line with E-mail & Error File
if(self::$conf['emailActive'])
self::LogErrorToMail(strip_tags($alertMsg));
if(self::$conf['logFile'])
self::LogErrorToFile(strip_tags($alertMsg));
}
/*
****************************************************************************
* @access private
* @param string
* @return boolean
****************************************************************************
*/
private static function LogErrorToMail($alertMsg)
{
@error_log($alertMsg, 1, self::$conf['Email'], self::$conf['emailHeader'].self::$conf['webmasterEmail']);
}
/*
****************************************************************************
* @access private
* @param string
* @return boolean
****************************************************************************
*/
private static function LogErrorToFile($alertMsg)
{
error_log($alertMsg, 3, self::$conf['logFilePath']);
}
/*
****************************************************************************
* @access private
* @param int
* @return string
****************************************************************************
*/
private static function getErrorLevel($errLevel)
{
switch ($errLevel)
{
case E_USER_ERROR :
return self::$conf[E_USER_ERROR];
break;
case E_USER_NOTICE :
return self::$conf[E_USER_NOTICE];
break;
case E_USER_WARNING :
return self::$conf[E_USER_WARNING];
break;
case E_USER_DEPRECATED :
return self::$conf[E_USER_DEPRECATED];
break;
case E_COMPILE_ERROR :
return self::$conf[E_COMPILE_ERROR];
break;
case E_COMPILE_WARNING :
return self::$conf[E_COMPILE_WARNING];
break;
case E_CORE_ERROR :
return self::$conf[E_CORE_ERROR];
break;
case E_CORE_WARNING :
return self::$conf[E_CORE_WARNING];
break;
case E_DEPRECATED :
return self::$conf[E_DEPRECATED];
break;
case E_ERROR :
return self::$conf[E_ERROR];
break;
case E_PARSE :
return self::$conf[E_PARSE];
break;
case E_RECOVERABLE_ERROR :
return self::$conf[E_RECOVERABLE_ERROR];
break;
case E_STRICT :
return self::$conf[E_STRICT];
break;
case E_ALL :
return self::$conf[E_ALL];
break;
case E_NOTICE :
return self::$conf[E_NOTICE];
break;
case E_WARNING :
return self::$conf[E_WARNING];
break;
}
}
/*
****************************************************************************
*
* start use errortalk functionality
*
* set the error handler , and specify the error level
*
* @access public
* @return void
****************************************************************************
*/
public static function errorTalk_Open()
{
set_error_handler(errorTalk::$conf['handlerName'], errorTalk::$conf['errorLevel']);
}
/*
****************************************************************************
*
* stop use errortalk functionality
*
* hide all system error
*
* @access public
* @return void
****************************************************************************
*/
public static function errorTalk_Close()
{
set_error_handler(errorTalk::$conf['handlerName'], FALSE);
error_reporting(FALSE);
}
}
?>
|