[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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_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## 26 */ 27 28 if (!defined('PCLZIP_TEMPORARY_DIR')) { 29 define('PCLZIP_TEMPORARY_DIR', PHPExcel_Shared_File::sys_get_temp_dir()); 30 } 31 require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/PCLZip/pclzip.lib.php'; 32 33 34 /** 35 * PHPExcel_Shared_ZipArchive 36 * 37 * @category PHPExcel 38 * @package PHPExcel_Shared_ZipArchive 39 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) 40 */ 41 class PHPExcel_Shared_ZipArchive 42 { 43 44 /** constants */ 45 const OVERWRITE = 'OVERWRITE'; 46 const CREATE = 'CREATE'; 47 48 49 /** 50 * Temporary storage directory 51 * 52 * @var string 53 */ 54 private $_tempDir; 55 56 /** 57 * Zip Archive Stream Handle 58 * 59 * @var string 60 */ 61 private $_zip; 62 63 64 /** 65 * Open a new zip archive 66 * 67 * @param string $fileName Filename for the zip archive 68 * @return boolean 69 */ 70 public function open($fileName) 71 { 72 $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir(); 73 74 $this->_zip = new PclZip($fileName); 75 76 return true; 77 } 78 79 80 /** 81 * Close this zip archive 82 * 83 */ 84 public function close() 85 { 86 } 87 88 89 /** 90 * Add a new file to the zip archive from a string of raw data. 91 * 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 94 */ 95 public function addFromString($localname, $contents) 96 { 97 $filenameParts = pathinfo($localname); 98 99 $handle = fopen($this->_tempDir.'/'.$filenameParts["basename"], "wb"); 100 fwrite($handle, $contents); 101 fclose($handle); 102 103 $res = $this->_zip->add($this->_tempDir.'/'.$filenameParts["basename"], 104 PCLZIP_OPT_REMOVE_PATH, $this->_tempDir, 105 PCLZIP_OPT_ADD_PATH, $filenameParts["dirname"] 106 ); 107 if ($res == 0) { 108 throw new PHPExcel_Writer_Exception("Error zipping files : " . $this->_zip->errorInfo(true)); 109 } 110 111 unlink($this->_tempDir.'/'.$filenameParts["basename"]); 112 } 113 114 /** 115 * Find if given fileName exist in archive (Emulate ZipArchive locateName()) 116 * 117 * @param string $fileName Filename for the file in zip archive 118 * @return boolean 119 */ 120 public function locateName($fileName) 121 { 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; 130 } 131 } 132 return ($list_index > -1); 133 } 134 135 /** 136 * Extract file from archive by given fileName (Emulate ZipArchive getFromName()) 137 * 138 * @param string $fileName Filename for the file in zip archive 139 * @return string $contents File string contents 140 */ 141 public function getFromName($fileName) 142 { 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; 151 } 152 } 153 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; 165 } 166 } 167 $extracted = $this->_zip->extractByIndex($list_index, PCLZIP_OPT_EXTRACT_AS_STRING); 168 } 169 if ((is_array($extracted)) && ($extracted != 0)) { 170 $contents = $extracted[0]["content"]; 171 } 172 173 return $contents; 174 } 175 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |