[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * PHPExcel 4 * 5 * Copyright (c) 2006 - 2012 PHPExcel 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 * 21 * @category PHPExcel 22 * @package PHPExcel_Shared 23 * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel) 24 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL 25 * @version 1.7.7, 2012-05-19 26 */ 27 28 29 /** 30 * PHPExcel_Shared_ZipStreamWrapper 31 * 32 * @category PHPExcel 33 * @package PHPExcel_Shared 34 * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel) 35 */ 36 class PHPExcel_Shared_ZipStreamWrapper { 37 /** 38 * Internal ZipAcrhive 39 * 40 * @var ZipAcrhive 41 */ 42 private $_archive; 43 44 /** 45 * Filename in ZipAcrhive 46 * 47 * @var string 48 */ 49 private $_fileNameInArchive = ''; 50 51 /** 52 * Position in file 53 * 54 * @var int 55 */ 56 private $_position = 0; 57 58 /** 59 * Data 60 * 61 * @var mixed 62 */ 63 private $_data = ''; 64 65 /** 66 * Register wrapper 67 */ 68 public static function register() { 69 @stream_wrapper_unregister("zip"); 70 @stream_wrapper_register("zip", __CLASS__); 71 } 72 73 /** 74 * Implements support for fopen(). 75 * 76 * @param string $path resource name including scheme, e.g. 77 * @param string $mode only "r" is supported 78 * @param int $options mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH 79 * @param string &$openedPath absolute path of the opened stream (out parameter) 80 * @return bool true on success 81 */ 82 public function stream_open($path, $mode, $options, &$opened_path) { 83 // Check for mode 84 if ($mode{0} != 'r') { 85 throw new Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.'); 86 } 87 88 $pos = strrpos($path, '#'); 89 $url['host'] = substr($path, 6, $pos - 6); // 6: strlen('zip://') 90 $url['fragment'] = substr($path, $pos + 1); 91 92 // Open archive 93 $this->_archive = new ZipArchive(); 94 $this->_archive->open($url['host']); 95 96 $this->_fileNameInArchive = $url['fragment']; 97 $this->_position = 0; 98 $this->_data = $this->_archive->getFromName( $this->_fileNameInArchive ); 99 100 return true; 101 } 102 103 /** 104 * Implements support for fstat(). 105 * 106 * @return boolean 107 */ 108 public function stream_stat() { 109 return $this->_archive->statName( $this->_fileNameInArchive ); 110 } 111 112 /** 113 * Implements support for fread(), fgets() etc. 114 * 115 * @param int $count maximum number of bytes to read 116 * @return string 117 */ 118 function stream_read($count) { 119 $ret = substr($this->_data, $this->_position, $count); 120 $this->_position += strlen($ret); 121 return $ret; 122 } 123 124 /** 125 * Returns the position of the file pointer, i.e. its offset into the file 126 * stream. Implements support for ftell(). 127 * 128 * @return int 129 */ 130 public function stream_tell() { 131 return $this->_position; 132 } 133 134 /** 135 * EOF stream 136 * 137 * @return bool 138 */ 139 public function stream_eof() { 140 return $this->_position >= strlen($this->_data); 141 } 142 143 /** 144 * Seek stream 145 * 146 * @param int $offset byte offset 147 * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END 148 * @return bool 149 */ 150 public function stream_seek($offset, $whence) { 151 switch ($whence) { 152 case SEEK_SET: 153 if ($offset < strlen($this->_data) && $offset >= 0) { 154 $this->_position = $offset; 155 return true; 156 } else { 157 return false; 158 } 159 break; 160 161 case SEEK_CUR: 162 if ($offset >= 0) { 163 $this->_position += $offset; 164 return true; 165 } else { 166 return false; 167 } 168 break; 169 170 case SEEK_END: 171 if (strlen($this->_data) + $offset >= 0) { 172 $this->_position = strlen($this->_data) + $offset; 173 return true; 174 } else { 175 return false; 176 } 177 break; 178 179 default: 180 return false; 181 } 182 } 183 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |