PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / Shared / ZipStreamWrapper.php

ZipStreamWrapper.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/ZipStreamWrapper.php

202 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25 * @version ##VERSION##, ##DATE##
26 */
27
28
29 /**
30 * PHPExcel_Shared_ZipStreamWrapper
31 *
32 * @category PHPExcel
33 * @package PHPExcel_Shared
34 * @copyright Copyright (c) 2006 - 2014 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 PHPExcel_Reader_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 statName() {
109 return $this->_fileNameInArchive;
110 }
111
112 /**
113 * Implements support for fstat().
114 *
115 * @return boolean
116 */
117 public function url_stat() {
118 return $this->statName( $this->_fileNameInArchive );
119 }
120
121 /**
122 * Implements support for fstat().
123 *
124 * @return boolean
125 */
126 public function stream_stat() {
127 return $this->_archive->statName( $this->_fileNameInArchive );
128 }
129
130 /**
131 * Implements support for fread(), fgets() etc.
132 *
133 * @param int $count maximum number of bytes to read
134 * @return string
135 */
136 function stream_read($count) {
137 $ret = substr($this->_data, $this->_position, $count);
138 $this->_position += strlen($ret);
139 return $ret;
140 }
141
142 /**
143 * Returns the position of the file pointer, i.e. its offset into the file
144 * stream. Implements support for ftell().
145 *
146 * @return int
147 */
148 public function stream_tell() {
149 return $this->_position;
150 }
151
152 /**
153 * EOF stream
154 *
155 * @return bool
156 */
157 public function stream_eof() {
158 return $this->_position >= strlen($this->_data);
159 }
160
161 /**
162 * Seek stream
163 *
164 * @param int $offset byte offset
165 * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END
166 * @return bool
167 */
168 public function stream_seek($offset, $whence) {
169 switch ($whence) {
170 case SEEK_SET:
171 if ($offset < strlen($this->_data) && $offset >= 0) {
172 $this->_position = $offset;
173 return true;
174 } else {
175 return false;
176 }
177 break;
178
179 case SEEK_CUR:
180 if ($offset >= 0) {
181 $this->_position += $offset;
182 return true;
183 } else {
184 return false;
185 }
186 break;
187
188 case SEEK_END:
189 if (strlen($this->_data) + $offset >= 0) {
190 $this->_position = strlen($this->_data) + $offset;
191 return true;
192 } else {
193 return false;
194 }
195 break;
196
197 default:
198 return false;
199 }
200 }
201 }
202