2013-10-10 02:44:53 +00:00
|
|
|
<?php defined('SYSPATH') OR die('No direct access');
|
|
|
|
/**
|
|
|
|
* Kohana exception class. Translates exceptions using the [I18n] class.
|
|
|
|
*
|
|
|
|
* @package OSB
|
|
|
|
* @category Modifications
|
|
|
|
* @author Deon George
|
|
|
|
* @copyright (c) 2009-2013 Open Source Billing
|
|
|
|
* @license http://dev.osbill.net/license.html
|
|
|
|
*/
|
|
|
|
class Kohana_Exception extends Kohana_Kohana_Exception {
|
|
|
|
/**
|
|
|
|
* Logs an exception in the database. If that fails fall back to Kohana's Logging.
|
|
|
|
*
|
|
|
|
* @uses Kohana_Exception::text
|
|
|
|
* @param Exception $e
|
|
|
|
* @param int $level
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public static function log(Exception $e,$level=Log::EMERGENCY) {
|
|
|
|
try {
|
|
|
|
$eo = ORM::factory('Log_Error');
|
|
|
|
$eo->message = Kohana_Exception::text($e);
|
2013-07-05 06:11:37 +00:00
|
|
|
$eo->account_id = (PHP_SAPI === 'cli' OR ! Auth::instance()->logged_in()) ? NULL : Auth::instance()->get_user()->id;
|
2013-05-08 09:00:47 +00:00
|
|
|
|
|
|
|
if (Request::current()) {
|
|
|
|
$eo->module = (Request::current()->directory() ? Request::current()->directory().'_' : '').Request::current()->controller();
|
|
|
|
$eo->method = Request::current()->action();
|
|
|
|
}
|
|
|
|
|
2013-10-10 02:44:53 +00:00
|
|
|
$eo->save();
|
|
|
|
|
|
|
|
} catch (Exception $x) {
|
|
|
|
return parent::log($e,$level);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Redirect errors to the main page after showing a system message.
|
|
|
|
* The error should be logged in the DB.
|
|
|
|
*
|
|
|
|
* @param Exception $e
|
|
|
|
* @return Response
|
|
|
|
*/
|
|
|
|
public static function response(Exception $e) {
|
|
|
|
try {
|
|
|
|
if (Kohana::$config->load('debug')->show_errors) {
|
|
|
|
return parent::response($e);
|
|
|
|
} else {
|
|
|
|
SystemMessage::add(array(
|
|
|
|
'title'=>'An Error Occured.',
|
|
|
|
'type'=>'error',
|
|
|
|
'body'=>'Dont panic, its been logged.',
|
|
|
|
));
|
|
|
|
|
|
|
|
// We'll redirect to the main page.
|
|
|
|
$response = Response::factory();
|
|
|
|
$response->status(302);
|
|
|
|
$response->headers('Location',URL::site());
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception $x) {
|
|
|
|
return parent::response($e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|