From 19985dbb8c0aa66dc4bf7905abc1148de909097d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 11 Jan 2022 12:35:47 +0100 Subject: prvi-commit --- .../excel/PHPExcel/Shared/ZipStreamWrapper.php | 183 +++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php (limited to 'admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php') diff --git a/admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php b/admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php new file mode 100644 index 0000000..8c55884 --- /dev/null +++ b/admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php @@ -0,0 +1,183 @@ +_archive = new ZipArchive(); + $this->_archive->open($url['host']); + + $this->_fileNameInArchive = $url['fragment']; + $this->_position = 0; + $this->_data = $this->_archive->getFromName( $this->_fileNameInArchive ); + + return true; + } + + /** + * Implements support for fstat(). + * + * @return boolean + */ + public function stream_stat() { + return $this->_archive->statName( $this->_fileNameInArchive ); + } + + /** + * Implements support for fread(), fgets() etc. + * + * @param int $count maximum number of bytes to read + * @return string + */ + function stream_read($count) { + $ret = substr($this->_data, $this->_position, $count); + $this->_position += strlen($ret); + return $ret; + } + + /** + * Returns the position of the file pointer, i.e. its offset into the file + * stream. Implements support for ftell(). + * + * @return int + */ + public function stream_tell() { + return $this->_position; + } + + /** + * EOF stream + * + * @return bool + */ + public function stream_eof() { + return $this->_position >= strlen($this->_data); + } + + /** + * Seek stream + * + * @param int $offset byte offset + * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END + * @return bool + */ + public function stream_seek($offset, $whence) { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($this->_data) && $offset >= 0) { + $this->_position = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + $this->_position += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen($this->_data) + $offset >= 0) { + $this->_position = strlen($this->_data) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } +} -- cgit v1.2.3