Overview
Comment: | Feature: download directory as a ZIP file |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | stable |
Files: | files | file ages | folders |
SHA3-256: |
6ec3c3489c5207566f8e794872a5fe20 |
User & Date: | bohwaz on 2021-05-26 19:46:17 |
Other Links: | manifest | tags |
Context
2021-05-26
| ||
19:47 | Fix for next version, add trigger if missing check-in: 07751dc712 user: bohwaz tags: trunk, stable | |
19:46 | Feature: download directory as a ZIP file check-in: 6ec3c3489c user: bohwaz tags: trunk, stable | |
19:18 | Fix: use hardlink to make sure that schema.sql has the same content as 1.1.0_schema.sql check-in: 0be405cc24 user: bohwaz tags: trunk, stable | |
Changes
Modified src/include/lib/Garradin/Files/Files.php from [e363fc53f4] to [893a79714f].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | + | <?php namespace Garradin\Files; use Garradin\Static_Cache; use Garradin\DB; use Garradin\Utils; use Garradin\ValidationException; use Garradin\Membres\Session; use Garradin\Entities\Files\File; use Garradin\Entities\Web\Page; use KD2\DB\EntityManager as EM; use KD2\ZipWriter; use const Garradin\{FILE_STORAGE_BACKEND, FILE_STORAGE_QUOTA, FILE_STORAGE_CONFIG}; class Files { /** * To enable or disable quota check |
︙ | |||
53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | if ($parent !== '') { File::validatePath($parent); } // Update this path return self::callStorage('list', $parent); } static public function zip(string $parent, ?Session $session) { $file = Files::get($parent); if (!$file) { throw new UserException('Ce répertoire n\'existe pas.'); } if ($session && !$file->checkReadAccess($session)) { throw new UserException('Vous n\'avez pas accès à ce répertoire'); } $zip = new ZipWriter('php://output'); $zip->setCompression(0); $add_file = function ($subpath) use ($zip, $parent, &$add_file) { foreach (self::list($subpath) as $file) { if ($file->type == $file::TYPE_DIRECTORY) { $add_file($file->path); continue; } $dest_path = substr($file->path, strlen($parent . '/')); $zip->add($dest_path, null, $file->fullpath()); } }; $add_file($parent); $zip->close(); } static public function listForContext(string $context, ?string $ref = null) { $path = $context; if ($ref) { $path .= '/' . $ref; } return self::list($path); } static public function delete(string $path): void { $file = self::get($path); if (!$file) { return; |
︙ |
Added src/www/admin/docs/zip.php version [a9aa6c6682].
|