Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
16591 anikendra 1
<?php
2
/**
3
 * ErrorHandler for Console Shells
4
 *
5
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
6
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
7
 *
8
 * Licensed under The MIT License
9
 * For full copyright and license information, please see the LICENSE.txt
10
 * Redistributions of files must retain the above copyright notice.
11
 *
12
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
13
 * @link          http://cakephp.org CakePHP(tm) Project
14
 * @since         CakePHP(tm) v 2.0
15
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
16
 */
17
 
18
App::uses('ErrorHandler', 'Error');
19
App::uses('ConsoleOutput', 'Console');
20
App::uses('CakeLog', 'Log');
21
 
22
/**
23
 * Error Handler for Cake console. Does simple printing of the
24
 * exception that occurred and the stack trace of the error.
25
 *
26
 * @package       Cake.Console
27
 */
28
class ConsoleErrorHandler {
29
 
30
/**
31
 * Standard error stream.
32
 *
33
 * @var ConsoleOutput
34
 */
35
	public static $stderr;
36
 
37
/**
38
 * Get the stderr object for the console error handling.
39
 *
40
 * @return ConsoleOutput
41
 */
42
	public static function getStderr() {
43
		if (empty(static::$stderr)) {
44
			static::$stderr = new ConsoleOutput('php://stderr');
45
		}
46
		return static::$stderr;
47
	}
48
 
49
/**
50
 * Handle an exception in the console environment. Prints a message to stderr.
51
 *
52
 * @param Exception $exception The exception to handle
53
 * @return void
54
 */
55
	public function handleException(Exception $exception) {
56
		$stderr = static::getStderr();
57
		$stderr->write(__d('cake_console', "<error>Error:</error> %s\n%s",
58
			$exception->getMessage(),
59
			$exception->getTraceAsString()
60
		));
61
		$code = $exception->getCode();
62
		$code = ($code && is_int($code)) ? $code : 1;
63
		return $this->_stop($code);
64
	}
65
 
66
/**
67
 * Handle errors in the console environment. Writes errors to stderr,
68
 * and logs messages if Configure::read('debug') is 0.
69
 *
70
 * @param int $code Error code
71
 * @param string $description Description of the error.
72
 * @param string $file The file the error occurred in.
73
 * @param int $line The line the error occurred on.
74
 * @param array $context The backtrace of the error.
75
 * @return void
76
 */
77
	public function handleError($code, $description, $file = null, $line = null, $context = null) {
78
		if (error_reporting() === 0) {
79
			return;
80
		}
81
		$stderr = static::getStderr();
82
		list($name, $log) = ErrorHandler::mapErrorCode($code);
83
		$message = __d('cake_console', '%s in [%s, line %s]', $description, $file, $line);
84
		$stderr->write(__d('cake_console', "<error>%s Error:</error> %s\n", $name, $message));
85
 
86
		if (!Configure::read('debug')) {
87
			CakeLog::write($log, $message);
88
		}
89
 
90
		if ($log === LOG_ERR) {
91
			return $this->_stop(1);
92
		}
93
	}
94
 
95
/**
96
 * Wrapper for exit(), used for testing.
97
 *
98
 * @param int $code The exit code.
99
 * @return void
100
 */
101
	protected function _stop($code = 0) {
102
		exit($code);
103
	}
104
 
105
}