aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2020-04-05 10:59:55 +0200
committerJulius Härtl <jus@bitgrid.net>2020-04-08 16:24:09 +0200
commit0734582c062da9dad11562c68730d4e752b08acd (patch)
tree1b209b6cbf370bbd6bb69ab2ea1dceafb176fac1 /lib
parent981278a666370ce40d144ea8d7783e712605c1c0 (diff)
downloadnextcloud-server-0734582c062da9dad11562c68730d4e752b08acd.tar.gz
nextcloud-server-0734582c062da9dad11562c68730d4e752b08acd.zip
Add abstract class to extract previews from files that are zip archives
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Preview/Bundled.php58
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/private/Preview/Bundled.php b/lib/private/Preview/Bundled.php
new file mode 100644
index 00000000000..6f3d811ca61
--- /dev/null
+++ b/lib/private/Preview/Bundled.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Preview;
+
+use OCP\Files\File;
+use OCP\Files\NotPermittedException;
+use OCP\IImage;
+use OCP\Lock\LockedException;
+
+/**
+ * Extracts a preview from files that embed them in an ZIP archive
+ */
+abstract class Bundled extends ProviderV2 {
+
+ protected function extractThumbnail(File $file, $path): ?IImage {
+ $sourceTmp = \OC::$server->getTempManager()->getTemporaryFile();
+ $targetTmp = \OC::$server->getTempManager()->getTemporaryFile();
+
+ try {
+ $content = $file->fopen('r');
+ $content = stream_get_contents($content);
+ file_put_contents($sourceTmp, $content);
+
+ $zip = new \OC\Archive\ZIP($sourceTmp);
+ $zip->extractFile($path, $targetTmp);
+
+ $image = new \OC_Image();
+ $image->loadFromFile($targetTmp);
+ $image->fixOrientation();
+
+ return $image;
+ } catch (\Exception $e) {
+ return null;
+ }
+ }
+
+}