ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
Archives.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
26 
33 final class Archives
34 {
35  use PathHelper;
36 
39 
40  public function __construct()
41  {
42  $this->zip_options = $this->zipOptions();
43  $this->unzip_options = $this->unzipOptions();
44  }
45 
46  public function zip(array $file_streams, ?ZipOptions $zip_options = null): Zip
47  {
48  if (empty($file_streams)) {
49  $file_streams = [Zip::DOT_EMPTY => Streams::ofString('')];
50  }
51 
52  return new Zip(
53  $this->mergeZipOptions($zip_options),
54  ...$file_streams
55  );
56  }
57 
58  public function unzip(FileStream $zip, ?UnzipOptions $unzip_options = null): Unzip
59  {
60  return new Unzip(
61  $this->mergeUnzipOptions($unzip_options),
62  $zip
63  );
64  }
65 
66  public function unzipOptions(): UnzipOptions
67  {
68  return new UnzipOptions();
69  }
70 
71  public function zipOptions(): ZipOptions
72  {
73  return new ZipOptions();
74  }
75 
76  protected function mergeZipOptions(?ZipOptions $zip_options): ZipOptions
77  {
78  if (null === $zip_options) {
79  return $this->zip_options;
80  }
81  return $this->zip_options
82  ->withZipOutputName($zip_options->getZipOutputName())
83  ->withZipOutputPath($zip_options->getZipOutputPath())
84  ->withDirectoryHandling($zip_options->getDirectoryHandling());
85  }
86 
87  protected function mergeUnzipOptions(?UnzipOptions $unzip_options): UnzipOptions
88  {
89  if (null === $unzip_options) {
90  return $this->unzip_options;
91  }
92  if ($unzip_options->getZipOutputPath() !== null) {
93  $this->unzip_options = $this->unzip_options->withZipOutputPath($unzip_options->getZipOutputPath());
94  }
95 
96  return $this->unzip_options
97  ->withOverwrite($unzip_options->isOverwrite())
98  ->withDirectoryHandling($unzip_options->getDirectoryHandling());
99  }
100 }
unzip(FileStream $zip, ?UnzipOptions $unzip_options=null)
Definition: Archives.php:58
zip(array $file_streams, ?ZipOptions $zip_options=null)
Definition: Archives.php:46
mergeZipOptions(?ZipOptions $zip_options)
Definition: Archives.php:76
withZipOutputPath(string $zip_output_path)
mergeUnzipOptions(?UnzipOptions $unzip_options)
Definition: Archives.php:87
withZipOutputName(string $zip_output_name)
Definition: ZipOptions.php:46
The base interface for all filesystem streams.
Definition: FileStream.php:31