128 lines
5.9 KiB
PHP
128 lines
5.9 KiB
PHP
<?php
|
|
defined( 'WPINC' ) OR exit;
|
|
|
|
/**
|
|
* Register settings for the tab.
|
|
*/
|
|
function dg_register_settings() {
|
|
add_settings_section(
|
|
'logging_table', '',
|
|
'dg_render_logging_section', DG_OPTION_NAME );
|
|
}
|
|
|
|
/**
|
|
* Validate settings for the tab.
|
|
*/
|
|
function dg_validate_settings( $values ) {
|
|
global $dg_options;
|
|
if (isset($values['clearLog'])) {
|
|
DG_Logger::clearLog();
|
|
}
|
|
|
|
return $dg_options;
|
|
}
|
|
|
|
/**
|
|
* Render the Logging table.
|
|
*/
|
|
function dg_render_logging_section() {
|
|
$log_list = DG_Logger::readLog();
|
|
if ( $log_list ) {
|
|
$levels = array_map( 'dg_get_log_label_span', array_keys( DG_LogLevel::getLogLevels() ) );
|
|
|
|
$fmt =
|
|
'<tr>' .
|
|
'<th scope="col" class="manage-column column-date sorted desc"><a href="javascript:void(0);">' .
|
|
'<span>%s</span><span class="sorting-indicator"></span></a>' .
|
|
'</th>' .
|
|
'<th scope="col" class="manage-column column-level"><span>%s</span></th>' .
|
|
'<th scope="col" class="manage-column column-message"><span>%s</span></th>' .
|
|
'</tr>';
|
|
|
|
$thead = sprintf( $fmt,
|
|
__( 'Date', 'document-gallery' ),
|
|
__( 'Level', 'document-gallery' ),
|
|
__( 'Message', 'document-gallery' ) );
|
|
|
|
?>
|
|
<div class="log-list-wrapper">
|
|
<div>
|
|
<div class="tablenav top">
|
|
<div class="alignleft bulkactions">
|
|
<button class="action expandAll">
|
|
<?php echo __( 'Expand All', 'document-gallery' ); ?>
|
|
</button>
|
|
<button class="action collapseAll">
|
|
<?php echo __( 'Collapse All', 'document-gallery' ); ?>
|
|
</button>
|
|
</div>
|
|
<div class="levelSelector">
|
|
<input type="checkbox" id="allLevels" name="lswitch" value="all" checked/>
|
|
<label for="allLevels" class="allLevels">ALL</label>
|
|
<?php
|
|
foreach ( array_keys( DG_LogLevel::getLogLevels() ) as $k ) { ?>
|
|
<?php
|
|
$lower = strtolower( $k );
|
|
$upper = strtoupper( $k );
|
|
?>
|
|
<input type="checkbox" id="<?php echo $lower; ?>Level" name="lswitch"
|
|
value="<?php echo $lower; ?>" checked/>
|
|
<label for="<?php echo $lower; ?>Level"
|
|
class="<?php echo $lower; ?>Level"><?php echo $upper; ?></label>
|
|
<?php }
|
|
?>
|
|
</div>
|
|
</div>
|
|
<table id="LogTable" class="wp-list-table widefat fixed media" cellpadding="0" cellspacing="0">
|
|
<thead>
|
|
<?php echo $thead; ?>
|
|
</thead>
|
|
<tfoot>
|
|
<?php echo $thead; ?>
|
|
</tfoot>
|
|
<tbody><?php
|
|
for ( $i = count( $log_list ); $i > 0; $i-- ) {
|
|
$log_entry = $log_list[ $i - 1 ];
|
|
$date = DocumentGallery::localDateTimeFromTimestamp( $log_entry[0] );
|
|
|
|
// convert attachment names to links
|
|
$log_entry[2] = preg_replace( '/[ ^](attachment #)(\d+)[.,: ]/i', ' <a href="' . home_url() . '/?attachment_id=\2" target="_blank">\1<strong>\2</strong></a> ', $log_entry[2] );
|
|
|
|
// bold the place where log entry was submitted
|
|
$log_entry[2] = preg_replace( '/^(\((?:\w+(?:::|->))?\w+\)) /', '<strong>\1</strong> ', $log_entry[2] );
|
|
|
|
// italicize any function references within log entry
|
|
$log_entry[2] = preg_replace( '/(\(?\w+(?:::|->)\w+\)?)/m', '<i>\1</i>', $log_entry[2] );
|
|
|
|
echo '<tr><td class="date column-date" data-sort-value="' . $log_entry[0] . '"><span class="logLabel date">' . $date . '</span></td>' .
|
|
'<td class="column-level">' . $levels[ $log_entry[1] ] . '</td>' .
|
|
'<td class="column-entry">' . ( empty( $log_entry[3] ) ? '<pre>' . $log_entry[2] . '</pre>' : '<div class="expander" title="Click to Expand"><pre>' . $log_entry[2] . '</pre><div><span class="dashicons dashicons-arrow-down-alt2"></span></div></div><div class="spoiler-body"><pre>' . $log_entry[3] . '</pre></div>' ) . '</td>' .
|
|
'</tr>' . PHP_EOL;
|
|
} ?>
|
|
</tbody>
|
|
</table>
|
|
<div class="tablenav bottom">
|
|
<div class="alignright bulkactions">
|
|
<button class="button action clearLog" name='<?php echo DG_OPTION_NAME; ?>[clearLog]'
|
|
value='true'>
|
|
<?php echo __( 'Clear Log', 'document-gallery' ); ?>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php } else {
|
|
echo '<div class="noLog">' . __( 'There are no log entries at this time.', 'document-gallery' ) . '<br />' . __( 'For Your information:', 'document-gallery' ) . ' <strong><i>' . __( 'Logging', 'document-gallery' ) . '</i></strong> ' . ( DG_Logger::logEnabled() ? '<span class="loggingON">' . __( 'is turned ON', 'document-gallery' ) . '!</span>' : '<span class="loggingOFF">' . __( 'is turned OFF', 'document-gallery' ) . '!</span>' ) . '</div>';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Takes label name and returns SPAN tag.
|
|
*
|
|
* @param string $e label name.
|
|
*
|
|
* @return string SPAN tag
|
|
*/
|
|
function dg_get_log_label_span( $e ) {
|
|
return '<span class="logLabel ' . strtolower( $e ) . '">' . strtoupper( $e ) . '</span>';
|
|
}
|