Files
@ 51a566e6db62
Branch filter:
Location: hot67beta/libraries/pattemplate/patTemplate/OutputFilter/Gzip.php - annotation
51a566e6db62
2.0 KiB
text/x-php
header kill
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 | c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 c7d7e38b2269 | <?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;
}
}
?>
|