git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
175 lines
4.4 KiB
PHP
175 lines
4.4 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: error.php 14401 2010-01-26 14:10:00Z louis $
|
|
* @package Joomla.Framework
|
|
* @subpackage Document
|
|
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
|
|
* @license GNU/GPL, see LICENSE.php
|
|
* Joomla! is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
* See COPYRIGHT.php for copyright notices and details.
|
|
*/
|
|
|
|
// Check to ensure this file is within the rest of the framework
|
|
defined('JPATH_BASE') or die();
|
|
|
|
/**
|
|
* DocumentError class, provides an easy interface to parse and display an error page
|
|
*
|
|
* @package Joomla.Framework
|
|
* @subpackage Document
|
|
* @since 1.5
|
|
*/
|
|
class JDocumentError extends JDocument
|
|
{
|
|
/**
|
|
* Error Object
|
|
* @var object
|
|
*/
|
|
var $_error;
|
|
|
|
/**
|
|
* Class constructor
|
|
*
|
|
* @access protected
|
|
* @param string $type (either html or tex)
|
|
* @param array $attributes Associative array of attributes
|
|
*/
|
|
function __construct($options = array())
|
|
{
|
|
parent::__construct($options);
|
|
|
|
//set mime type
|
|
$this->_mime = 'text/html';
|
|
|
|
//set document type
|
|
$this->_type = 'error';
|
|
}
|
|
|
|
/**
|
|
* Set error object
|
|
*
|
|
* @access public
|
|
* @param object $error Error object to set
|
|
* @return boolean True on success
|
|
* @since 1.5
|
|
*/
|
|
function setError($error)
|
|
{
|
|
if (JError::isError($error)) {
|
|
$this->_error = & $error;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Render the document
|
|
*
|
|
* @access public
|
|
* @param boolean $cache If true, cache the output
|
|
* @param array $params Associative array of attributes
|
|
*/
|
|
function render( $cache = false, $params = array())
|
|
{
|
|
// If no error object is set return null
|
|
if (!isset($this->_error)) {
|
|
return;
|
|
}
|
|
|
|
//Set the status header
|
|
JResponse::setHeader('status', $this->_error->code.' '.str_replace( "\n", ' ', $this->_error->message ));
|
|
$file = 'error.php';
|
|
|
|
// check template
|
|
$directory = isset($params['directory']) ? $params['directory'] : 'templates';
|
|
$template = isset($params['template']) ? JFilterInput::clean($params['template'], 'cmd') : 'system';
|
|
|
|
if ( !file_exists( $directory.DS.$template.DS.$file) ) {
|
|
$template = 'system';
|
|
}
|
|
|
|
//set variables
|
|
$this->baseurl = JURI::base(true);
|
|
$this->template = $template;
|
|
$this->debug = isset($params['debug']) ? $params['debug'] : false;
|
|
$this->error = $this->_error;
|
|
|
|
// load
|
|
$data = $this->_loadTemplate($directory.DS.$template, $file);
|
|
|
|
parent::render();
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* Load a template file
|
|
*
|
|
* @param string $template The name of the template
|
|
* @param string $filename The actual filename
|
|
* @return string The contents of the template
|
|
*/
|
|
function _loadTemplate($directory, $filename)
|
|
{
|
|
$contents = '';
|
|
|
|
//Check to see if we have a valid template file
|
|
if ( file_exists( $directory.DS.$filename ) )
|
|
{
|
|
//store the file path
|
|
$this->_file = $directory.DS.$filename;
|
|
|
|
//get the file content
|
|
ob_start();
|
|
require_once $directory.DS.$filename;
|
|
$contents = ob_get_contents();
|
|
ob_end_clean();
|
|
}
|
|
|
|
return $contents;
|
|
}
|
|
|
|
function renderBacktrace()
|
|
{
|
|
$contents = null;
|
|
$backtrace = $this->_error->getTrace();
|
|
if( is_array( $backtrace ) )
|
|
{
|
|
ob_start();
|
|
$j = 1;
|
|
echo '<table border="0" cellpadding="0" cellspacing="0" class="Table">';
|
|
echo ' <tr>';
|
|
echo ' <td colspan="3" align="left" class="TD"><strong>Call stack</strong></td>';
|
|
echo ' </tr>';
|
|
echo ' <tr>';
|
|
echo ' <td class="TD"><strong>#</strong></td>';
|
|
echo ' <td class="TD"><strong>Function</strong></td>';
|
|
echo ' <td class="TD"><strong>Location</strong></td>';
|
|
echo ' </tr>';
|
|
for( $i = count( $backtrace )-1; $i >= 0 ; $i-- )
|
|
{
|
|
echo ' <tr>';
|
|
echo ' <td class="TD">'.$j.'</td>';
|
|
if( isset( $backtrace[$i]['class'] ) ) {
|
|
echo ' <td class="TD">'.$backtrace[$i]['class'].$backtrace[$i]['type'].$backtrace[$i]['function'].'()</td>';
|
|
} else {
|
|
echo ' <td class="TD">'.$backtrace[$i]['function'].'()</td>';
|
|
}
|
|
if( isset( $backtrace[$i]['file'] ) ) {
|
|
echo ' <td class="TD">'.$backtrace[$i]['file'].':'.$backtrace[$i]['line'].'</td>';
|
|
} else {
|
|
echo ' <td class="TD"> </td>';
|
|
}
|
|
echo ' </tr>';
|
|
$j++;
|
|
}
|
|
echo '</table>';
|
|
$contents = ob_get_contents();
|
|
ob_end_clean();
|
|
}
|
|
return $contents;
|
|
}
|
|
} |