cakephp2-php8/cake/libs/error.php
phpnut fb96b06394 Merging fixes to trunk
Revision: [1796]
Adding missing layout error messages.
Changed more errors in View class to use the ErrorHandler class

Revision: [1795]
Added the missing error messages I found after RC 1 was built.
Corrected errors in the View class when helpers where not found.
Added error views for missing component classes and files.
Updated views for missing view classes and files

Revision: [1794]
Adding fix for Ticket #273

Revision: [1793]
Correcting loading order of required files in bake.php

Revision: [1792]
Added fix for Ticket #271

Revision: [1791]
Fix for Ticket #268 and Ticket #272

git-svn-id: https://svn.cakephp.org/repo/trunk/cake@1797 3807eeeb-6ff5-0310-8944-8be069107fe0
2006-01-13 23:53:23 +00:00

290 lines
No EOL
8.2 KiB
PHP

<?php
/* SVN FILE: $Id$ */
/**
* Short description for file.
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2005, Cake Software Foundation, Inc.
* 1785 E. Sahara Avenue, Suite 490-204
* Las Vegas, Nevada 89104
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @filesource
* @copyright Copyright (c) 2005, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.cake.libs
* @since CakePHP v 0.10.5.1732
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Short description for file.
*
* Long description for file
*
* @package cake
* @subpackage cake.cake.libs
* @since CakePHP v 0.10.5.1732
*/
class ErrorHandler extends Object
{
var $controller = null;
/**
* Class constructor.
*/
function __construct($method, $messages)
{
$this->controller =& new Controller();
if(DEBUG > 0)
{
call_user_func_array(array(&$this, $method), $messages);
}
else
{
call_user_func_array(array(&$this, 'error404'), $messages);
}
}
/**
* Displays an error page (e.g. 404 Not found).
*
* @param int $code Error code (e.g. 404)
* @param string $name Name of the error message (e.g. Not found)
* @param string $message
* @return unknown
*/
function error ($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('code'=>$code,
'name'=>$name,
'message'=>$message,
'title' => $code.' '. $name));
$this->controller->render('../errors/error404');
}
/**
* Convenience method to display a 404 page.
*
* @param string $url URL that spawned this message, to be included in the output.
* @param string $message Message text for the 404 page.
*/
function error404 ($params)
{
extract($params);
if(!isset($url))
{
$url = $action;
}
if(!isset($message))
{
$message = '';
}
header("HTTP/1.0 404 Not Found");
$this->error(array('code'=>'404',
'name'=>'Not found',
'message'=>sprintf(__("The requested address %s was not found on this server."), $url, $message)));
}
/**
* Renders the Missing Controller web page.
*
*/
function missingController($params)
{
extract($params);
$this->controller->webroot = $webroot;
$this->controller->set(array('controller' => $className,
'title' => 'Missing Controller'));
$this->controller->render('../errors/missingController');
}
/**
* Renders the Missing Action web page.
*
*/
function missingAction($params)
{
extract($params);
$this->controller->webroot = $webroot;
$this->controller->set(array('controller' => $className,
'action' => $action,
'title' => 'Missing Method in Controller'));
$this->controller->render('../errors/missingAction');
}
/**
* Renders the Private Action web page.
*
*/
function privateAction($params)
{
extract($params);
$this->controller->webroot = $webroot;
$this->controller->set(array('controller' => $className,
'action' => $action,
'title' => 'Trying to access private method in class'));
$this->controller->render('../errors/privateAction');
}
/**
* Renders the Missing Table web page.
*
*/
function missingTable($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('model' => $className,
'table' => $table,
'title' => 'Missing Database Table'));
$this->controller->render('../errors/missingTable');
exit();
}
/**
* Renders the Missing Database web page.
*
*/
function missingDatabase($params)
{
extract($params);
$this->controller->webroot = $webroot;
$this->controller->set(array('title' => 'Scaffold Missing Database Connection'));
$this->controller->render('../errors/missingScaffolddb');
}
/**
* Renders the Missing View web page.
*
*/
function missingView($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('controller' => $className,
'action' => $action,
'file' => $file,
'title' => 'Missing View'));
$this->controller->render('../errors/missingView');
}
/**
* Renders the Missing Layout web page.
*
*/
function missingLayout($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->layout = 'default';
$this->controller->set(array('file' => $file,
'title' => 'Missing Layout'));
$this->controller->render('../errors/missingLayout');
}
/**
* Renders the Missing Table web page.
*
*/
function missingConnection($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('model' => $className,
'title' => 'Missing Database Connection'));
$this->controller->render('../errors/missingConnection');
exit();
}
/**
* Renders the Missing Helper file web page.
*
*/
function missingHelperFile($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('helperClass' => Inflector::camelize($helper) . "Helper",
'file' => $file,
'title' => 'Missing Helper File'));
$this->controller->render('../errors/missingHelperFile');
exit();
}
/**
* Renders the Missing Helper class web page.
*
*/
function missingHelperClass($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('helperClass' => Inflector::camelize($helper) . "Helper",
'file' => $file,
'title' => 'Missing Helper Class'));
$this->controller->render('../errors/missingHelperClass');
exit();
}
/**
* Renders the Missing Component file web page.
*
*/
function missingComponentFile($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('controller' => $className,
'component' => $component,
'file' => $file,
'title' => 'Missing Component File'));
$this->controller->render('../errors/missingComponentFile');
exit();
}
/**
* Renders the Missing Component class web page.
*
*/
function missingComponentClass($params)
{
extract($params);
$this->controller->webroot = $this->_webroot();
$this->controller->set(array('controller' => $className,
'component' => $component,
'file' => $file,
'title' => 'Missing Component Class'));
$this->controller->render('../errors/missingComponentClass');
exit();
}
/**
* Enter description here...
*
* @return unknown
*/
function _webroot()
{
$dispatcher =& new Dispatcher();
$dispatcher->baseUrl();
return $dispatcher->webroot;
}
}
?>