ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ZipArchive.php
Go to the documentation of this file.
1 <?php
28 if (!defined('PCLZIP_TEMPORARY_DIR')) {
29  define('PCLZIP_TEMPORARY_DIR', PHPExcel_Shared_File::sys_get_temp_dir() . DIRECTORY_SEPARATOR);
30 }
31 require_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  {
72  $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir();
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 }
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
addFromString($localname, $contents)
Add a new file to the zip archive from a string of raw data.
Definition: ZipArchive.php:95
close()
Close this zip archive.
Definition: ZipArchive.php:84
const OVERWRITE
constants
Definition: ZipArchive.php:45
static sys_get_temp_dir()
Get the systems temporary directory.
Definition: File.php:135
open($fileName)
Open a new zip archive.
Definition: ZipArchive.php:70
locateName($fileName)
Find if given fileName exist in archive (Emulate ZipArchive locateName())
Definition: ZipArchive.php:120
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