<?php

// Obsluha chyb v1.1.1 //
include_once('config.php');
$Error_Email = $Config['Web']['AdminEmail'];						// Adresa, kam budou chyby odesílány
$Error_Subject = $Config['Web']['Title'].' - Chybové hlášení';		// Název zpráv o chybách
$Error_ShowDetails = $Config['Web']['ShowError'];									// Zobrazit detajly o chyby
$ErrorLogFile = $Config['Web']['ErrorLogFile'];

//error_reporting(0);					// Vypni interní obsluhu chyb

function obsluha_chyb($errno, $errmsg, $filename, $linenum, $vars)
{
  global $ErrorsDisabled, $Error_ShowDetails, $ErrorLogFile;
  
  $dt = date("Y-m-d H:i:s");		// časové razítko položky
  $errortype = array(
    1 => "Error",
    2 => "Warning",
    4 => "Parsing Error",
    8 => "Notice",
    16 => "Core Error",
    32 => "Core Warning",
    64 => "Compile Error",
    128 => "Compile Warning",
    256 => "User Error",
    512 => "User Warning",
    1024 => "User Notice"
  );
  $user_errors = E_ALL;  //E_ERROR | E_WARNING | E_PARSE;
  
  if(($user_errors & $errno) and (!$ErrorsDisabled))
  {
	  $err = '# '.$dt.' : '.$errmsg." on line ".$linenum."\n";
    $Backtrace = debug_backtrace();
    array_shift($Backtrace);
    //array_shift($Backtrace);
    //print_r($Backtrace);
    foreach($Backtrace as $Item)
    {
      $err .= ' '.$Item['file'].'('.$Item['line'].")\t".$Item['function'];
      $arguments = '';
      if(array_key_exists('args',$Item))
      if(is_array($Item['args']))
      foreach($Item['args'] as $Arg)
      {
        if(is_array($Arg)) $arguments .= "'".serialize($Arg)."',";
        else $arguments .= "'".$Arg."',";
      }
      if(strlen($arguments)>0) $err .= '('.substr($arguments,0,-1).")";
      $err .= "\n";
     
    }
    $err .= "\n";
    //echo('Uvnitř'.$errno);
    error_log($err, 3, $ErrorLogFile);				// Ulož do chybového protokolu
	  //$err = "Datum: ".$dt."\nHlášení: ".$errmsg."\nSkript: ".$filename."\nŘádek: ".$linenum;
    //mail($Error_Email,$Error_Subject,$err);		// Pošli mi zprávu (pokud je to kritická chyba)
	  echo('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>'."\n".
    '<meta http-equiv="Content-Language" content="cs">'."\n".
    '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"></head><body>'."\n".
    'Došlo k vnitřní chybě!<br> O chybě byl uvědoměn správce webu a chybu brzy odstraní.<br><br>');
  	if($Error_ShowDetails==1) echo('<pre>'.$err.'</pre><br>');			// V případě ladění chybu i zobraz
    echo('</body></html>');
    if((E_ERROR | E_PARSE) & $errno) die(); 
  }// else echo($errmsg.'<br>');
}

set_error_handler('obsluha_chyb');				// Aktivuj novou obsluhu chyb

?>
