Files
@ 1db340eef40b
Branch filter:
Location: hot67beta/libraries/pattemplate/patTemplate/OutputFilter/Gzip.php
1db340eef40b
2.0 KiB
text/x-php
add mtop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | <?PHP
/**
* patTemplate GZip output filter
*
* $Id: Gzip.php 10381 2008-06-01 03:35:53Z pasamio $
*
* Checks the accept encoding of the browser and
* compresses the data before sending it to the client.
*
* @package patTemplate
* @subpackage Filters
* @author Stephan Schmidt <schst@php.net>
*/
// Check to ensure this file is within the rest of the framework
defined('JPATH_BASE') or die();
/**
* patTemplate GZip output filter
*
* $Id: Gzip.php 10381 2008-06-01 03:35:53Z pasamio $
*
* Checks the accept encoding of the browser and
* compresses the data before sending it to the client.
*
* @package patTemplate
* @subpackage Filters
* @author Stephan Schmidt <schst@php.net>
*/
class patTemplate_OutputFilter_Gzip extends patTemplate_OutputFilter
{
/**
* filter name
*
* This has to be set in the final
* filter classes.
*
* @access protected
* @abstract
* @var string
*/
var $_name = 'Gzip';
/**
* compress the data
*
* @access public
* @param string data
* @return string compressed data
*/
function apply( $data )
{
if (!$this->_clientSupportsGzip()) {
return $data;
}
$size = strlen( $data );
$crc = crc32( $data );
$data = gzcompress( $data, 9 );
$data = substr( $data, 0, strlen( $data ) - 4 );
$data .= $this->_gfc( $crc );
$data .= $this->_gfc( $size );
header( 'Content-Encoding: gzip' );
$data = "\x1f\x8b\x08\x00\x00\x00\x00\x00" . $data;
return $data;
}
/**
* check, whether client supports compressed data
*
* @access private
* @return boolean
*/
function _clientSupportsGzip()
{
if (!isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
return false;
}
if (false !== strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
return true;
}
return false;
}
/**
* get value as hex-string
*
* @access public
* @param integer $value value to convert
* @return string $string converted string
*/
function _gfc( $value )
{
$str = '';
for ($i = 0; $i < 4; $i ++) {
$str .= chr( $value % 256 );
$value = floor( $value / 256 );
}
return $str;
}
}
?>
|