Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Tue, Sep 2, 12:49 PM

in-portal

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 ('&lt;?php&nbsp;', '?&gt;'), '', $string);
}
}

Event Timeline