<?php

// Obsluha chyb v1.1.1 //

$Error_Email = 'robie@centrum.cz';						// Adresa, kam budou chyby odesílány
$Error_Subject = 'Chybové hlášení';		// Název zpráv o chybách
$Error_ShowDetails = 1;									// Zobrazit detajly o chybě

//error_reporting(0);					// Vypni interní obsluhu chyb

function obsluha_chyb($errno,$errmsg,$filename,$linenum,$vars)
{
  global $Error_ShowDetails;
  $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)
  {
	  $err = '# '.$dt.' : '.$errmsg."\n";
    $Backtrace = debug_backtrace();
    array_shift($Backtrace);
    //array_shift($Backtrace);
    foreach($Backtrace as $Item)
    {
      $err .= ' '.$Item['file'].'('.$Item['line'].")\t".$Item['function'];
      $arguments = '';
      if(array_key_exists('args', $Item) and 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,'error.log');				// 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('Došlo k vnitřní chybě!<br> O chybě byl uvědomně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
    if((E_ERROR | E_PARSE) & $errno) die(); 
  }// else echo($errmsg.'<br>');
}

set_error_handler('obsluha_chyb');				// Aktivuj novou obsluhu chyb

?>
