1: <?php
2:
3: /**
4: * This file is part of the Nette Framework (http://nette.org)
5: * Copyright (c) 2004 David Grudl (http://davidgrudl.com)
6: */
7:
8: namespace NetteModule;
9:
10: use Nette;
11: use Nette\Application;
12: use Tracy\ILogger;
13:
14:
15: /**
16: * Default Error Presenter.
17: */
18: class ErrorPresenter extends Nette\Object implements Application\IPresenter
19: {
20: /** @var ILogger|NULL */
21: private $logger;
22:
23:
24: public function __construct(ILogger $logger = NULL)
25: {
26: $this->logger = $logger;
27: }
28:
29:
30: /**
31: * @return Application\IResponse
32: */
33: public function run(Application\Request $request)
34: {
35: $e = $request->parameters['exception'];
36: if ($e instanceof Application\BadRequestException) {
37: $code = $e->getCode();
38: } else {
39: $code = 500;
40: if ($this->logger) {
41: $this->logger->log($e, ILogger::EXCEPTION);
42: }
43: }
44: ob_start();
45: require __DIR__ . '/templates/error.phtml';
46: return new Application\Responses\TextResponse(ob_get_clean());
47: }
48:
49: }
50: