summaryrefslogtreecommitdiffstats
path: root/system/core
diff options
context:
space:
mode:
Diffstat (limited to 'system/core')
-rw-r--r--system/core/Output.php82
1 files changed, 43 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