45         if (file_exists($this->unzips_dir)) {
    46             rmdir($this->unzips_dir);
    55     public function testUnzip(
    57         bool $has_multiple_root_entries,
    58         int $expected_amount_directories,
    59         array $expected_directories,
    60         int $expected_amount_files,
    63         $this->assertStringContainsString(
'.zip', $zip);
    64         $zip_path = $this->zips_dir . $zip;
    65         $this->assertFileExists($zip_path);
    67         $stream = Streams::ofResource(fopen($zip_path, 
'rb'));
    68         $options = 
new UnzipOptions();
    69         $unzip = 
new Unzip($options, $stream);
    71         $this->assertFalse($unzip->hasZipReadingError());
    72         $this->assertEquals($has_multiple_root_entries, $unzip->hasMultipleRootEntriesInZip());
    73         $this->assertEquals($expected_amount_directories, $unzip->getAmountOfDirectories());
    74         $this->assertEquals($expected_directories, iterator_to_array($unzip->getDirectories()));
    75         $this->assertEquals($expected_amount_files, $unzip->getAmountOfFiles());
    76         $this->assertEquals($expected_files, iterator_to_array($unzip->getFiles()));
    79         $one_file = iterator_to_array($unzip->getFileStreams())[0];
    82         $this->assertTrue(preg_match(
'~[^\x20-\x7E\t\r\n]~', $one_file->getContents()) > 0);
    87         $stream = Streams::ofResource(fopen(__FILE__, 
'rb'));
    88         $options = 
new UnzipOptions();
    89         $unzip = 
new Unzip($options, $stream);
    90         $this->assertTrue($unzip->hasZipReadingError());
    91         $this->assertFalse($unzip->hasMultipleRootEntriesInZip());
    92         $this->assertEquals(0, iterator_count($unzip->getFiles()));
    93         $this->assertEquals(0, iterator_count($unzip->getDirectories()));
    94         $this->assertEquals(0, iterator_count($unzip->getPaths()));
    95         $this->assertEquals([], iterator_to_array($unzip->getDirectories()));
    96         $this->assertEquals([], iterator_to_array($unzip->getFiles()));
   106         bool $has_multiple_root_entries,
   107         int $expected_amount_directories,
   108         array $expected_directories,
   109         int $expected_amount_files,
   110         array $expected_files
   112         $legacy = 
new LegacyArchives();
   114         $this->assertStringContainsString(
'.zip', $zip);
   115         $zip_path = $this->zips_dir . $zip;
   116         $this->assertFileExists($zip_path);
   118         $temp_unzip_path = $this->unzips_dir . uniqid(
'unzip', 
true);
   120         $return = $legacy->unzip(
   125         $this->assertTrue($return);
   128         $expected_paths = array_merge($expected_directories, $expected_files);
   129         sort($expected_paths);
   130         $this->assertEquals($expected_paths, $unzipped_files);
   131         $this->assertTrue($this->
recurseRmdir($temp_unzip_path));
   136         $legacy = 
new LegacyArchives();
   137         $zip_path = $this->zips_dir . 
'3_folders_mac.zip';
   138         $this->assertFileExists($zip_path);
   140         $temp_unzip_path = $this->unzips_dir . uniqid(
'unzip', 
true);
   142         $return = $legacy->unzip(
   150         $this->assertTrue($return);
   154         $this->assertSame(self::$top_directory_tree, $unzipped_files);
   155         $this->assertTrue($this->
recurseRmdir($temp_unzip_path));
   160         $legacy = 
new LegacyArchives();
   161         $zip_path = $this->zips_dir . 
'3_folders_mac.zip';
   162         $this->assertFileExists($zip_path);
   164         $temp_unzip_path = $this->unzips_dir . uniqid(
'unzip', 
true);
   166         $return = $legacy->unzip(
   173         $this->assertTrue($return);
   177         $this->assertSame(self::$expected_flat_files, $unzipped_files);
   178         $this->assertTrue($this->
recurseRmdir($temp_unzip_path));
   183         $files = array_diff(scandir($path_to_directory), [
'.', 
'..']);
   184         foreach ($files as $file) {
   185             (is_dir(
"$path_to_directory/$file") && !is_link(
"$path_to_directory/$file")) ? $this->
recurseRmdir(
   186                 "$path_to_directory/$file"   187             ) : unlink(
"$path_to_directory/$file");
   189         return rmdir($path_to_directory);
   197         $iterator = new \RecursiveIteratorIterator(
   199             \RecursiveIteratorIterator::SELF_FIRST,
   200             \RecursiveIteratorIterator::CATCH_GET_CHILD
   203         foreach ($iterator as $item) {
   204             $relative_path = str_replace($path_to_directory . 
'/', 
'', $item->getPathname());
   205             $paths[] = $item->isDir() ? $relative_path . 
'/' : $relative_path;
   218             [
'1_folder_mac.zip', 
false, 10, self::$directories_one, 15, self::$files_one],
   219             [
'1_folder_win.zip', 
false, 10, self::$directories_one, 15, self::$files_one],
   220             [
'3_folders_mac.zip', 
true, 9, self::$directories_three, 12, self::$files_three],
   221             [
'3_folders_win.zip', 
true, 9, self::$directories_three, 12, self::$files_three],
   222             [
'1_folder_1_file_mac.zip', 
true, 3, self::$directories_mixed, 5, self::$files_mixed]
   228         1 => 
'Ordner A/01_Test.pdf',
   229         2 => 
'Ordner A/02_Test.pdf',
   230         3 => 
'Ordner A/Ordner A_2/07_Test.pdf',
   231         4 => 
'Ordner A/Ordner A_2/08_Test.pdf'   236         1 => 
'Ordner A/Ordner A_1/',
   237         2 => 
'Ordner A/Ordner A_2/'   242         1 => 
'Ordner 0/Ordner A/',
   243         2 => 
'Ordner 0/Ordner A/Ordner A_1/',
   244         3 => 
'Ordner 0/Ordner A/Ordner A_2/',
   245         4 => 
'Ordner 0/Ordner B/',
   246         5 => 
'Ordner 0/Ordner B/Ordner B_1/',
   247         6 => 
'Ordner 0/Ordner B/Ordner B_2/',
   248         7 => 
'Ordner 0/Ordner C/',
   249         8 => 
'Ordner 0/Ordner C/Ordner C_1/',
   250         9 => 
'Ordner 0/Ordner C/Ordner C_2/'   254         1 => 
'Ordner A/Ordner A_1/',
   255         2 => 
'Ordner A/Ordner A_2/',
   257         4 => 
'Ordner B/Ordner B_1/',
   258         5 => 
'Ordner B/Ordner B_2/',
   260         7 => 
'Ordner C/Ordner C_1/',
   261         8 => 
'Ordner C/Ordner C_2/'   265         0 => 
'Ordner 0/13_Test.pdf',
   266         1 => 
'Ordner 0/14_Test.pdf',
   267         2 => 
'Ordner 0/15_Test.pdf',
   268         3 => 
'Ordner 0/Ordner A/01_Test.pdf',
   269         4 => 
'Ordner 0/Ordner A/02_Test.pdf',
   270         5 => 
'Ordner 0/Ordner A/Ordner A_2/07_Test.pdf',
   271         6 => 
'Ordner 0/Ordner A/Ordner A_2/08_Test.pdf',
   272         7 => 
'Ordner 0/Ordner B/03_Test.pdf',
   273         8 => 
'Ordner 0/Ordner B/04_Test.pdf',
   274         9 => 
'Ordner 0/Ordner B/Ordner B_2/09_Test.pdf',
   275         10 => 
'Ordner 0/Ordner B/Ordner B_2/10_Test.pdf',
   276         11 => 
'Ordner 0/Ordner C/05_Test.pdf',
   277         12 => 
'Ordner 0/Ordner C/06_Test.pdf',
   278         13 => 
'Ordner 0/Ordner C/Ordner C_2/11_Test.pdf',
   279         14 => 
'Ordner 0/Ordner C/Ordner C_2/12_Test.pdf'   283         0 => 
'Ordner A/01_Test.pdf',
   284         1 => 
'Ordner A/02_Test.pdf',
   285         2 => 
'Ordner A/Ordner A_2/07_Test.pdf',
   286         3 => 
'Ordner A/Ordner A_2/08_Test.pdf',
   287         4 => 
'Ordner B/03_Test.pdf',
   288         5 => 
'Ordner B/04_Test.pdf',
   289         6 => 
'Ordner B/Ordner B_2/09_Test.pdf',
   290         7 => 
'Ordner B/Ordner B_2/10_Test.pdf',
   291         8 => 
'Ordner C/05_Test.pdf',
   292         9 => 
'Ordner C/06_Test.pdf',
   293         10 => 
'Ordner C/Ordner C_2/11_Test.pdf',
   294         11 => 
'Ordner C/Ordner C_2/12_Test.pdf',
   298         0 => 
'3_folders_mac/',
   299         1 => 
'3_folders_mac/Ordner A/',
   300         2 => 
'3_folders_mac/Ordner A/01_Test.pdf',
   301         3 => 
'3_folders_mac/Ordner A/02_Test.pdf',
   302         4 => 
'3_folders_mac/Ordner A/Ordner A_1/',
   303         5 => 
'3_folders_mac/Ordner A/Ordner A_2/',
   304         6 => 
'3_folders_mac/Ordner A/Ordner A_2/07_Test.pdf',
   305         7 => 
'3_folders_mac/Ordner A/Ordner A_2/08_Test.pdf',
   306         8 => 
'3_folders_mac/Ordner B/',
   307         9 => 
'3_folders_mac/Ordner B/03_Test.pdf',
   308         10 => 
'3_folders_mac/Ordner B/04_Test.pdf',
   309         11 => 
'3_folders_mac/Ordner B/Ordner B_1/',
   310         12 => 
'3_folders_mac/Ordner B/Ordner B_2/',
   311         13 => 
'3_folders_mac/Ordner B/Ordner B_2/09_Test.pdf',
   312         14 => 
'3_folders_mac/Ordner B/Ordner B_2/10_Test.pdf',
   313         15 => 
'3_folders_mac/Ordner C/',
   314         16 => 
'3_folders_mac/Ordner C/05_Test.pdf',
   315         17 => 
'3_folders_mac/Ordner C/06_Test.pdf',
   316         18 => 
'3_folders_mac/Ordner C/Ordner C_1/',
   317         19 => 
'3_folders_mac/Ordner C/Ordner C_2/',
   318         20 => 
'3_folders_mac/Ordner C/Ordner C_2/11_Test.pdf',
   319         21 => 
'3_folders_mac/Ordner C/Ordner C_2/12_Test.pdf',
 static array static array $directories_mixed
 
static array static array static array static array static array static array $files_three
 
testLegacyUnzip(string $zip, bool $has_multiple_root_entries, int $expected_amount_directories, array $expected_directories, int $expected_amount_files, array $expected_files)
getZips 
 
static array static array static array static array static array static array static array static array $expected_flat_files
 
static array static array static array static array $directories_three
 
recurseRmdir(string $path_to_directory)
 
static array static array static array $directories_one
 
static array static array static array static array static array static array static array $top_directory_tree
 
static array static array static array static array static array $files_one
 
static array $files_mixed
 
sort()
 description: > Example for rendering a Sort Glyph. 
 
directoryToArray(string $path_to_directory)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...