00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 if (!function_exists('bzcompress')) {
00014 trigger_error('bzip2 functions are not available', E_USER_ERROR);
00015 return 0;
00016 }
00017
00018
00019
00020 class ADODB_Compress_Bzip2 {
00023 var $_block_size = null;
00024
00027 var $_work_level = null;
00028
00031 var $_min_length = 1;
00032
00035 function getBlockSize() {
00036 return $this->_block_size;
00037 }
00038
00041 function setBlockSize($block_size) {
00042 assert('$block_size >= 1');
00043 assert('$block_size <= 9');
00044 $this->_block_size = (int) $block_size;
00045 }
00046
00049 function getWorkLevel() {
00050 return $this->_work_level;
00051 }
00052
00055 function setWorkLevel($work_level) {
00056 assert('$work_level >= 0');
00057 assert('$work_level <= 250');
00058 $this->_work_level = (int) $work_level;
00059 }
00060
00063 function getMinLength() {
00064 return $this->_min_length;
00065 }
00066
00069 function setMinLength($min_length) {
00070 assert('$min_length >= 0');
00071 $this->_min_length = (int) $min_length;
00072 }
00073
00076 function ADODB_Compress_Bzip2($block_size = null, $work_level = null, $min_length = null) {
00077 if (!is_null($block_size)) {
00078 $this->setBlockSize($block_size);
00079 }
00080
00081 if (!is_null($work_level)) {
00082 $this->setWorkLevel($work_level);
00083 }
00084
00085 if (!is_null($min_length)) {
00086 $this->setMinLength($min_length);
00087 }
00088 }
00089
00092 function write($data, $key) {
00093 if (strlen($data) < $this->_min_length) {
00094 return $data;
00095 }
00096
00097 if (!is_null($this->_block_size)) {
00098 if (!is_null($this->_work_level)) {
00099 return bzcompress($data, $this->_block_size, $this->_work_level);
00100 } else {
00101 return bzcompress($data, $this->_block_size);
00102 }
00103 }
00104
00105 return bzcompress($data);
00106 }
00107
00110 function read($data, $key) {
00111 return $data ? bzdecompress($data) : $data;
00112 }
00113
00114 }
00115
00116 return 1;
00117
00118 ?>