Merge pull request #31929 from nextcloud/enh/noid/zip-expose-stat

Expose ZIP stat information
This commit is contained in:
Côme Chilliet 2022-04-12 14:17:13 +02:00 committed by GitHub
commit a3017a437d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 1512 additions and 0 deletions

1482
build/stubs/zip.php Normal file

File diff suppressed because it is too large Load diff

View file

@ -110,6 +110,9 @@ class ZIP extends Archive {
* get the files in a folder
*/
public function getFolder(string $path): array {
// FIXME: multiple calls on getFolder would traverse
// the whole file list over and over again
// maybe use a Generator or cache the list ?
$files = $this->getFiles();
$folderContent = [];
$pathLength = strlen($path);
@ -123,6 +126,32 @@ class ZIP extends Archive {
return $folderContent;
}
/**
* Generator that returns metadata of all files
*
* @return \Generator<array>
*/
public function getAllFilesStat() {
$fileCount = $this->zip->numFiles;
for ($i = 0;$i < $fileCount;$i++) {
yield $this->zip->statIndex($i);
}
}
/**
* Return stat information for the given path
*
* @param string path path to get stat information on
* @return ?array stat information or null if not found
*/
public function getStat(string $path): ?array {
$stat = $this->zip->statName($path);
if (!$stat) {
return null;
}
return $stat;
}
/**
* get all files in the archive
*/

View file

@ -77,6 +77,7 @@
<file name="build/stubs/xsl.php"/>
<file name="build/stubs/ftp.php"/>
<file name="build/stubs/pcntl.php"/>
<file name="build/stubs/zip.php"/>
</stubs>
<issueHandlers>
<UndefinedClass>