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: Nette\Application,
12: Tracy\ILogger;
13:
14:
15: /**
16: * Default Error Presenter.
17: *
18: * @author David Grudl
19: */
20: class ErrorPresenter extends Nette\Object implements Application\IPresenter
21: {
22: /** @var ILogger|NULL */
23: private $logger;
24:
25:
26: public function __construct(ILogger $logger = NULL)
27: {
28: $this->logger = $logger;
29: }
30:
31:
32: /**
33: * @return Application\IResponse
34: */
35: public function run(Application\Request $request)
36: {
37: $e = $request->parameters['exception'];
38: if ($e instanceof Application\BadRequestException) {
39: $code = $e->getCode();
40: } else {
41: $code = 500;
42: if ($this->logger) {
43: $this->logger->log($e, ILogger::EXCEPTION);
44: }
45: }
46: ob_start();
47: require __DIR__ . '/templates/error.phtml';
48: return new Application\Responses\TextResponse(ob_get_clean());
49: }
50:
51: }
52: