diff options
Diffstat (limited to 'public/admin/controller/startup/error.php')
-rw-r--r-- | public/admin/controller/startup/error.php | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/public/admin/controller/startup/error.php b/public/admin/controller/startup/error.php new file mode 100644 index 0000000..8489b9c --- /dev/null +++ b/public/admin/controller/startup/error.php @@ -0,0 +1,43 @@ +<?php +class ControllerStartupError extends Controller { + public function index() { + $this->registry->set('log', new Log($this->config->get('config_error_filename') ? $this->config->get('config_error_filename') : $this->config->get('error_filename'))); + + set_error_handler(array($this, 'handler')); + } + + public function handler($code, $message, $file, $line) { + // error suppressed with @ + if (error_reporting() === 0) { + return false; + } + + switch ($code) { + case E_NOTICE: + case E_USER_NOTICE: + $error = 'Notice'; + break; + case E_WARNING: + case E_USER_WARNING: + $error = 'Warning'; + break; + case E_ERROR: + case E_USER_ERROR: + $error = 'Fatal Error'; + break; + default: + $error = 'Unknown'; + break; + } + + if ($this->config->get('config_error_display')) { + echo '<b>' . $error . '</b>: ' . $message . ' in <b>' . $file . '</b> on line <b>' . $line . '</b>'; + } + + if ($this->config->get('config_error_log')) { + $this->log->write('PHP ' . $error . ': ' . $message . ' in ' . $file . ' on line ' . $line); + } + + return true; + } +} |