Fixed issues with inifinite recursion on missing component. Refactored missing helper errors. Closes #5297

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@7483 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
mark_story 2008-08-22 01:52:37 +00:00
parent a17e64d108
commit 5199c5cb9d

View file

@ -1,9 +1,9 @@
<?php <?php
/* SVN FILE: $Id$ */ /* SVN FILE: $Id$ */
/** /**
* Short description for file. * Error handler
* *
* Long description for file * Provides Error Capturing for Framework errors.
* *
* PHP versions 4 and 5 * PHP versions 4 and 5
* *
@ -28,17 +28,27 @@
*/ */
App::import('Controller', 'App'); App::import('Controller', 'App');
/** /**
* Short description for file. * Error Handling Controller
* *
* Long description for file * Controller used by ErrorHandler to render error views.
* *
* @package cake * @package cake
* @subpackage cake.cake.libs * @subpackage cake.cake.libs
*/ */
class CakeErrorController extends AppController { class CakeErrorController extends AppController {
var $name = 'CakeError'; var $name = 'CakeError';
/**
* Uses Property
*
* @var array
*/
var $uses = array(); var $uses = array();
/**
* __construct
*
* @access public
* @return void
*/
function __construct() { function __construct() {
parent::__construct(); parent::__construct();
$this->_set(Router::getPaths()); $this->_set(Router::getPaths());
@ -49,9 +59,11 @@ class CakeErrorController extends AppController {
} }
} }
/** /**
* Short description for file. * Error Handler.
* *
* Long description for file * Captures and handles all cakeError() calls.
* Displays helpful framework errors when debug > 1.
* When debug < 1 cakeError() will render 404 or 500 errors.
* *
* @package cake * @package cake
* @subpackage cake.cake.libs * @subpackage cake.cake.libs
@ -72,8 +84,16 @@ class ErrorHandler extends Object {
*/ */
function __construct($method, $messages) { function __construct($method, $messages) {
App::import('Core', 'Sanitize'); App::import('Core', 'Sanitize');
static $__previousError = null;
if ($__previousError != array($method, $messages)) {
$__previousError = array($method, $messages);
$this->controller =& new CakeErrorController();
} else {
$this->controller =& new Controller();
$this->controller->viewPath = 'errors';
}
$this->controller =& new CakeErrorController();
$options = array('escape' => false); $options = array('escape' => false);
$messages = Sanitize::clean($messages, $options); $messages = Sanitize::clean($messages, $options);
@ -276,9 +296,6 @@ class ErrorHandler extends Object {
function missingHelperFile($params) { function missingHelperFile($params) {
extract($params, EXTR_OVERWRITE); extract($params, EXTR_OVERWRITE);
$index = array_search($helper, $this->controller->helpers);
unset($this->controller->helpers[$index]);
$this->controller->set(array( $this->controller->set(array(
'helperClass' => Inflector::camelize($helper) . "Helper", 'helperClass' => Inflector::camelize($helper) . "Helper",
'file' => $file, 'file' => $file,
@ -295,9 +312,6 @@ class ErrorHandler extends Object {
function missingHelperClass($params) { function missingHelperClass($params) {
extract($params, EXTR_OVERWRITE); extract($params, EXTR_OVERWRITE);
$index = array_search($helper, $this->controller->helpers);
unset($this->controller->helpers[$index]);
$this->controller->set(array( $this->controller->set(array(
'helperClass' => Inflector::camelize($helper) . "Helper", 'helperClass' => Inflector::camelize($helper) . "Helper",
'file' => $file, 'file' => $file,