diff options
author | Andrey Andreev <narf@bofh.bg> | 2012-06-16 00:12:56 +0200 |
---|---|---|
committer | Andrey Andreev <narf@bofh.bg> | 2012-06-16 00:12:56 +0200 |
commit | 0140ddd510edffb901b98de6b80676ece183760c (patch) | |
tree | 62e4e2d65cca06a1fa8fcba6e2f2b73cc1196b79 /system | |
parent | 58ae971ba248cf3e32a139088c3833c9735028de (diff) |
Fix issue #318 + added a default to the switch() in CI_Output::minify()
Diffstat (limited to 'system')
-rw-r--r-- | system/core/Output.php | 82 | ||||
-rw-r--r-- | system/libraries/Profiler.php | 6 |
2 files changed, 49 insertions, 39 deletions
diff --git a/system/core/Output.php b/system/core/Output.php index 8a0f14e02..570d4ebc9 100644 --- a/system/core/Output.php +++ b/system/core/Output.php @@ -72,6 +72,7 @@ class CI_Output { * @var string */ protected $mime_type = 'text/html'; + /** * Determines wether profiler is enabled * @@ -84,7 +85,7 @@ class CI_Output { * * @var bool */ - protected $_zlib_oc = FALSE; + protected $_zlib_oc = FALSE; /** * List of profiler sections @@ -180,7 +181,7 @@ class CI_Output { * how to permit header data to be saved with the cache data... * * @param string - * @param bool + * @param bool * @return void */ public function set_header($header, $replace = TRUE) @@ -223,7 +224,7 @@ class CI_Output { } } } - + $this->mime_type = $mime_type; if (empty($charset)) @@ -300,6 +301,12 @@ class CI_Output { */ public function set_profiler_sections($sections) { + if (isset($sections['query_toggle_count'])) + { + $this->_profiler_sections['query_toggle_count'] = (int) $sections['query_toggle_count']; + unset($sections['query_toggle_count']); + } + foreach ($sections as $section => $enable) { $this->_profiler_sections[$section] = ($enable !== FALSE); @@ -335,7 +342,7 @@ class CI_Output { * with any server headers and profile data. It also stops the * benchmark timer so the page rendering speed and memory usage can be shown. * - * @param string + * @param string * @return mixed */ public function _display($output = '') @@ -358,7 +365,7 @@ class CI_Output { { $output =& $this->final_output; } - + // -------------------------------------------------------------------- // Is minify requested? @@ -467,7 +474,7 @@ class CI_Output { /** * Write a Cache File * - * @param string + * @param string * @return void */ public function _write_cache($output) @@ -510,7 +517,7 @@ class CI_Output { @chmod($cache_path, FILE_WRITE_MODE); log_message('debug', 'Cache file written: '.$cache_path); - + // Send HTTP cache-control headers to browser to match file cache settings. $this->set_cache_header($_SERVER['REQUEST_TIME'], $expire); } @@ -520,8 +527,8 @@ class CI_Output { /** * Update/serve a cached file * - * @param object config class - * @param object uri class + * @param object config class + * @param object uri class * @return bool */ public function _display_cache(&$CFG, &$URI) @@ -562,7 +569,7 @@ class CI_Output { return FALSE; } else - { + { // Or else send the HTTP cache control headers. $this->set_cache_header($last_modified, $expire); } @@ -573,46 +580,44 @@ class CI_Output { return TRUE; } - // -------------------------------------------------------------------- + /** * Set the HTTP headers to match the server-side file cache settings * in order to reduce bandwidth. * - * @param int timestamp of when the page was last modified - * @param int timestamp of when should the requested page expire from cache + * @param int timestamp of when the page was last modified + * @param int timestamp of when should the requested page expire from cache * @return void */ public function set_cache_header($last_modified, $expiration) - { - $max_age = $expiration - $_SERVER['REQUEST_TIME']; + { + $max_age = $expiration - $_SERVER['REQUEST_TIME']; - if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && ($last_modified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']))) + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $last_modified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $this->set_status_header(304); exit; } else { - header('Pragma: public'); + header('Pragma: public'); header('Cache-Control: max-age=' . $max_age . ', public'); header('Expires: '.gmdate('D, d M Y H:i:s', $expiration).' GMT'); header('Last-modified: '.gmdate('D, d M Y H:i:s', $last_modified).' GMT'); } } - - - // -------------------------------------------------------------------- + /** * Reduce excessive size of HTML content. * - * @param string - * @param string + * @param string + * @param string * @return string */ - public function minify($output, $type='text/html') + public function minify($output, $type = 'text/html') { switch ($type) { @@ -633,7 +638,7 @@ class CI_Output { { $output = str_replace($s, $this->minify($s, 'text/css'), $output); } - + // Minify the javascript in <script> tags. foreach ($javascript_clean[0] as $s) { @@ -642,7 +647,7 @@ class CI_Output { // Replace multiple spaces with a single space. $output = preg_replace('!\s{2,}!', ' ', $output); - + // Remove comments (non-MSIE conditionals) $output = preg_replace('{\s*<!--[^\[].*-->\s*}msU', '', $output); @@ -650,62 +655,61 @@ class CI_Output { $output = preg_replace('{\s*(</?(html|head|title|meta|script|link|style|body|h[1-6]|div|p|br).*>)\s+}msU', '$1', $output); // Replace mangled <pre> etc. tags with unprocessed ones. - + if ( ! empty($pres_clean)) { preg_match_all('{<pre.+</pre>}msU', $output, $pres_messed); $output = str_replace($pres_messed[0], $pres_clean[0], $output); } - + if ( ! empty($codes_clean)) { preg_match_all('{<code.+</code>}msU', $output, $codes_messed); $output = str_replace($codes_messed[0], $codes_clean[0], $output); } - + if ( ! empty($codes_clean)) { preg_match_all('{<textarea.+</textarea>}msU', $output, $textareas_messed); $output = str_replace($textareas_messed[0], $textareas_clean[0], $output); } - + if (isset($javascript_mini)) { preg_match_all('{<script.+</script>}msU', $output, $javascript_messed); $output = str_replace($javascript_messed[0], $javascript_mini, $output); } - + $size_removed = $size_before - strlen($output); $savings_percent = round(($size_removed / $size_before * 100)); log_message('debug', 'Minifier shaved '.($size_removed / 1000).'KB ('.$savings_percent.'%) off final HTML output.'); break; - - + case 'text/css': - + //Remove CSS comments $output = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $output); - + // Remove spaces around curly brackets, colons, // semi-colons, parenthesis, commas $output = preg_replace('!\s*(:|;|,|}|{|\(|\))\s*!', '$1', $output); break; - - + case 'text/javascript': // Currently leaves JavaScript untouched. break; + + default: break; } - + return $output; } - } /* End of file Output.php */ -/* Location: ./system/core/Output.php */ +/* Location: ./system/core/Output.php */
\ No newline at end of file diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php index d96088c14..1e961f6df 100644 --- a/system/libraries/Profiler.php +++ b/system/libraries/Profiler.php @@ -116,6 +116,12 @@ class CI_Profiler { */ public function set_sections($config) { + if (isset($config['query_toggle_count'])) + { + $this->_query_toggle_count = (int) $config['query_toggle_count']; + unset($config['query_toggle_count']); + } + foreach ($config as $method => $enable) { if (in_array($method, $this->_available_sections)) |