Updated gui for user facility settings (#1327)
[openemr.git] / vendor / phpoffice / phpexcel / Classes / PHPExcel / Shared / ZipArchive.php
blob9a801a841144bbf16633bcf36d0bec1d0ad9ac3d
1 <?php
2 /**
3 * PHPExcel
5 * Copyright (c) 2006 - 2014 PHPExcel
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.
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.
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
21 * @category PHPExcel
22 * @package PHPExcel_Shared_ZipArchive
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##
28 if (!defined('PCLZIP_TEMPORARY_DIR')) {
29 define('PCLZIP_TEMPORARY_DIR', PHPExcel_Shared_File::sys_get_temp_dir() . DIRECTORY_SEPARATOR);
31 require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/PCLZip/pclzip.lib.php';
34 /**
35 * PHPExcel_Shared_ZipArchive
37 * @category PHPExcel
38 * @package PHPExcel_Shared_ZipArchive
39 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
41 class PHPExcel_Shared_ZipArchive
44 /** constants */
45 const OVERWRITE = 'OVERWRITE';
46 const CREATE = 'CREATE';
49 /**
50 * Temporary storage directory
52 * @var string
54 private $_tempDir;
56 /**
57 * Zip Archive Stream Handle
59 * @var string
61 private $_zip;
64 /**
65 * Open a new zip archive
67 * @param string $fileName Filename for the zip archive
68 * @return boolean
70 public function open($fileName)
72 $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir();
74 $this->_zip = new PclZip($fileName);
76 return true;
80 /**
81 * Close this zip archive
84 public function close()
89 /**
90 * Add a new file to the zip archive from a string of raw data.
92 * @param string $localname Directory/Name of the file to add to the zip archive
93 * @param string $contents String of data to add to the zip archive
95 public function addFromString($localname, $contents)
97 $filenameParts = pathinfo($localname);
99 $handle = fopen($this->_tempDir.'/'.$filenameParts["basename"], "wb");
100 fwrite($handle, $contents);
101 fclose($handle);
103 $res = $this->_zip->add($this->_tempDir.'/'.$filenameParts["basename"],
104 PCLZIP_OPT_REMOVE_PATH, $this->_tempDir,
105 PCLZIP_OPT_ADD_PATH, $filenameParts["dirname"]
107 if ($res == 0) {
108 throw new PHPExcel_Writer_Exception("Error zipping files : " . $this->_zip->errorInfo(true));
111 unlink($this->_tempDir.'/'.$filenameParts["basename"]);
115 * Find if given fileName exist in archive (Emulate ZipArchive locateName())
117 * @param string $fileName Filename for the file in zip archive
118 * @return boolean
120 public function locateName($fileName)
122 $list = $this->_zip->listContent();
123 $listCount = count($list);
124 $list_index = -1;
125 for ($i = 0; $i < $listCount; ++$i) {
126 if (strtolower($list[$i]["filename"]) == strtolower($fileName) ||
127 strtolower($list[$i]["stored_filename"]) == strtolower($fileName)) {
128 $list_index = $i;
129 break;
132 return ($list_index > -1);
136 * Extract file from archive by given fileName (Emulate ZipArchive getFromName())
138 * @param string $fileName Filename for the file in zip archive
139 * @return string $contents File string contents
141 public function getFromName($fileName)
143 $list = $this->_zip->listContent();
144 $listCount = count($list);
145 $list_index = -1;
146 for ($i = 0; $i < $listCount; ++$i) {
147 if (strtolower($list[$i]["filename"]) == strtolower($fileName) ||
148 strtolower($list[$i]["stored_filename"]) == strtolower($fileName)) {
149 $list_index = $i;
150 break;
154 $extracted = "";
155 if ($list_index != -1) {
156 $extracted = $this->_zip->extractByIndex($list_index, PCLZIP_OPT_EXTRACT_AS_STRING);
157 } else {
158 $filename = substr($fileName, 1);
159 $list_index = -1;
160 for ($i = 0; $i < $listCount; ++$i) {
161 if (strtolower($list[$i]["filename"]) == strtolower($fileName) ||
162 strtolower($list[$i]["stored_filename"]) == strtolower($fileName)) {
163 $list_index = $i;
164 break;
167 $extracted = $this->_zip->extractByIndex($list_index, PCLZIP_OPT_EXTRACT_AS_STRING);
169 if ((is_array($extracted)) && ($extracted != 0)) {
170 $contents = $extracted[0]["content"];
173 return $contents;