diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 93c62e362e..fbb36c0389 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -30,6 +30,7 @@ use ErrorException; use FireflyIII\Jobs\MailError; use Illuminate\Auth\AuthenticationException; use Illuminate\Contracts\Foundation\Application; +use Illuminate\Database\QueryException; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -124,6 +125,14 @@ class Handler extends ExceptionHandler return response()->view('errors.FireflyException', ['exception' => $e, 'debug' => $isDebug], 500); } + // special view for database errors with extra instructions + if($e instanceof QueryException) { + $isDebug = config('app.debug'); + + return response()->view('errors.DatabaseException', ['exception' => $e, 'debug' => $isDebug], 500); + } + + //var_dump($e);exit; return parent::render($request, $e); } diff --git a/resources/lang/en_US/errors.php b/resources/lang/en_US/errors.php index b63c231504..a62e78ebcf 100644 --- a/resources/lang/en_US/errors.php +++ b/resources/lang/en_US/errors.php @@ -33,6 +33,7 @@ return [ 'be_right_back' => 'Be right back!', 'check_back' => 'Firefly III is down for some necessary maintenance. Please check back in a second.', 'error_occurred' => 'Whoops! An error occurred.', + 'db_error_occurred' => 'Whoops! A database error occurred.', 'error_not_recoverable' => 'Unfortunately, this error was not recoverable :(. Firefly III broke. The error is:', 'error' => 'Error', 'error_location' => 'This error occured in file :file on line :line with code :code.', diff --git a/resources/views/errors/DatabaseException.twig b/resources/views/errors/DatabaseException.twig new file mode 100644 index 0000000000..4f56c01a77 --- /dev/null +++ b/resources/views/errors/DatabaseException.twig @@ -0,0 +1,95 @@ + + + + + + Firefly III Database Exception :( + + + + + {# CSS things #} + + {# libraries #} + + + + + {# the theme #} + + + + {# favicons #} + {% include('partials.favicons') %} + + + +
+
+

FireflyIII

+
+
+
+
+

{{ trans('errors.db_error_occurred') }}

+
+
+
+
+

+ {{ trans('errors.error_not_recoverable') }} +

+

+ {{ exception.getMessage |default('General unknown errror') }} +

+

+ {{ trans('errors.error_location', {file: exception.getFile, line: exception.getLine, code: exception.getCode })|raw }} +

+
+
+{% if not debug %} +
+
+

+ {{ trans('errors.more_info') }} +

+

+ {{ trans('errors.collect_info')|raw }} + {{ trans('errors.collect_info_more')|raw }} +

+

+ {{ trans('errors.github_help') }} +

+

+ {{ trans('errors.github_instructions')|raw }} +

+
    +
  1. {{ trans('errors.use_search') }}
  2. +
  3. {{ trans('errors.include_info', { link: route('debug') })|raw }}
  4. +
  5. {{ trans('errors.tell_more') }}
  6. +
  7. {{ trans('errors.include_logs') }}
  8. +
  9. {{ trans('errors.what_did_you_do') }}
  10. +
+
+
+{% endif %} + +{% if debug %} +
+
+

{{ trans('errors.error') }}

+

+ {{ trans('errors.error_location', {file: exception.getFile, line: exception.getLine, code: exception.getCode })|raw }} +

+

+ {{ trans('errors.stacktrace') }} +

+
+ {{ exception.getTraceAsString|nl2br }} +
+
+
+{% endif %} + + + diff --git a/resources/views/errors/FireflyException.twig b/resources/views/errors/FireflyException.twig index b53e04453d..ef5e630ee7 100644 --- a/resources/views/errors/FireflyException.twig +++ b/resources/views/errors/FireflyException.twig @@ -42,6 +42,9 @@

{{ exception.getMessage |default('General unknown errror') }}

+

+ {{ trans('errors.error_location', {file: exception.getFile, line: exception.getLine, code: exception.getCode })|raw }} +

{% if not debug %}