ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilErrorHandling Class Reference

Error Handling & global info handling uses PEAR error class. More...

+ Inheritance diagram for ilErrorHandling:
+ Collaboration diagram for ilErrorHandling:

Public Member Functions

 ilErrorHandling ()
 Constructor public.
 getLastError ()
 errorHandler ($a_error_obj)
 defines what has to happen in case of error private
 getMessage ()
 setMessage ($a_message)
 appendMessage ($a_message)
- Public Member Functions inherited from PEAR
 PEAR ($error_class=null)
 Constructor.
 _PEAR ()
 Destructor (the emulated type of...).
getStaticProperty ($class, $var)
 If you have a class that's mostly/entirely static, and you need static properties, you can use this method to simulate them.
 registerShutdownFunc ($func, $args=array())
 Use this function to register a shutdown method for static classes.
 isError ($data, $code=null)
 Tell whether a value is a PEAR error.
 setErrorHandling ($mode=null, $options=null)
 Sets how errors generated by this object should be handled.
 expectError ($code= '*')
 This method is used to tell which errors you expect to get.
 popExpect ()
 This method pops one element off the expected error codes stack.
 _checkDelExpect ($error_code)
 This method checks unsets an error code if available.
 delExpect ($error_code)
 This method deletes all occurences of the specified element from the expected error codes stack.
raiseError ($message=null, $code=null, $mode=null, $options=null, $userinfo=null, $error_class=null, $skipmsg=false)
 This method is a wrapper that returns an instance of the configured error class with this object's default error handling applied.
throwError ($message=null, $code=null, $userinfo=null)
 Simpler form of raiseError with fewer options.
 staticPushErrorHandling ($mode, $options=null)
 staticPopErrorHandling ()
 pushErrorHandling ($mode, $options=null)
 Push a new error handler on top of the error handler options stack.
 popErrorHandling ()
 Pop the last error handler used.
 loadExtension ($ext)
 OS independant PHP extension load.

Static Public Member Functions

static _ilErrorWriter ($errno, $errstr, $errfile, $errline)
 This is used in Soap calls to write PHP error in ILIAS Logfile Not used yet!!!

Data Fields

 $DEBUG_ENV
 $FATAL
 $WARNING
 $MESSAGE
- Data Fields inherited from PEAR
 $_debug = false
 $_default_error_mode = null
 $_default_error_options = null
 $_default_error_handler = ''
 $_error_class = 'PEAR_Error'
 $_expected_errors = array()

Detailed Description

Error Handling & global info handling uses PEAR error class.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Sascha Hofmann shofm.nosp@m.ann@.nosp@m.datab.nosp@m.ay.d.nosp@m.e
Version
$Id$
Todo:
when an error occured and clicking the back button to return to previous page the referer-var in session is deleted -> server error

Definition at line 17 of file class.ilErrorHandling.php.

Member Function Documentation

static ilErrorHandling::_ilErrorWriter (   $errno,
  $errstr,
  $errfile,
  $errline 
)
static

This is used in Soap calls to write PHP error in ILIAS Logfile Not used yet!!!

public

Parameters

Definition at line 223 of file class.ilErrorHandling.php.

References $ilLog, and exit.

{
global $ilLog;
switch($errno)
{
case E_USER_ERROR:
$ilLog->write('PHP errror: '.$errstr.'. FATAL error on line '.$errline.' in file '.$errfile);
unset($ilLog);
exit(1);
case E_USER_WARNING:
$ilLog->write('PHP warning: ['.$errno.'] '.$errstr.' on line '.$errline.' in file '.$errfile);
break;
}
return true;
}
ilErrorHandling::appendMessage (   $a_message)

Definition at line 205 of file class.ilErrorHandling.php.

References getMessage().

{
if($this->getMessage())
{
$this->message .= "<br /> ";
}
$this->message .= $a_message;
}

+ Here is the call graph for this function:

ilErrorHandling::errorHandler (   $a_error_obj)

defines what has to happen in case of error private

Parameters
objectError

Definition at line 74 of file class.ilErrorHandling.php.

References $_POST, $_SESSION, $FATAL, $log, $MESSAGE, $WARNING, exit, and ilUtil\redirect().

{
global $log;
$this->error_obj =& $a_error_obj;
//echo "-".$_SESSION["referer"]."-";
if ($_SESSION["failure"] && substr($a_error_obj->getMessage(), 0, 22) != "Cannot find this block")
{
$m = "Fatal Error: Called raise error two times.<br>".
"First error: ".$_SESSION["failure"].'<br>'.
"Last Error:". $a_error_obj->getMessage();
//return;
$log->logError($a_error_obj->getCode(), $m);
unset($_SESSION["failure"]);
die ($m);
}
if (substr($a_error_obj->getMessage(), 0, 22) == "Cannot find this block")
{
if (DEVMODE == 1)
{
echo "<b>DEVMODE</b><br><br>";
echo "<b>Template Block not found.</b><br>";
echo "You used a template block in your code that is not available.<br>";
echo "Native Messge: <b>".$a_error_obj->getMessage()."</b><br>";
if (is_array($a_error_obj->backtrace))
{
echo "Backtrace:<br>";
foreach ($a_error_obj->backtrace as $b)
{
if ($b["function"] == "setCurrentBlock" &&
basename($b["file"]) != "class.ilTemplate.php")
{
echo "<b>";
}
echo "File: ".$b["file"].", ";
echo "Line: ".$b["line"].", ";
echo $b["function"]."()<br>";
if ($b["function"] == "setCurrentBlock" &&
basename($b["file"]) != "class.ilTemplate.php")
{
echo "</b>";
}
}
}
}
return;
}
if (is_object($log) and $log->enabled == true)
{
$log->logError($a_error_obj->getCode(),$a_error_obj->getMessage());
}
//echo $a_error_obj->getCode().":"; exit;
if ($a_error_obj->getCode() == $this->FATAL)
{
trigger_error(stripslashes($a_error_obj->getMessage()), E_USER_ERROR);
exit();
}
if ($a_error_obj->getCode() == $this->WARNING)
{
if ($this->DEBUG_ENV)
{
$message = $a_error_obj->getMessage();
}
else
{
$message = "Under Construction";
}
$_SESSION["failure"] = $message;
if (!defined("ILIAS_MODULE"))
{
ilUtil::redirect("error.php");
}
else
{
ilUtil::redirect("../error.php");
}
}
if ($a_error_obj->getCode() == $this->MESSAGE)
{
$_SESSION["failure"] = $a_error_obj->getMessage();
// save post vars to session in case of error
$_SESSION["error_post_vars"] = $_POST;
if (empty($_SESSION["referer"]))
{
$dirname = dirname($_SERVER["PHP_SELF"]);
$ilurl = parse_url(ILIAS_HTTP_PATH);
$subdir = substr(strstr($dirname,$ilurl["path"]),strlen($ilurl["path"]));
$updir = "";
if ($subdir)
{
$num_subdirs = substr_count($subdir,"/");
for ($i=1;$i<=$num_subdirs;$i++)
{
$updir .= "../";
}
}
ilUtil::redirect($updir."index.php");
}
// check if already GET-Parameters exists in Referer-URI
if (substr($_SESSION["referer"],-4) == ".php")
{
$glue = "?";
}
else
{
$glue = "&";
}
ilUtil::redirect($_SESSION["referer"].$glue);
}
}

+ Here is the call graph for this function:

ilErrorHandling::getLastError ( )

Definition at line 64 of file class.ilErrorHandling.php.

{
return $this->error_obj;
}
ilErrorHandling::getMessage ( )

Definition at line 197 of file class.ilErrorHandling.php.

Referenced by appendMessage().

{
return $this->message;
}

+ Here is the caller graph for this function:

ilErrorHandling::ilErrorHandling ( )

Constructor public.

Definition at line 51 of file class.ilErrorHandling.php.

References PEAR\PEAR().

{
$this->PEAR();
// init vars
$this->DEBUG_ENV = true;
$this->FATAL = 1;
$this->WARNING = 2;
$this->MESSAGE = 3;
$this->error_obj = false;
}

+ Here is the call graph for this function:

ilErrorHandling::setMessage (   $a_message)

Definition at line 201 of file class.ilErrorHandling.php.

{
$this->message = $a_message;
}

Field Documentation

ilErrorHandling::$DEBUG_ENV

Definition at line 24 of file class.ilErrorHandling.php.

ilErrorHandling::$FATAL

Definition at line 31 of file class.ilErrorHandling.php.

Referenced by errorHandler().

ilErrorHandling::$MESSAGE

Definition at line 45 of file class.ilErrorHandling.php.

Referenced by errorHandler().

ilErrorHandling::$WARNING

Definition at line 38 of file class.ilErrorHandling.php.

Referenced by errorHandler().


The documentation for this class was generated from the following file: