From b048200a30bffb9c239041b3e0b4b203dd8a0267 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 6 Sep 2018 17:00:50 +0900 Subject: [PATCH] Allow multiple selection of display debug types --- classes/display/DisplayHandler.class.php | 36 +++++++++++++++--------- common/defaults/config.php | 2 +- modules/admin/admin.admin.controller.php | 7 ++++- modules/admin/admin.admin.view.php | 2 +- modules/admin/tpl/config_debug.html | 6 ++-- 5 files changed, 33 insertions(+), 20 deletions(-) diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 005dfe8db..674750681 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -157,16 +157,22 @@ class DisplayHandler extends Handler } // Do not display debugging information if there is no output. - $display_type = config('debug.display_type'); - if ($output === null && $display_type !== 'file') + $display_types = config('debug.display_type'); + if (!is_array($display_types)) + { + $display_types = array($display_types); + } + if ($output === null && !in_array('file', $display_types)) { return; } // Print debug information. - switch ($display_type) + $debug_output = ''; + foreach ($display_types as $display_type) { - case 'panel': + if ($display_type === 'panel') + { $data = Rhymix\Framework\Debug::getDebugData(); $display_content = array_fill_keys(config('debug.display_content'), true); if (count($display_content) && !isset($display_content['entries'])) @@ -220,7 +226,7 @@ class DisplayHandler extends Handler $panel_script .= "\n"; $body_end_position = strrpos($output, '') ?: strlen($output); $output = substr($output, 0, $body_end_position) . "\n$panel_script\n" . substr($output, $body_end_position); - return; + break; case 'JSON': if (RX_POST && preg_match('/^proc/', Context::get('act'))) { @@ -236,17 +242,16 @@ class DisplayHandler extends Handler { $output = $matches[1] . ',"_rx_debug":' . json_encode($data) . '}'; } - return; + break; default: - return; + break; } - - case 'comment': - case 'file': - default: + } + else + { if ($display_type === 'comment' && Context::getResponseMethod() !== 'HTML') { - return; + break; } ob_start(); $data = Rhymix\Framework\Debug::getDebugData(); @@ -272,13 +277,16 @@ class DisplayHandler extends Handler $phpheader = ''; } FileHandler::writeFile($log_filename, $phpheader . $content . PHP_EOL, 'a'); - return ''; + $debug_output .= ''; } else { - return ''; + $debug_output .= '' . PHP_EOL; } + } } + + return $debug_output; } /** diff --git a/common/defaults/config.php b/common/defaults/config.php index 1115d5490..de2059c96 100644 --- a/common/defaults/config.php +++ b/common/defaults/config.php @@ -92,7 +92,7 @@ return array( 'log_slow_widgets' => 0, 'log_slow_remote_requests' => 0, 'log_filename' => null, - 'display_type' => 'comment', + 'display_type' => array('comment'), 'display_content' => array(), 'display_to' => 'admin', 'write_error_log' => 'fatal', diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 275ec2730..7f5136405 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -806,13 +806,18 @@ class adminAdminController extends admin { $vars = Context::getRequestVars(); + // Save display type settings + $display_type = array_values(array_filter($vars->debug_display_type, function($str) { + return in_array($str, ['panel', 'comment', 'file']); + })); + // Debug settings Rhymix\Framework\Config::set('debug.enabled', $vars->debug_enabled === 'Y'); Rhymix\Framework\Config::set('debug.log_slow_queries', max(0, floatval($vars->debug_log_slow_queries))); Rhymix\Framework\Config::set('debug.log_slow_triggers', max(0, floatval($vars->debug_log_slow_triggers))); Rhymix\Framework\Config::set('debug.log_slow_widgets', max(0, floatval($vars->debug_log_slow_widgets))); Rhymix\Framework\Config::set('debug.log_slow_remote_requests', max(0, floatval($vars->debug_log_slow_remote_requests))); - Rhymix\Framework\Config::set('debug.display_type', strval($vars->debug_display_type) ?: 'comment'); + Rhymix\Framework\Config::set('debug.display_type', $display_type); Rhymix\Framework\Config::set('debug.display_to', strval($vars->debug_display_to) ?: 'admin'); Rhymix\Framework\Config::set('debug.write_error_log', strval($vars->debug_write_error_log) ?: 'fatal'); diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 5650b4f05..6702a44b8 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -556,7 +556,7 @@ class adminAdminView extends admin Context::set('debug_log_slow_widgets', Rhymix\Framework\Config::get('debug.log_slow_widgets')); Context::set('debug_log_slow_remote_requests', Rhymix\Framework\Config::get('debug.log_slow_remote_requests')); Context::set('debug_log_filename', Rhymix\Framework\Config::get('debug.log_filename') ?: 'files/debug/YYYYMMDD.php'); - Context::set('debug_display_type', Rhymix\Framework\Config::get('debug.display_type')); + Context::set('debug_display_type', (array)Rhymix\Framework\Config::get('debug.display_type')); Context::set('debug_display_content', Rhymix\Framework\Config::get('debug.display_content')); Context::set('debug_display_to', Rhymix\Framework\Config::get('debug.display_to')); Context::set('debug_write_error_log', Rhymix\Framework\Config::get('debug.write_error_log')); diff --git a/modules/admin/tpl/config_debug.html b/modules/admin/tpl/config_debug.html index e8d69062f..dda87c463 100644 --- a/modules/admin/tpl/config_debug.html +++ b/modules/admin/tpl/config_debug.html @@ -45,9 +45,9 @@
- - - + + +