Bug #23476 ยป 15589.diff
t3lib/class.t3lib_div.php (working copy) | ||
---|---|---|
*
|
||
*************************/
|
||
/* Deprecated since 4.5, use t3lib_utility_Debug */
|
||
/**
|
||
* Returns a string with a list of ascii-values for the first $characters characters in $string
|
||
* Usage: 0
|
||
... | ... | |
* @param string String to show ASCII value for
|
||
* @param integer Number of characters to show
|
||
* @return string The string with ASCII values in separated by a space char.
|
||
* @deprecated since TYPO3 4.5 - Use t3lib_utility_Debug::debug_ordvalue instead
|
||
*/
|
||
public static function debug_ordvalue($string,$characters=100) {
|
||
if(strlen($string) < $characters) $characters = strlen($string);
|
||
for ($i=0; $i<$characters; $i++) {
|
||
$valuestring.=' '.ord(substr($string,$i,1));
|
||
}
|
||
return trim($valuestring);
|
||
public static function debug_ordvalue($string, $characters = 100) {
|
||
self::logDeprecatedFunction();
|
||
return t3lib_utility_Debug::debug_ordvalue($string, $characters);
|
||
}
|
||
/**
|
||
... | ... | |
*
|
||
* @param mixed Array to view
|
||
* @return string HTML output
|
||
* @deprecated since TYPO3 4.5 - Use t3lib_utility_Debug::view_array instead
|
||
*/
|
||
public static function view_array($array_in) {
|
||
if (is_array($array_in)) {
|
||
$result='
|
||
<table border="1" cellpadding="1" cellspacing="0" bgcolor="white">';
|
||
if (count($array_in) == 0) {
|
||
$result.= '<tr><td><font face="Verdana,Arial" size="1"><strong>EMPTY!</strong></font></td></tr>';
|
||
} else {
|
||
foreach ($array_in as $key => $val) {
|
||
$result.= '<tr>
|
||
<td valign="top"><font face="Verdana,Arial" size="1">'.htmlspecialchars((string)$key).'</font></td>
|
||
<td>';
|
||
if (is_array($val)) {
|
||
$result.=self::view_array($val);
|
||
} elseif (is_object($val)) {
|
||
$string = '';
|
||
if (method_exists($val, '__toString')) {
|
||
$string .= get_class($val) . ': ' . (string) $val;
|
||
} else {
|
||
$string .= print_r($val, TRUE);
|
||
}
|
||
$result .= '<font face="Verdana,Arial" size="1" color="red">'.nl2br(htmlspecialchars($string)).'<br /></font>';
|
||
} else {
|
||
if (gettype($val) == 'object') {
|
||
$string = 'Unknown object';
|
||
} else {
|
||
$string = (string)$val;
|
||
}
|
||
$result.= '<font face="Verdana,Arial" size="1" color="red">'.nl2br(htmlspecialchars($string)).'<br /></font>';
|
||
}
|
||
$result.= '</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
$result.= '</table>';
|
||
} else {
|
||
$result = '<table border="1" cellpadding="1" cellspacing="0" bgcolor="white">
|
||
<tr>
|
||
<td><font face="Verdana,Arial" size="1" color="red">'.nl2br(htmlspecialchars((string)$array_in)).'<br /></font></td>
|
||
</tr>
|
||
</table>'; // Output it as a string.
|
||
}
|
||
return $result;
|
||
public static function view_array($array_in) {
|
||
self::logDeprecatedFunction();
|
||
return t3lib_utility_Debug::view_array($array_in);
|
||
}
|
||
/**
|
||
... | ... | |
* @param mixed Array to print visually (in a table).
|
||
* @return void
|
||
* @see view_array()
|
||
* @deprecated since TYPO3 4.5 - Use t3lib_utility_Debug::print_array instead
|
||
*/
|
||
public static function print_array($array_in) {
|
||
echo self::view_array($array_in);
|
||
public static function print_array($array_in) {
|
||
self::logDeprecatedFunction();
|
||
t3lib_utility_Debug::print_array($array_in);
|
||
}
|
||
/**
|
||
... | ... | |
* @param string The header.
|
||
* @param string Group for the debug console
|
||
* @return void
|
||
* @deprecated since TYPO3 4.5 - Use t3lib_utility_Debug::debug instead
|
||
*/
|
||
public static function debug($var = '', $header = '', $group = 'Debug') {
|
||
// buffer the output of debug if no buffering started before
|
||
if (ob_get_level()==0) {
|
||
ob_start();
|
||
}
|
||
$debug = '';
|
||
if ($header) {
|
||
$debug .= '
|
||
<table class="typo3-debug" border="0" cellpadding="0" cellspacing="0" bgcolor="white" style="border:0px; margin-top:3px; margin-bottom:3px;">
|
||
<tr>
|
||
<td style="background-color:#bbbbbb; font-family: verdana,arial; font-weight: bold; font-size: 10px;">' .
|
||
htmlspecialchars((string) $header) .
|
||
'</td>
|
||
</tr>
|
||
<tr>
|
||
<td>';
|
||
}
|
||
if (is_array($var)) {
|
||
$debug .= self::view_array($var);
|
||
} elseif (is_object($var)) {
|
||
$debug .= '<strong>|Object:<pre>';
|
||
$debug .= print_r($var, TRUE);
|
||
$debug .= '</pre>|</strong>';
|
||
} elseif ((string) $var !== '') {
|
||
$debug .= '<strong>|' . htmlspecialchars((string)$var) . '|</strong>';
|
||
} else {
|
||
$debug .= '<strong>| debug |</strong>';
|
||
}
|
||
if ($header) {
|
||
$debug .= '
|
||
</td>
|
||
</tr>
|
||
</table>';
|
||
}
|
||
if (TYPO3_MODE === 'BE') {
|
||
$group = htmlspecialchars($group);
|
||
if ($header !== '') {
|
||
$tabHeader = htmlspecialchars($header);
|
||
} else {
|
||
$tabHeader = 'Debug';
|
||
}
|
||
if (is_object($var)) {
|
||
$debug = str_replace(
|
||
array('"', '/', '<', "\n", "\r"),
|
||
array('\"', '\/', '\<', '<br />', ''),
|
||
$debug
|
||
);
|
||
} else {
|
||
$debug = str_replace(
|
||
array('"', '/', '<', "\n", "\r"),
|
||
array('\"', '\/', '\<', '', ''),
|
||
$debug
|
||
);
|
||
}
|
||
$script = '
|
||
(function debug() {
|
||
var debugMessage = "' . $debug . '";
|
||
var header = "' . $tabHeader . '";
|
||
var group = "' . $group . '";
|
||
if (typeof Ext !== "object" && (top && typeof top.Ext !== "object")) {
|
||
document.write(debugMessage);
|
||
return;
|
||
}
|
||
if (top && typeof Ext !== "object") {
|
||
Ext = top.Ext;
|
||
}
|
||
Ext.onReady(function() {
|
||
var TYPO3ViewportInstance = null;
|
||
if (top && top.TYPO3 && typeof top.TYPO3.Backend === "object") {
|
||
TYPO3ViewportInstance = top.TYPO3.Backend;
|
||
} else if (typeof TYPO3 === "object" && typeof TYPO3.Backend === "object") {
|
||
TYPO3ViewportInstance = TYPO3.Backend;
|
||
}
|
||
if (TYPO3ViewportInstance !== null) {
|
||
TYPO3ViewportInstance.DebugConsole.addTab(debugMessage, header, group);
|
||
} else {
|
||
document.write(debugMessage);
|
||
}
|
||
});
|
||
})();
|
||
';
|
||
echo self::wrapJS($script);
|
||
} else {
|
||
echo $debug;
|
||
}
|
||
public static function debug($var = '', $header = '', $group = 'Debug') {
|
||
self::logDeprecatedFunction();
|
||
t3lib_utility_Debug::debug($var, $header, $group);
|
||
}
|
||
/**
|
||
* Displays the "path" of the function call stack in a string, using debug_backtrace
|
||
*
|
||
* @return string
|
||
* @deprecated since TYPO3 4.5 - Use t3lib_utility_Debug::debug_trail instead
|
||
*/
|
||
public static function debug_trail() {
|
||
$trail = debug_backtrace();
|
||
$trail = array_reverse($trail);
|
||
array_pop($trail);
|
||
$path = array();
|
||
foreach($trail as $dat) {
|
||
$path[] = $dat['class'].$dat['type'].$dat['function'].'#'.$dat['line'];
|
||
}
|
||
return implode(' // ',$path);
|
||
public static function debug_trail() {
|
||
self::logDeprecatedFunction();
|
||
return t3lib_utility_Debug::debug_trail();
|
||
}
|
||
/**
|
||
... | ... | |
* @param string Table header
|
||
* @param boolean If TRUE, will return content instead of echo'ing out.
|
||
* @return void Outputs to browser.
|
||
* @deprecated since TYPO3 4.5 - Use t3lib_utility_Debug::debugRows instead
|
||
*/
|
||
public static function debugRows($rows,$header='',$returnHTML=FALSE) {
|
||
if (is_array($rows)) {
|
||
reset($rows);
|
||
$firstEl = current($rows);
|
||
if (is_array($firstEl)) {
|
||
$headerColumns = array_keys($firstEl);
|
||
$tRows = array();
|
||
// Header:
|
||
$tRows[] = '<tr><td colspan="'.count($headerColumns).'" style="background-color:#bbbbbb; font-family: verdana,arial; font-weight: bold; font-size: 10px;"><strong>'.htmlspecialchars($header).'</strong></td></tr>';
|
||
$tCells = array();
|
||
foreach($headerColumns as $key) {
|
||
$tCells[] = '
|
||
<td><font face="Verdana,Arial" size="1"><strong>'.htmlspecialchars($key).'</strong></font></td>';
|
||
}
|
||
$tRows[] = '
|
||
<tr>'.implode('',$tCells).'
|
||
</tr>';
|
||
// Rows:
|
||
foreach($rows as $singleRow) {
|
||
$tCells = array();
|
||
foreach($headerColumns as $key) {
|
||
$tCells[] = '
|
||
<td><font face="Verdana,Arial" size="1">'.(is_array($singleRow[$key]) ? self::debugRows($singleRow[$key],'',TRUE) : htmlspecialchars($singleRow[$key])).'</font></td>';
|
||
}
|
||
$tRows[] = '
|
||
<tr>'.implode('',$tCells).'
|
||
</tr>';
|
||
}
|
||
$table = '
|
||
<table border="1" cellpadding="1" cellspacing="0" bgcolor="white">'.implode('',$tRows).'
|
||
</table>';
|
||
if ($returnHTML) return $table; else echo $table;
|
||
} else debug('Empty array of rows',$header);
|
||
} else {
|
||
debug('No array of rows',$header);
|
||
}
|
||
public static function debugRows($rows, $header = '', $returnHTML = FALSE) {
|
||
self::logDeprecatedFunction();
|
||
t3lib_utility_Debug::debugRows($rows, $header, $returnHTML);
|
||
}
|
||
... | ... | |
/*************************
|
||
*
|
||
* SYSTEM INFORMATION
|
t3lib/core_autoload.php (working copy) | ||
---|---|---|
't3lib_utility_client' => PATH_t3lib . 'utility/class.t3lib_utility_client.php',
|
||
't3lib_utility_http' => PATH_t3lib . 'utility/class.t3lib_utility_http.php',
|
||
't3lib_utility_mail' => PATH_t3lib . 'utility/class.t3lib_utility_mail.php',
|
||
't3lib_utility_debug' => PATH_t3lib . 'utility/class.t3lib_utility_debug.php',
|
||
't3lib_spritemanager' => PATH_t3lib . 'class.t3lib_spritemanager.php',
|
||
't3lib_spritemanager_spritegenerator' => PATH_t3lib . 'spritemanager/class.t3lib_spritemanager_spritegenerator.php',
|
||
't3lib_spritemanager_spriteicongenerator' => PATH_t3lib . 'interfaces/interface.t3lib_spritemanager_spriteicongenerator.php',
|
t3lib/utility/class.t3lib_utility_debug.php (revision 0) | ||
---|---|---|
<?php
|
||
/***************************************************************
|
||
* Copyright notice
|
||
*
|
||
* (c) 2010 Steffen Kamper <steffen@typo3.org>
|
||
* All rights reserved
|
||
*
|
||
* This script is part of the TYPO3 project. The TYPO3 project is
|
||
* free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
* the Free Software Foundation; either version 2 of the License, or
|
||
* (at your option) any later version.
|
||
*
|
||
* The GNU General Public License can be found at
|
||
* http://www.gnu.org/copyleft/gpl.html.
|
||
* A copy is found in the textfile GPL.txt and important notices to the license
|
||
* from the author is found in LICENSE.txt distributed with these scripts.
|
||
*
|
||
*
|
||
* This script is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* GNU General Public License for more details.
|
||
*
|
||
* This copyright notice MUST APPEAR in all copies of the script!
|
||
***************************************************************/
|
||
/**
|
||
* Class to handle debug
|
||
*
|
||
* $Id: $
|
||
*
|
||
*
|
||
* @author Steffen Kamper <steffen@typo3.org>
|
||
* @package TYPO3
|
||
* @subpackage t3lib
|
||
*/
|
||
class t3lib_utility_Debug {
|
||
/**
|
||
* Template for debug output
|
||
*
|
||
* @var string
|
||
*/
|
||
const DEBUG_TABLE_TEMPLATE = '
|
||
<table class="typo3-debug" border="0" cellpadding="0" cellspacing="0" bgcolor="white" style="border:0px; margin-top:3px; margin-bottom:3px;">
|
||
<tr>
|
||
<td style="background-color:#bbbbbb; font-family: verdana,arial; font-weight: bold; font-size: 10px;">%s</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%s
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
';
|
||
public static function debug($var = '', $header = '', $group = 'Debug') {
|
||
// buffer the output of debug if no buffering started before
|
||
if (ob_get_level() == 0) {
|
||
ob_start();
|
||
}
|
||
$debug = '';
|
||
if (is_array($var)) {
|
||
$debug .= self::view_array($var);
|
||
} elseif (is_object($var)) {
|
||
$debug .= '<strong>|Object:<pre>';
|
||
$debug .= print_r($var, TRUE);
|
||
$debug .= '</pre>|</strong>';
|
||
} elseif ((string) $var !== '') {
|
||
$debug .= '<strong>|' . htmlspecialchars((string) $var) . '|</strong>';
|
||
} else {
|
||
$debug .= '<strong>| debug |</strong>';
|
||
}
|
||
if ($header) {
|
||
$debug = sprintf(self::DEBUG_TABLE_TEMPLATE, htmlspecialchars((string) $header), $debug);
|
||
}
|
||
if (TYPO3_MODE === 'BE') {
|
||
$group = htmlspecialchars($group);
|
||
if ($header !== '') {
|
||
$tabHeader = htmlspecialchars($header);
|
||
} else {
|
||
$tabHeader = 'Debug';
|
||
}
|
||
if (is_object($var)) {
|
||
$debug = str_replace(array (
|
||
'"', '/', '<', "\n", "\r"
|
||
), array (
|
||
'\"', '\/', '\<', '<br />', ''
|
||
), $debug);
|
||
} else {
|
||
$debug = str_replace(array (
|
||
'"', '/', '<', "\n", "\r"
|
||
), array (
|
||
'\"', '\/', '\<', '', ''
|
||
), $debug);
|
||
}
|
||
$script = '
|
||
(function debug() {
|
||
var debugMessage = "' . $debug . '";
|
||
var header = "' . $tabHeader . '";
|
||
var group = "' . $group . '";
|
||
if (typeof Ext !== "object" && (top && typeof top.Ext !== "object")) {
|
||
document.write(debugMessage);
|
||
return;
|
||
}
|
||
if (top && typeof Ext !== "object") {
|
||
Ext = top.Ext;
|
||
}
|
||
Ext.onReady(function() {
|
||
var TYPO3ViewportInstance = null;
|
||
if (top && top.TYPO3 && typeof top.TYPO3.Backend === "object") {
|
||
TYPO3ViewportInstance = top.TYPO3.Backend;
|
||
} else if (typeof TYPO3 === "object" && typeof TYPO3.Backend === "object") {
|
||
TYPO3ViewportInstance = TYPO3.Backend;
|
||
}
|
||
if (TYPO3ViewportInstance !== null) {
|
||
TYPO3ViewportInstance.DebugConsole.addTab(debugMessage, header, group);
|
||
} else {
|
||
document.write(debugMessage);
|
||
}
|
||
});
|
||
})();
|
||
';
|
||
echo t3lib_div::wrapJS($script);
|
||
} else {
|
||
echo $debug;
|
||
}
|
||
}
|
||
/**
|
||
* Displays the "path" of the function call stack in a string, using debug_backtrace
|
||
*
|
||
* @return string
|
||
*/
|
||
public static function debug_trail() {
|
||
$trail = debug_backtrace();
|
||
$trail = array_reverse($trail);
|
||
array_pop($trail);
|
||
$path = array ();
|
||
foreach ($trail as $dat) {
|
||
$path[] = $dat['class'] . $dat['type'] . $dat['function'] . '#' . $dat['line'];
|
||
}
|
||
return implode(' // ', $path);
|
||
}
|
||
/**
|
||
* Displays an array as rows in a table. Useful to debug output like an array of database records.
|
||
*
|
||
* @param mixed Array of arrays with similar keys
|
||
* @param string Table header
|
||
* @param boolean If TRUE, will return content instead of echo'ing out.
|
||
* @return void Outputs to browser.
|
||
*/
|
||
public static function debugRows($rows, $header = '', $returnHTML = FALSE) {
|
||
if (is_array($rows)) {
|
||
reset($rows);
|
||
$firstEl = current($rows);
|
||
if (is_array($firstEl)) {
|
||
$headerColumns = array_keys($firstEl);
|
||
$tRows = array ();
|
||
// Header:
|
||
$tRows[] = '<tr><td colspan="' . count($headerColumns) .
|
||
'" style="background-color:#bbbbbb; font-family: verdana,arial; font-weight: bold; font-size: 10px;"><strong>' .
|
||
htmlspecialchars($header) . '</strong></td></tr>';
|
||
$tCells = array ();
|
||
foreach ($headerColumns as $key) {
|
||
$tCells[] = '
|
||
<td><font face="Verdana,Arial" size="1"><strong>' . htmlspecialchars($key) . '</strong></font></td>';
|
||
}
|
||
$tRows[] = '
|
||
<tr>' . implode('', $tCells) . '
|
||
</tr>';
|
||
// Rows:
|
||
foreach ($rows as $singleRow) {
|
||
$tCells = array ();
|
||
foreach ($headerColumns as $key) {
|
||
$tCells[] = '
|
||
<td><font face="Verdana,Arial" size="1">' .
|
||
(is_array($singleRow[$key]) ? self::debugRows($singleRow[$key], '', TRUE) : htmlspecialchars($singleRow[$key])) .
|
||
'</font></td>';
|
||
}
|
||
$tRows[] = '
|
||
<tr>' . implode('', $tCells) . '
|
||
</tr>';
|
||
}
|
||
$table = '
|
||
<table border="1" cellpadding="1" cellspacing="0" bgcolor="white">' . implode('', $tRows) . '
|
||
</table>';
|
||
if ($returnHTML)
|
||
return $table;
|
||
else
|
||
echo $table;
|
||
} else
|
||
debug('Empty array of rows', $header);
|
||
} else {
|
||
debug('No array of rows', $header);
|
||
}
|
||
}
|
||
public static function debug_ordvalue($string, $characters = 100) {
|
||
if (strlen($string) < $characters)
|
||
$characters = strlen($string);
|
||
for ($i = 0; $i < $characters; $i++) {
|
||
$valuestring .= ' ' . ord(substr($string, $i, 1));
|
||
}
|
||
return trim($valuestring);
|
||
}
|
||
/**
|
||
* Returns HTML-code, which is a visual representation of a multidimensional array
|
||
* use t3lib_div::print_array() in order to print an array
|
||
* Returns false if $array_in is not an array
|
||
* Usage: 31
|
||
*
|
||
* @param mixed Array to view
|
||
* @return string HTML output
|
||
*/
|
||
public static function view_array($array_in) {
|
||
if (is_array($array_in)) {
|
||
$result = '
|
||
<table border="1" cellpadding="1" cellspacing="0" bgcolor="white">';
|
||
if (count($array_in) == 0) {
|
||
$result .= '<tr><td><font face="Verdana,Arial" size="1"><strong>EMPTY!</strong></font></td></tr>';
|
||
} else {
|
||
foreach ($array_in as $key => $val) {
|
||
$result .= '<tr>
|
||
<td valign="top"><font face="Verdana,Arial" size="1">' . htmlspecialchars((string) $key) . '</font></td>
|
||
<td>';
|
||
if (is_array($val)) {
|
||
$result .= self::view_array($val);
|
||
} elseif (is_object($val)) {
|
||
$string = '';
|
||
if (method_exists($val, '__toString')) {
|
||
$string .= get_class($val) . ': ' . (string) $val;
|
||
} else {
|
||
$string .= print_r($val, TRUE);
|
||
}
|
||
$result .= '<font face="Verdana,Arial" size="1" color="red">' .
|
||
nl2br(htmlspecialchars($string)) .
|
||
'<br /></font>';
|
||
} else {
|
||
if (gettype($val) == 'object') {
|
||
$string = 'Unknown object';
|
||
} else {
|
||
$string = (string) $val;
|
||
}
|
||
$result .= '<font face="Verdana,Arial" size="1" color="red">' .
|
||
nl2br(htmlspecialchars($string)) .
|
||
'<br /></font>';
|
||
}
|
||
$result .= '</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
$result .= '</table>';
|
||
} else {
|
||
$result = '<table border="1" cellpadding="1" cellspacing="0" bgcolor="white">
|
||
<tr>
|
||
<td><font face="Verdana,Arial" size="1" color="red">' .
|
||
nl2br(htmlspecialchars((string) $array_in)) .
|
||
'<br /></font></td>
|
||
</tr>
|
||
</table>'; // Output it as a string.
|
||
}
|
||
return $result;
|
||
}
|
||
/**
|
||
* Prints an array
|
||
* Usage: 6
|
||
*
|
||
* @param mixed Array to print visually (in a table).
|
||
* @return void
|
||
* @see view_array()
|
||
*/
|
||
public static function print_array($array_in) {
|
||
echo self::view_array($array_in);
|
||
}
|
||
}
|
||
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/utility/class.t3lib_utility_debug.php']) {
|
||
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/utility/class.t3lib_utility_debug.php']);
|
||
}
|
||
?>
|