ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ZipArchive.php
Go to the documentation of this file.
1<?php
28if (!defined('PCLZIP_TEMPORARY_DIR')) {
29 define('PCLZIP_TEMPORARY_DIR', PHPExcel_Shared_File::sys_get_temp_dir() . DIRECTORY_SEPARATOR);
30}
31require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/PCLZip/pclzip.lib.php';
32
33
42{
43
45 const OVERWRITE = 'OVERWRITE';
46 const CREATE = 'CREATE';
47
48
54 private $_tempDir;
55
61 private $_zip;
62
63
70 public function open($fileName)
71 {
73
74 $this->_zip = new PclZip($fileName);
75
76 return true;
77 }
78
79
84 public function close()
85 {
86 }
87
88
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
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
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}
An exception for terminatinating execution or to throw for unit testing.
static sys_get_temp_dir()
Get the systems temporary directory.
Definition: File.php:135
locateName($fileName)
Find if given fileName exist in archive (Emulate ZipArchive locateName())
Definition: ZipArchive.php:120
addFromString($localname, $contents)
Add a new file to the zip archive from a string of raw data.
Definition: ZipArchive.php:95
const OVERWRITE
constants
Definition: ZipArchive.php:45
open($fileName)
Open a new zip archive.
Definition: ZipArchive.php:70
close()
Close this zip archive.
Definition: ZipArchive.php:84
getFromName($fileName)
Extract file from archive by given fileName (Emulate ZipArchive getFromName())
Definition: ZipArchive.php:141
const PCLZIP_OPT_EXTRACT_AS_STRING
Definition: pclzip.lib.php:133
const PCLZIP_OPT_ADD_PATH
Definition: pclzip.lib.php:129
const PCLZIP_OPT_REMOVE_PATH
Definition: pclzip.lib.php:130
defined( 'APPLICATION_ENV')||define( 'APPLICATION_ENV'
Definition: bootstrap.php:27