Changeset 501 for trunk/Common/Error.php


Ignore:
Timestamp:
Mar 10, 2013, 8:15:46 PM (11 years ago)
Author:
chronos
Message:
  • Přidáno: FormManager pro objektové řešení zrušení vazeb na třídu System. FormManager nyní obsluhuje existující formulářové typy a třídy formulářů.
  • Přidáno: Formulářový typ FileContent zajistí načtení obsahu souboru. Typ File pak zajistí i uložení do databáze a přiřazení Id do tabulky File.
  • Odstraněno: Adresář docs obsahoval staré dokumenty. Ty musí být přesunuty do adresáře files a registrovány do databáze.
  • Upraveno: Třídy Database nyní bude hlásit chyby přes výjimky PHP.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Common/Error.php

    r476 r501  
    44{
    55  var $Encoding;
     6  var $ShowError;
     7  var $UserErrors;
    68   
    79  function __construct()
    810  {
    911    $this->Encoding = 'utf-8';
     12    $this->ShowError = false;
     13    $this->UserErrors = E_ALL;  //E_ERROR | E_WARNING | E_PARSE;
    1014  }
    1115 
     
    1721  function Handle($Number, $Message, $FileName, $LineNumber, $Variables)
    1822  {
    19   global $Config;
     23    $Date = date('Y-m-d H:i:s');                // časové razítko položky
     24    $ErrorType = array
     25    (
     26      1 => 'Error',
     27      2 => 'Warning',
     28      4 => 'Parsing Error',
     29      8 => 'Notice',
     30      16 => 'Core Error',
     31      32 => 'Core Warning',
     32      64 => 'Compile Error',
     33      128 => 'Compile Warning',
     34      256 => 'User Error',
     35      512 => 'User Warning',
     36      1024 => 'User Notice'
     37    );
    2038 
    21   $Date = date('Y-m-d H:i:s');          // časové razítko položky
    22   $ErrorType = array
    23   (
    24     1 => 'Error',
    25     2 => 'Warning',
    26     4 => 'Parsing Error',
    27     8 => 'Notice',
    28     16 => 'Core Error',
    29     32 => 'Core Warning',
    30     64 => 'Compile Error',
    31     128 => 'Compile Warning',
    32     256 => 'User Error',
    33     512 => 'User Warning',
    34     1024 => 'User Notice'
    35   );
    36   $UserErrors = E_ALL;  //E_ERROR | E_WARNING | E_PARSE;
    37  
    38   if(($UserErrors & $Number))
    39   {
    40     $Error = '# '.$Date."\n";
    41     $Backtrace = debug_backtrace();
    42     $Backtrace[0]['function'] = $Message;
    43     $Backtrace[0]['args'] = '';
    44     $Backtrace[0]['file'] = $FileName;
    45     $Backtrace[0]['line'] = $LineNumber;
    46     //$First = array_shift($Backtrace);
    47     //print_r($Backtrace);
     39    if(($this->UserErrors & $Number))
     40    {
     41      $Error = '# '.$Date."\n";
     42      $Backtrace = debug_backtrace();
     43      $Backtrace[0]['function'] = $Message;
     44      $Backtrace[0]['args'] = '';
     45      $Backtrace[0]['file'] = $FileName;
     46      $Backtrace[0]['line'] = $LineNumber;
     47      //$First = array_shift($Backtrace);
    4848   
    49     //array_unshift($Backtrace, $First);
    50     //array_shift($Backtrace);
    51     //print_r($Backtrace);
    52     foreach($Backtrace as $Item)
    53     {
    54       $Error .= ' '.$Item['file'].'('.$Item['line'].")\t".$Item['function'];
    55       $Arguments = '';
    56       if(array_key_exists('args', $Item) and is_array($Item['args']))
     49      //array_unshift($Backtrace, $First);
     50      //array_shift($Backtrace);
     51      foreach($Backtrace as $Item)
     52      {
     53        $Error .= ' '.$Item['file'].'('.$Item['line'].")\t".$Item['function'];
     54        $Arguments = '';
     55        if(array_key_exists('args', $Item) and is_array($Item['args']))
    5756        foreach($Item['args'] as $Item)
    5857        {
     
    6160          else $Arguments .= "'".$Item."',";
    6261        }
    63       if(strlen($Arguments) > 0) $Error .= '('.substr($Arguments, 0, -1).')';
     62        if(strlen($Arguments) > 0) $Error .= '('.substr($Arguments, 0, -1).')';
     63        $Error .= "\n";     
     64      }
    6465      $Error .= "\n";
    6566     
     67      $this->System->Modules['Log']->NewRecord('Error', 'Log', $Error);   
     68   
     69      //if($Config['Web']['ErrorLogFile'] != '')
     70        // error_log($Error, 3, $Config['Web']['ErrorLogFile']);
     71            // Pošli mi zprávu (pokud je to kritická chyba)
     72         //mail($Config['Web']['AdminEmail'], $Config['Web']['Title'].' - Chybové hlášení', $Error);
     73          // Show error message
     74            if($this->ShowError == true)
     75          {
     76              echo('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>'."\n".
     77        '<meta http-equiv="Content-Language" content="cs">'."\n".
     78        '<meta http-equiv="Content-Type" content="text/html; charset='.$this->Encoding.'"></head><body>'."\n".
     79        'Došlo k vnitřní chybě!<br/> O chybě byl uvědoměn správce webu a chybu brzy odstraní.<br/><br/>');
     80            echo('<pre>'.$Error.'</pre><br/>');                 // V případě ladění chybu i zobraz
     81          echo('</body></html>');
     82            }
     83      if((E_ERROR | E_PARSE) & $Number) die();
    6684    }
    67     $Error .= "\n";
    68    
    69     $this->System->Modules['Log']->NewRecord('Error', 'Log', $Error);   
    70    
    71     //if($Config['Web']['ErrorLogFile'] != '')
    72       //error_log($Error, 3, $Config['Web']['ErrorLogFile']);
    73         // Pošli mi zprávu (pokud je to kritická chyba)
    74         //mail($Config['Web']['AdminEmail'], $Config['Web']['Title'].' - Chybové hlášení', $Error);
    75         // Show error message
    76         if($Config['Web']['ShowPHPError'] == true)
    77         {
    78             echo('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>'."\n".
    79       '<meta http-equiv="Content-Language" content="cs">'."\n".
    80       '<meta http-equiv="Content-Type" content="text/html; charset='.$this->Encoding.'"></head><body>'."\n".
    81       'Došlo k vnitřní chybě!<br/> O chybě byl uvědoměn správce webu a chybu brzy odstraní.<br/><br/>');
    82           echo('<pre>'.$Error.'</pre><br/>');                   // V případě ladění chybu i zobraz
    83           echo('</body></html>');
    84         }
    85     if((E_ERROR | E_PARSE) & $Number) die();
    86   }
    8785  }
    8886}
Note: See TracChangeset for help on using the changeset viewer.