Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1123658
in-portal
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Tue, Sep 2, 12:49 PM
Size
14 KB
Mime Type
text/x-diff
Expires
Thu, Sep 4, 12:49 PM (1 d, 6 h)
Engine
blob
Format
Raw Data
Handle
725804
Attached To
rINP In-Portal
in-portal
View Options
Index: branches/5.2.x/core/admin_templates/logs/system_logs/system_log_edit.tpl
===================================================================
--- branches/5.2.x/core/admin_templates/logs/system_logs/system_log_edit.tpl (revision 16842)
+++ branches/5.2.x/core/admin_templates/logs/system_logs/system_log_edit.tpl (revision 16843)
@@ -1,218 +1,223 @@
<inp2:adm_SetPopupSize width="1000" height="650"/>
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" section="in-portal:system_logs" prefix="system-log" title_preset="system_log_edit"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Close" escape="1"/>', function() {
submit_event('system-log', 'OnCancel');
}
));
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton( new ToolBarButton('prev', '<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>', function() {
go_to_id('system-log', '<inp2:system-log_PrevId/>');
}
));
a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
go_to_id('system-log', '<inp2:system-log_NextId/>');
}
));
a_toolbar.Render();
<inp2:m_if check="system-log_IsSingle">
a_toolbar.HideButton('prev');
a_toolbar.HideButton('next');
a_toolbar.HideButton('sep1');
<inp2:m_else/>
<inp2:m_if check="system-log_IsLast">
a_toolbar.DisableButton('next');
</inp2:m_if>
<inp2:m_if check="system-log_IsFirst">
a_toolbar.DisableButton('prev');
</inp2:m_if>
</inp2:m_if>
</script>
</td>
</tr>
</tbody>
</table>
<inp2:system-log_SaveWarning name="grid_save_warning"/>
<inp2:system-log_ErrorWarning name="form_error_warning"/>
<style type="text/css">
.control-cell {
font-size: 12px;
}
div.highlight-area {
border: 1px solid black;
padding: 8px;
font-family: serif;
background-color: #F6F6F6;
overflow: auto;
margin-top: 4px;
}
+ div.highlight-area pre.sf-dump {
+ margin: 0;
+ padding: 0;
+ }
+
.log_backtrace {
margin: 0;
padding-left: 25px;
}
div.expandable-area {
margin: 4px 0 4px 0;
}
div.expandable-area div.highlight-area:first-child {
margin-bottom: 4px;
}
</style>
<inp2:m_DefineElement name="inp_serialized_label">
<inp2:m_RenderElement design="form_row" pass_params="1">
<td class="control-cell" valign="top">
<div class="highlight-area" style="width: 760px; height: 234px;">
<inp2:{$prefix}_PrintArray field="$field"/>
</div>
</td>
</inp2:m_RenderElement>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="backtrace_element" expandable="">
<li>
<inp2:m_if check="m_Param" name="has_args">
<inp2:m_SetParam expandable="1"/>
<inp2:m_elseif check="m_Param" name="has_code_fragment"/>
<inp2:m_SetParam expandable="1"/>
</inp2:m_if>
<inp2:m_if check="m_Param" name="expandable">
<a href="#" class="expandable" title="<inp2:m_Phrase name='hint:la_LogBacktraceFunction' html_escape='1'/>" trace_index="<inp2:m_Param name='index'/>"><inp2:m_Phrase name="la_LogBacktraceFunction"/>:</a> <inp2:m_Param name="file_info"/>
<div style="display: none;" class="expandable-area">
<inp2:m_if check="m_Param" name="has_args">
<inp2:m_Phrase name="la_text_Arguments"/>:
<div class="highlight-area"><inp2:m_Param name="args"/></div>
</inp2:m_if>
<inp2:m_if check="m_Param" name="has_code_fragment">
<a href="#" class="expandable"><inp2:m_Phrase name="la_btn_ToggleCode"/></a>
<div class="highlight-area expandable-area" style="display: none;"><inp2:m_Param name="code_fragment"/></div>
</inp2:m_if>
</div>
<inp2:m_else/>
<inp2:m_Phrase name="la_LogBacktraceFunction"/>: <inp2:m_Param name="file_info"/>
</inp2:m_if>
</li>
</inp2:m_DefineElement>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="la_title_General"/>
<inp2:m_RenderElement name="inp_id_label" prefix="system-log" field="LogId" title="la_fld_Id"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogUniqueId"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogLevel"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogType"/>
<inp2:m_if check="system-log_Field" name="LogCode" db="db">
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogCode"/>
</inp2:m_if>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogMessage" no_special="no_special"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogTimestamp"/>
<inp2:m_RenderElement name="subsection" title="la_title_LogRequest"/>
<inp2:m_if check="system-log_Field" name="IpAddress" db="db">
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="IpAddress"/>
</inp2:m_if>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogHostname"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogInterface"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogRequestSource"/>
<inp2:m_RenderElement design="form_row" prefix="system-log" field="LogRequestURI">
<td class="control-cell" valign="top">
<inp2:$prefix_RequestURI html_escape="1"/>
</td>
</inp2:m_RenderElement>
<inp2:m_if check="system-log_Field" name="LogRequestData" db="db">
<inp2:m_RenderElement name="inp_serialized_label" prefix="system-log" field="LogRequestData"/>
</inp2:m_if>
<inp2:m_RenderElement name="subsection" title="la_title_LogSession"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="Username"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogSessionKey"/>
<inp2:m_if check="system-log_Field" name="LogSessionData" db="db">
<inp2:m_RenderElement name="inp_serialized_label" prefix="system-log" field="LogSessionData"/>
</inp2:m_if>
<inp2:m_RenderElement name="subsection" title="la_title_LogSource"/>
<inp2:m_RenderElement design="form_row" prefix="system-log" field="LogSourceFilename">
<td class="control-cell" valign="top">
<strong><inp2:$prefix_Filename/></strong> <inp2:m_Phrase name="la_OnLine"/> <strong><inp2:$prefix_Field field="LogSourceFileLine"/></strong>
<inp2:m_if check="{$prefix}_Field" name="LogCodeFragment" db="db">
<a href="#" class="expandable"><inp2:m_Phrase name="la_btn_ToggleCode"/></a>
<div class="highlight-area expandable-area" style="display: none;"><inp2:$prefix_PrintCodeFragment/></div>
</inp2:m_if>
</td>
</inp2:m_RenderElement>
<inp2:m_if check="system-log_Field" name="LogEventName" db="db">
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogEventName"/>
</inp2:m_if>
<inp2:m_if check="system-log_Field" name="LogBacktrace" db="db">
<inp2:m_RenderElement design="form_row" prefix="system-log" field="LogBacktrace">
<td class="control-cell" valign="top">
<ol class="log_backtrace">
<inp2:$prefix_PrintBacktrace render_as="backtrace_element" include_args="1" include_code_fragment="1"/>
</ol>
</td>
</inp2:m_RenderElement>
</inp2:m_if>
<inp2:m_RenderElement name="subsection" title="la_title_LogOther"/>
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogProcessId"/>
<inp2:m_RenderElement design="form_row" prefix="system-log" field="LogMemoryUsed">
<td class="control-cell" valign="top">
<strong><inp2:$prefix_MemoryUsage/></strong> (<inp2:{$prefix}_Field field="$field"/> bytes)
</td>
</inp2:m_RenderElement>
<inp2:m_if check="system-log_Field" name="LogUserData" db="db">
<inp2:m_RenderElement name="inp_label" prefix="system-log" field="LogUserData" nl2br="1"/>
</inp2:m_if>
<inp2:m_if check="system-log_Field" name="LogNotificationStatus" db="db">
<inp2:m_RenderElement name="inp_edit_radio" prefix="system-log" field="LogNotificationStatus"/>
</inp2:m_if>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<script type="text/javascript">
$(document).ready(function () {
$(document).on('click', 'a.expandable', function ($e) {
$(this).siblings('.expandable-area:first').toggle();
$e.preventDefault();
});
});
</script>
<inp2:m_include t="incs/footer"/>
Index: branches/5.2.x/core/units/logs/system_logs/system_log_tp.php
===================================================================
--- branches/5.2.x/core/units/logs/system_logs/system_log_tp.php (revision 16842)
+++ branches/5.2.x/core/units/logs/system_logs/system_log_tp.php (revision 16843)
@@ -1,207 +1,210 @@
<?php
/**
* @version $Id$
* @package In-Portal
* @copyright Copyright (C) 1997 - 2012 Intechnic. All rights reserved.
* @license GNU/GPL
* In-Portal is Open Source software.
* This means that this software may have been modified pursuant
* 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 http://www.in-portal.org/license for copyright notices and details.
*/
defined('FULL_PATH') or die('restricted access!');
class SystemLogTagProcessor extends kDBTagProcessor {
/**
* Displays filename
*
* @param Array $params
* @return string
* @access protected
*/
protected function Filename($params)
{
/** @var kDBItem $object */
$object = $this->getObject($params);
$filename = $object->GetDBField('LogSourceFilename');
if ( !$filename ) {
return '';
}
return preg_replace('/^' . preg_quote(FULL_PATH, '/') . '/', '...', $filename, 1);
}
/**
* Displays filename
*
* @param Array $params
* @return string
* @access protected
*/
protected function RequestURI($params)
{
/** @var kDBItem $object */
$object = $this->getObject($params);
$request_uri = $object->GetDBField('LogRequestURI');
if ( !$request_uri ) {
return '';
}
return preg_replace('/^' . preg_quote(BASE_PATH, '/') . '/', '...', $request_uri, 1);
}
/**
* Displays used memory
*
* @param Array $params
* @return string
* @access protected
*/
protected function MemoryUsage($params)
{
/** @var kDBItem $object */
$object = $this->getObject($params);
return kUtil::formatSize($object->GetDBField('LogMemoryUsed'));
}
/**
* Prints serialized array
*
* @param Array $params
* @return string
* @access protected
*/
protected function PrintArray($params)
{
/** @var kDBItem $object */
$object = $this->getObject($params);
$field = $params['field'];
$value = $object->GetDBField($field);
if ( !$value ) {
return '';
}
- $value = print_r(unserialize($value), true);
-
- return $this->highlightString($value);
+ return kUtil::varDumpColorized(unserialize($value), 'system-log-edit');
}
/**
* Prints backtrace result
*
* @param Array $params
* @return string
* @access protected
*/
protected function PrintBacktrace($params)
{
/** @var kDBItem $object */
$object = $this->getObject($params);
$value = $object->GetDBField('LogBacktrace');
if ( !$value ) {
return '';
}
$ret = '';
$trace = unserialize($value);
$include_args = isset($params['include_args']) ? $params['include_args'] : false;
$include_code_fragment = isset($params['include_code_fragment']) ? $params['include_code_fragment'] : false;
$strip_tags = isset($params['strip_tags']) ? $params['strip_tags'] : false;
$block_params = $this->prepareTagParams($params);
$block_params['name'] = $params['render_as'];
foreach ($trace as $index => $trace_info) {
$block_params['index'] = $index;
if ( isset($trace_info['file']) ) {
$function_name = isset($trace_info['class']) ? $trace_info['class'] . $trace_info['type'] . $trace_info['function'] : $trace_info['function'];
$block_params['file_info'] = $function_name . ' in <b>' . basename($trace_info['file']) . '</b> on line <b>' . $trace_info['line'] . '</b>';
if ( $strip_tags ) {
$block_params['file_info'] = strip_tags($block_params['file_info']);
}
}
else {
$block_params['file_info'] = 'no file information available';
}
$block_params['has_args'] = isset($trace_info['args']);
$block_params['has_code_fragment'] = isset($trace_info['code_fragment']);
if ( $include_args ) {
- $block_params['args'] = $block_params['has_args'] ? $this->highlightString(print_r($trace_info['args'], true)) : '';
+ if ( $block_params['has_args'] ) {
+ $block_params['args'] = kUtil::varDumpColorized($trace_info['args'], 'system-log-edit');
+ }
+ else {
+ $block_params['args'] = '';
+ }
}
if ( $include_code_fragment ) {
if ( $block_params['has_code_fragment'] ) {
$block_params['code_fragment'] = $this->highlightString($trace_info['code_fragment']);
}
else {
$block_params['code_fragment'] = '';
}
}
$ret .= $this->Application->ParseBlock($block_params);
}
return $ret;
}
/**
* Prints a code fragment.
*
* @param array $params Tag params.
*
* @return string
*/
protected function PrintCodeFragment(array $params)
{
/** @var kDBItem $object */
$object = $this->getObject($params);
$code_fragment = $object->GetDBField('LogCodeFragment');
if ( $code_fragment ) {
return $this->highlightString($code_fragment);
}
return '';
}
/**
* Prints backtrace record index
*
* @param Array $params
* @return string
* @access protected
*/
protected function BacktraceIndex($params)
{
$index = $this->Application->Parser->GetParam('index') + 1;
return str_pad($index, 3, ' ', STR_PAD_LEFT);
}
public function highlightString($string)
{
$string = str_replace(Array ('\\', '/'), Array ('_nms1_', '_nms2_'), $string);
$string = highlight_string('<?php ' . $string . ' ?>', true);
$string = str_replace(Array ('_nms1_', '_nms2_'), Array ('\\', '/'), $string);
return str_replace(Array ('<?php ', '?>'), '', $string);
}
}
Event Timeline
Log In to Comment