FundacionLQDVI_WebCongresos/www/components/com_kunena/lib/kunena.debug.php

171 lines
4.7 KiB
PHP
Raw Normal View History

<?php
/**
* @version $Id: kunena.debug.php 2059 2010-03-14 03:42:18Z mahagr $
* Kunena Component
* @package Kunena
*
* @Copyright (C) 2008 - 2009 Kunena Team All rights reserved
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.com
*
* Based on FireBoard Component
* @Copyright (C) 2008 Best Of Joomla All rights reserved
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.bestofjoomla.com
**/
defined( '_JEXEC' ) or die('Restricted access');
$kunena_db = &JFactory::getDBO();
// Debugging helpers
// First lets set some assertion settings for the code
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 1);
assert_options(ASSERT_BAIL, 1);
assert_options(ASSERT_CALLBACK, 'debug_assert_callback');
// Default assert call back funtion
// If certain things fail hard we MUST know about it
function debug_assert_callback($script, $line, $message) {
echo "<h1>Assertion failed!</h1><br />
Script: <strong>$script</strong><br />
Line: <strong>$line</strong><br />
Condition: <br /><pre>$message</pre>";
// Now display the call stack
echo debug_callstackinfo();
}
// Production error handling
function trigger_dberror($text = '', $back=0)
{
$kunena_db = &JFactory::getDBO();
$dberror = $kunena_db->stderr(true);
echo debug_callstackinfo($back+1);
require_once (KUNENA_PATH_LIB .DS. 'kunena.version.php');
$kunenaVersion = CKunenaVersion::version();
$kunenaPHPVersion = CKunenaVersion::PHPVersion();
$kunenaMySQLVersion = CKunenaVersion::MySQLVersion();
?>
<!-- Version Info -->
<div class="fbfooter">
Installed version: <?php echo $kunenaVersion; ?> | php <?php echo $kunenaPHPVersion; ?> | mysql <?php echo $kunenaMySQLVersion; ?>
</div>
<!-- /Version Info -->
<?php
kunena_error($text.'<br /><br />'.$dberror, E_USER_ERROR, $back+1);
}
function check_dberror($text='', $back=0)
{
$kunena_db = &JFactory::getDBO();
if ($kunena_db->getErrorNum() != 0)
{
trigger_dberror($text, $back+1);
}
}
function check_dbwarning($text='')
{
$kunena_db = &JFactory::getDBO();
if ($kunena_db->getErrorNum() != 0)
{
trigger_dbwarning($text);
}
}
function trigger_dbwarning($text = '')
{
$kunena_db = &JFactory::getDBO();
kunena_error($text.'<br />'.$kunena_db->stderr(true), E_USER_WARNING);
}
// Little helper to created a formated output of variables
function debug_vars($varlist)
{
$output = '<table border=1><tr> <th>variable</th> <th>value</th> </tr>';
foreach( $varlist as $key => $value)
{
if (is_array ($value) )
{
$output .= '<tr><td>$'.$key .'</td><td>';
if ( sizeof($value)>0 )
{
$dberror = false;
$output .= '"<table border=1><tr> <th>key</th> <th>value</th> </tr>';
foreach ($value as $skey => $svalue)
{
if (is_array ($svalue) )
{
$output .= '<tr><td>[' . $skey .']</td><td>Nested Array</td></tr>';
}
else if (is_object($svalue))
{
$objvarlist = get_object_vars($svalue);
// recursive function call
debug_vars($objvarlist);
}
else
{
$dberror = ($svalue == "trigger_dberror");
$output .= '<tr><td>$' . $skey .'</td><td>"'. $svalue .'"</td></tr>';
}
}
if ($dberror) {
$kunena_db = &JFactory::getDBO();
jimport('geshi.geshi');
$sql = $kunena_db->_sql;
if(file_exists(JPATH_ROOT.DS.'libraries'.DS.'geshi'.DS.'geshi'.DS."mysql.php")) {
$geshi = new GeSHi($sql, "mysql");
$geshi->enable_keyword_links(false);
$geshi->set_header_type(GESHI_HEADER_NONE);
$sql = $geshi->parse_code();
}
$output .= '<tr><td>Query</td><td>'. $sql.'</td></tr>';
$output .= '<tr><td>Db error</td><td>'. $kunena_db->getErrorMsg().'</td></tr>';
}
$output .= '</table>';
}
else
{
$output .= 'EMPTY';
}
$output .= '</td></tr>';
}
else if (is_object($value))
{
$objvarlist = get_object_vars($value);
// recursive function call
debug_vars($objvarlist);
}
else
{
$output .= '<tr><td>$' . $key .'</td><td>"'. $value .'"</td></tr>';
}
}
$output .= '</table>';
return $output;
}
// Show the callstack to this point in a decent format
function debug_callstackinfo($back=1)
{
$trace = array_slice(debug_backtrace(), $back);
return debug_vars($trace);
}
function kunena_error($message, $level=E_USER_NOTICE, $back=1) {
$trace = debug_backtrace();
$caller = $trace[$back];
trigger_error($message.' in <strong>'.$caller['function'].'()</strong> called from <strong>'.$caller['file'].'</strong> on line <strong>'.$caller['line'].'</strong>'."\n<br /><br />Error reported", $level);
}
?>