From 6e0fd3385cbf53995cd06d7a4288ee8680512a8b Mon Sep 17 00:00:00 2001 From: agnisa Date: Tue, 31 May 2022 13:11:52 +0200 Subject: [PATCH 01/14] Add duplicate error dialog on extraction --- .gitignore | 1 + appinfo/info.xml | 2 +- js/extraction.js | 176 ++++++------- l10n/de.js | 27 +- l10n/de.json | 28 ++- l10n/de_DE.js | 27 +- l10n/de_DE.json | 28 ++- l10n/es.js | 27 +- l10n/es.json | 28 ++- l10n/uk.js | 21 +- l10n/uk.json | 22 +- lib/Controller/ExtractionController.php | 315 ++++++++++++------------ 12 files changed, 372 insertions(+), 330 deletions(-) diff --git a/.gitignore b/.gitignore index 30d9ca0..9134bd7 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,4 @@ typings/ # next.js build output .next +/.idea/ diff --git a/appinfo/info.xml b/appinfo/info.xml index 4848f8c..7cac8c0 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -29,7 +29,7 @@ * **Note :** Encrypted files are not supported yet ]]> - 1.3.5 + 1.3.6 agpl Paul Lereverend Extract diff --git a/js/extraction.js b/js/extraction.js index 674c6bb..fef44bf 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -1,84 +1,114 @@ $(document).ready(function () { var actionsExtract = { + createDialog: function (title, init, callback) { + return OC.dialogs.confirmHtml( + '', + title, + callback, + true + ).then(() => { + var $dialog = $('.oc-dialog:visible'); + var $content = $('.oc-dialog-content'); + var $buttons = $dialog.find('button'); + + var $cancelButton = $buttons.eq(0); + var $confirmButton = $buttons.eq(1); + + $content.empty(); + + $cancelButton.text(t('core', 'Cancel')); + $confirmButton.text(t('core', 'Confirm')); + + init($dialog, $content, $cancelButton, $confirmButton); + }); + }, + + extractDialog: function (filename, context, type) { + var self = this; + + var dirName = filename; + var matches = dirName.match('^([^\\.]+)'); + if (matches) { + dirName = matches[0]; + } + + var data = { + sourceFileName: filename, + targetDirName: dirName, + directory: context.dir, + external: context.fileInfoModel.attributes.mountType && context.fileInfoModel.attributes.mountType.startsWith("external") ? 1 : 0, + type: type + }; + + var tr = context.fileList.findFileEl(filename); + context.fileList.showFileBusyState(tr, true); + + var $input = $(''); + self.createDialog( + t('extract', 'Extract'), + ($dialog, $content, $cancelButton, $confirmButton) => { + $confirmButton.text(t('extract', 'Extract')); + + var $text = $('

'); + $text.text(t('extract', 'Files will be extracted to this folder:')); + $content.append($text); + + $input.attr('type', 'text').attr('id', 'file-name-input').attr('placeholder', t('extract', 'File Name')).attr('value', dirName); + $content.append($input); + }, + (result) => { + context.fileList.showFileBusyState(tr, false); + data.targetDirName = $input.val(); + if (result) { + $.ajax({ + type: "POST", + async: "false", + url: OC.filePath('extract', 'ajax', 'extract.php'), + data: data, + success: function (response) { + console.log(response); + if (response.code === 1) { + context.fileList.reload(); + } else { + context.fileList.showFileBusyState(tr, false); + OC.dialogs.alert( + t('extract', response.desc), + t('extract', 'Error extracting' ) + " " + filename + ); + } + } + }); + } + }, + ); + }, + init: function () { var self = this; + OCA.Files.fileActions.registerAction({ name: 'extractzip', - displayName: t('extract', 'Extract here'), + displayName: t('extract', 'Extract'), mime: 'application/zip', permissions: OC.PERMISSION_UPDATE, type: OCA.Files.FileActions.TYPE_DROPDOWN, iconClass: 'icon-extract', actionHandler: function (filename, context) { - var data = { - nameOfFile: filename, - directory: context.dir, - external: context.fileInfoModel.attributes.mountType && context.fileInfoModel.attributes.mountType.startsWith("external") ? 1 : 0, - type: 'zip' - }; - var tr = context.fileList.findFileEl(filename); - context.fileList.showFileBusyState(tr, true); - $.ajax({ - type: "POST", - async: "false", - url: OC.filePath('extract', 'ajax', 'extract.php'), - data: data, - success: function (element) { - console.log(element); - element = element.replace(/null/g, ''); - response = JSON.parse(element); - if (response.code == 1) { - context.fileList.reload(); - } else { - context.fileList.showFileBusyState(tr, false); - OC.dialogs.alert( - t('extract', response.desc), - t('extract', 'Error extracting ' + filename) - ); - } - } - }); + self.extractDialog(filename, context, 'zip'); } }); // RAR OCA.Files.fileActions.registerAction({ name: 'extractrar', - displayName: t('extract', 'Extract here'), + displayName: t('extract', 'Extract'), mime: 'application/x-rar-compressed', permissions: OC.PERMISSION_UPDATE, type: OCA.Files.FileActions.TYPE_DROPDOWN, iconClass: 'icon-extract', actionHandler: function (filename, context) { - var data = { - nameOfFile: filename, - directory: context.dir, - external: context.fileInfoModel.attributes.mountType && context.fileInfoModel.attributes.mountType.startsWith("external") ? 1 : 0, - type: 'rar' - }; - var tr = context.fileList.findFileEl(filename); - context.fileList.showFileBusyState(tr, true); - $.ajax({ - type: "POST", - async: "false", - url: OC.filePath('extract', 'ajax', 'extract.php'), - data: data, - success: function (element) { - element = element.replace(/null/g, ''); - console.log(element); - response = JSON.parse(element); - if (response.code == 1) { - context.fileList.reload(); - } else { - context.fileList.showFileBusyState(tr, false); - OC.dialogs.alert( - t('extract', response.desc), - t('extract', 'Error extracting ' + filename) - ); - } - } - }); + self.extractDialog(filename, context, 'rar'); } }); // TAR @@ -88,39 +118,13 @@ $(document).ready(function () { types.forEach(type => { OCA.Files.fileActions.registerAction({ name: 'extractOthers', - displayName: t('extract', 'Extract here'), + displayName: t('extract', 'Extract'), mime: type, permissions: OC.PERMISSION_UPDATE, type: OCA.Files.FileActions.TYPE_DROPDOWN, iconClass: 'icon-extract', actionHandler: function (filename, context) { - var data = { - nameOfFile: filename, - directory: context.dir, - external: context.fileInfoModel.attributes.mountType && context.fileInfoModel.attributes.mountType.startsWith("external") ? 1 : 0, - type: 'other' - }; - var tr = context.fileList.findFileEl(filename); - context.fileList.showFileBusyState(tr, true); - $.ajax({ - type: "POST", - async: "false", - url: OC.filePath('extract', 'ajax', 'extract.php'), - data: data, - success: function (element) { - element = element.replace('null', ''); - response = JSON.parse(element); - if (response.code == 1) { - context.fileList.reload(); - } else { - context.fileList.showFileBusyState(tr, false); - OC.dialogs.alert( - t('extract', response.desc), - t('extract', 'Error extracting ' + filename) - ); - } - } - }); + self.extractDialog(filename, context, 'other'); } }); }); diff --git a/l10n/de.js b/l10n/de.js index 5660565..57341c1 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -1,15 +1,18 @@ OC.L10N.register( "extract", { - "Extract here" : "Hier entpacken", - "Error extracting " : "Fehler beim Entpacken", - "Encryption is not supported yet" : "Verschlüsselung wird bislang nicht unterstützt", - "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfe, ob Du die Erweiterung rar oder unrar installiert hast", - "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfe, ob Du p7zip installiert hast", - "Extract" : "Entpacken", - "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt" -}, -"nplurals=2; plural=(n != 1);"); + "Error extracting": "Fehler beim Entpacken von", + "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", + "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du die Erweiterung rar oder unrar installiert hast", + "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du p7zip installiert hast", + "Extract": "Entpacken", + "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", + "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", + "File Name": "Dateiname", + "Directory already exists": "Ordner existiert bereits" + }, + "nplurals=2; plural=(n != 1);" +); diff --git a/l10n/de.json b/l10n/de.json index 40c79d8..77149b2 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -1,13 +1,17 @@ -{ "translations": { - "Extract here" : "Hier entpacken", - "Error extracting " : "Fehler beim Entpacken", - "Encryption is not supported yet" : "Verschlüsselung wird bislang nicht unterstützt", - "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfe, ob Du die Erweiterung rar oder unrar installiert hast", - "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfe, ob Du p7zip installiert hast", - "Extract" : "Entpacken", - "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +{ + "translations": { + "Error extracting": "Fehler beim Entpacken von", + "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", + "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du die Erweiterung rar oder unrar installiert hast", + "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du p7zip installiert hast", + "Extract": "Entpacken", + "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", + "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", + "File Name": "Dateiname", + "Directory already exists": "Ordner existiert bereits" + }, + "pluralForm": "nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 315853f..d0b2def 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -1,15 +1,18 @@ OC.L10N.register( "extract", { - "Extract here" : "Hier entpacken", - "Error extracting " : "Fehler beim Entpacken", - "Encryption is not supported yet" : "Verschlüsselung wird noch nicht unterstützt", - "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", - "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", - "Extract" : "Entpacken", - "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive entpacken.\n\n* **Unterstützt:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt" -}, -"nplurals=2; plural=(n != 1);"); + "Error extracting ": "Fehler beim Entpacken", + "Encryption is not supported yet": "Verschlüsselung wird noch nicht unterstützt", + "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", + "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", + "Extract": "Entpacken", + "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", + "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", + "File Name": "Dateiname", + "Directory already exists": "Ordner existiert bereits" + }, + "nplurals=2; plural=(n != 1);" +); diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 2247e17..4e5c0b9 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -1,13 +1,17 @@ -{ "translations": { - "Extract here" : "Hier entpacken", - "Error extracting " : "Fehler beim Entpacken", - "Encryption is not supported yet" : "Verschlüsselung wird noch nicht unterstützt", - "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", - "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", - "Extract" : "Entpacken", - "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive entpacken.\n\n* **Unterstützt:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +{ + "translations": { + "Error extracting ": "Fehler beim Entpacken", + "Encryption is not supported yet": "Verschlüsselung wird noch nicht unterstützt", + "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", + "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", + "Extract": "Entpacken", + "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", + "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", + "File Name": "Dateiname", + "Directory already exists": "Ordner existiert bereits" + }, + "pluralForm": "nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/es.js b/l10n/es.js index 8dc67cb..9572cb7 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -1,15 +1,18 @@ OC.L10N.register( "extract", { - "Extract here" : "Extraer aquí", - "Error extracting " : "Error al extraer", - "Encryption is not supported yet" : "El cifrado aún no está soportado", - "Zip extension is not available" : "La extensión Zip no está disponible", - "Cannot open Zip file" : "No se puede abrir el archivo Zip", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", - "Oops something went wrong. Check that you have p7zip installed" : "Oops, algo ha ido mal. Comprueba que p7zip está instalado", - "Extract" : "Extraer", - "Extract archive from the web interface" : "Extraer el archivo desde la interfaz web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); + "Error extracting": "Error al extraer", + "Encryption is not supported yet": "El cifrado aún no está soportado", + "Zip extension is not available": "La extensión Zip no está disponible", + "Cannot open Zip file": "No se puede abrir el archivo Zip", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", + "Oops something went wrong. Check that you have p7zip installed": "Oops, algo ha ido mal. Comprueba que p7zip está instalado", + "Extract": "Extraer", + "Extract archive from the web interface": "Extraer el archivo desde la interfaz web", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados", + "Files will be extracted to this folder:": "Los archivos se extraerán a esta carpeta:", + "File Name": "Nombre del archivo", + "Directory already exists": "El directorio ya existe" + }, + "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +); diff --git a/l10n/es.json b/l10n/es.json index e3dcb3c..eff5b7a 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -1,13 +1,17 @@ -{ "translations": { - "Extract here" : "Extraer aquí", - "Error extracting " : "Error al extraer", - "Encryption is not supported yet" : "El cifrado aún no está soportado", - "Zip extension is not available" : "La extensión Zip no está disponible", - "Cannot open Zip file" : "No se puede abrir el archivo Zip", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", - "Oops something went wrong. Check that you have p7zip installed" : "Oops, algo ha ido mal. Comprueba que p7zip está instalado", - "Extract" : "Extraer", - "Extract archive from the web interface" : "Extraer el archivo desde la interfaz web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados" -},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +{ + "translations": { + "Error extracting": "Error al extraer", + "Encryption is not supported yet": "El cifrado aún no está soportado", + "Zip extension is not available": "La extensión Zip no está disponible", + "Cannot open Zip file": "No se puede abrir el archivo Zip", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", + "Oops something went wrong. Check that you have p7zip installed": "Oops, algo ha ido mal. Comprueba que p7zip está instalado", + "Extract": "Extraer", + "Extract archive from the web interface": "Extraer el archivo desde la interfaz web", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados", + "Files will be extracted to this folder:": "Los archivos se extraerán a esta carpeta:", + "File Name": "Nombre del archivo", + "Directory already exists": "El directorio ya existe" + }, + "pluralForm": "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" } \ No newline at end of file diff --git a/l10n/uk.js b/l10n/uk.js index dc332c4..2993e9e 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -1,10 +1,17 @@ OC.L10N.register( "extract", { - "Extract here" : "Видобути тут", - "Error extracting " : "Помилка з видобуванням", - "Zip extension is not available" : "Розширення ZIP недоступне", - "Extract" : "Видобути", - "Extract archive from the web interface" : "Видобути архів у вебінтерфейсів" -}, -"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); + "Error extracting": "Помилка з видобуванням", + "Encryption is not supported yet": "Шифрування ще не підтримується", + "Zip extension is not available": "Розширення ZIP недоступне", + "Cannot open Zip file": "Не вдається відкрити Zip-файл", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", + "Oops something went wrong. Check that you have p7zip installed": "Щось пішло не так. Перевірте, чи встановлено p7zip", + "Extract": "Екстракт", + "Extract archive from the web interface": "Витягніть архів з веб-інтерфейсу", + "Files will be extracted to this folder:": "Файли будуть розпаковані в цю папку:", + "File Name": "Ім'я файлу", + "Directory already exists": "Каталог уже існує" + }, + "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" +); diff --git a/l10n/uk.json b/l10n/uk.json index 5ea9a50..77c241f 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -1,8 +1,16 @@ -{ "translations": { - "Extract here" : "Видобути тут", - "Error extracting " : "Помилка з видобуванням", - "Zip extension is not available" : "Розширення ZIP недоступне", - "Extract" : "Видобути", - "Extract archive from the web interface" : "Видобути архів у вебінтерфейсів" -},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" +{ + "translations": { + "Error extracting": "Помилка з видобуванням", + "Encryption is not supported yet": "Шифрування ще не підтримується", + "Zip extension is not available": "Розширення ZIP недоступне", + "Cannot open Zip file": "Не вдається відкрити Zip-файл", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", + "Oops something went wrong. Check that you have p7zip installed": "Щось пішло не так. Перевірте, чи встановлено p7zip", + "Extract": "Екстракт", + "Extract archive from the web interface": "Витягніть архів з веб-інтерфейсу", + "Files will be extracted to this folder:": "Файли будуть розпаковані в цю папку:", + "File Name": "Ім'я файлу", + "Directory already exists": "Каталог уже існує" + }, + "pluralForm": "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" } \ No newline at end of file diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index 246aad3..55e6dd0 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -1,175 +1,176 @@ l = $l; - $this->encryptionManager = $encryptionManager; - $this->userId = $UserId; - } + /** @var IManager */ + protected $encryptionManager; + private $userId; - public function getFile($directory, $fileName){ - \OC_Util::tearDownFS(); - \OC_Util::setupFS($this->userId); - return Filesystem::getView()->getLocalFile($directory . '/' . $fileName); - } + public function __construct($AppName, IRequest $request, IL10N $l, IManager $encryptionManager, $UserId) + { + parent::__construct($AppName, $request); + $this->l = $l; + $this->encryptionManager = $encryptionManager; + $this->userId = $UserId; + \OC_Util::tearDownFS(); + \OC_Util::setupFS($this->userId); + } - /** - * CAUTION: the @Stuff turns off security checks; for this page no admin is - * required and no CSRF check. If you don't know what CSRF is, read - * it up in the docs or you might create a security hole. This is - * basically the only required method to add this exemption, don't - * add it to any other method if you don't exactly know what it does - * - * - * @NoCSRFRequired - */ /** - * @NoAdminRequired - */ - - public function extract($nameOfFile, $directory, $external, $type){ - if ($this->encryptionManager->isEnabled()) { - $response = array(); - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Encryption is not supported yet"))); - return json_encode($response); - } - $file = $this->getFile($directory, $nameOfFile); - $dir = dirname($file); - //name of the file without extention - $filename = pathinfo($nameOfFile)['filename']; - $extractTo = $dir . '/' . $filename; - $tmpPath = "/extract_tmp/" . $filename ; - - if(array_key_exists('extension', pathinfo($filename)) && pathinfo($filename)['extension'] == "tar"){ - $tmpPath = '/extract_tmp/' . pathinfo($filename)['filename']; - } - - // if the file is un external storage - if($external){ - $extractTo = Filesystem::getLocalFolder('/') . $tmpPath; - } - - switch ($type) { - case 'zip': - $response = $this->extractZip($file, $filename, $extractTo); - break; - case 'rar': - $response = $this->extractRar($file, $filename, $extractTo); - break; - default: - // Check if the file is .tar.gz in order to do the extraction on a single step - if(array_key_exists('extension', pathinfo($filename)) && pathinfo($filename)['extension'] == "tar"){ - $clean_filename = pathinfo($filename)['filename']; - $extractTo = dirname($extractTo) . '/' . $clean_filename; - $response = $this->extractOther($file, $clean_filename, $extractTo); - $file = $extractTo . '/' . pathinfo($file)['filename']; - $filename = $clean_filename; - $response = $this->extractOther($file, $filename, $extractTo); - - // remove .tar file - unlink($file); - }else{ - $response = $this->extractOther($file, $filename, $extractTo); - } - break; - } - - $this->postExtract($filename, $directory, $tmpPath, $external); - return $response; - } - public function extractZip($file, $filename, $extractTo){ - $response = array(); - - if (!extension_loaded("zip")){ - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Zip extension is not available"))); - return json_encode($response); - } - - $zip = new ZipArchive(); - - if (!$zip->open($file) === TRUE){ - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Cannot open Zip file"))); - return json_encode($response); - } - - $zip->extractTo($extractTo); - $zip->close(); - $response = array_merge($response, array("code" => 1)); - return json_encode($response); - } - public function extractRar($file, $filename, $extractTo){ - $response = array(); - - if (!extension_loaded("rar")){ - exec('unrar x ' .escapeshellarg($file). ' -R ' .escapeshellarg($extractTo). '/ -o+',$output,$return); - if(sizeof($output) <= 4){ - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Oops something went wrong. Check that you have rar extension or unrar installed"))); - return json_encode($response); - } - }else{ - $rar_file = rar_open($file); - $list = rar_list($rar_file); - foreach($list as $archive_file) { - $entry = rar_entry_get($rar_file, $archive_file->getName()); - $entry->extract($extractTo); - } - rar_close($rar_file); - } - - $response = array_merge($response, array("code" => 1)); - return json_encode($response); - } - public function extractOther($file, $filename, $extractTo){ - $response = array(); - - exec('7za -y x ' .escapeshellarg($file). ' -o' .escapeshellarg($extractTo),$output,$return); - - if(sizeof($output) <= 5){ - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Oops something went wrong. Check that you have p7zip installed"))); - error_log($output); - - return json_encode($response); - } - $response = array_merge($response, array("code" => 1)); - return json_encode($response); - } - - //Register the new files to the NC filesystem - public function postExtract($filename, $directory, $tmpPath, $external){ - $NCDestination = $directory . '/' . $filename; - if($external){ - Filesystem::mkdir($tmpPath); - Filesystem::rename($tmpPath, $NCDestination); - Filesystem::rmdir(dirname($tmpPath)); - }else{ - Filesystem::mkdir($NCDestination); - } - } -} + * CAUTION: the @Stuff turns off security checks; for this page no admin is + * required and no CSRF check. If you don't know what CSRF is, read + * it up in the docs or you might create a security hole. This is + * basically the only required method to add this exemption, don't + * add it to any other method if you don't exactly know what it does + * + * + * @NoCSRFRequired + */ + /** + * @NoAdminRequired + */ + + public function extract($sourceFileName, $targetDirName, $directory, $external, $type) + { + if ($this->encryptionManager->isEnabled()) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Encryption is not supported yet')); + } + + $sourceFilePath = Filesystem::getLocalFile($directory . '/' . $sourceFileName); + $dir = dirname($sourceFilePath); + + //name of the file without extention + $fileNameWithoutExtension = pathinfo($sourceFileName)['filename']; + $isTarGz = array_key_exists('extension', pathinfo($fileNameWithoutExtension)) && pathinfo($fileNameWithoutExtension)['extension'] == 'tar'; + if ($isTarGz) { + $fileNameWithoutExtension = pathinfo($fileNameWithoutExtension)['filename']; + } + + $targetName = $fileNameWithoutExtension; + + if ($targetDirName !== $fileNameWithoutExtension && !empty($targetDirName)) { + $targetName = $targetDirName; + } + + $extractTo = $dir . '/' . $targetName; + $tmpPath = '/extract_tmp/' . $targetName; + $folderExists = Filesystem::is_dir($directory . '/' . $targetName); + + if ($folderExists) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Directory already exists'), 'dir' => $extractTo); + } + + // if the file is an external storage + if ($external) { + $extractTo = Filesystem::getLocalFolder('/') . $tmpPath; + } + + switch ($type) { + case 'zip': + $response = $this->extractZip($sourceFilePath, $extractTo); + break; + case 'rar': + $response = $this->extractRar($sourceFilePath, $extractTo); + break; + default: + $response = $this->extractOther($sourceFilePath, $extractTo); + + // Extract .tar from .gz + if ($isTarGz && $response['code'] == StatusCode::SUCCESS) { + // Extract .tar + $tarName = pathinfo($sourceFilePath)['filename']; + $tarFilePath = $extractTo . '/' . $tarName; + $response = $this->extractOther($tarFilePath, $extractTo); + + // Remove .tar file + unlink($tarFilePath); + } + break; + } + + $this->postExtract($targetName, $directory, $tmpPath, $external); + return $response; + } + + public function extractZip($file, $extractTo) + { + if (!extension_loaded('zip')) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Zip extension is not available')); + } + + $zip = new ZipArchive(); + + if (!$zip->open($file) === TRUE) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Cannot open Zip file')); + } + + $zip->extractTo($extractTo); + $zip->close(); + return array('code' => StatusCode::SUCCESS); + } + + public function extractRar($file, $extractTo) + { + if (!extension_loaded('rar')) { + exec('unrar x ' . escapeshellarg($file) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); + if (sizeof($output) <= 4) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have rar extension or unrar installed')); + } + } else { + $rar_file = rar_open($file); + $list = rar_list($rar_file); + foreach ($list as $archive_file) { + $entry = rar_entry_get($rar_file, $archive_file->getName()); + $entry->extract($extractTo); + } + rar_close($rar_file); + } + + return array('code' => StatusCode::SUCCESS); + } + + public function extractOther($file, $extractTo) + { + exec('7za -y x ' . escapeshellarg($file) . ' -o' . escapeshellarg($extractTo), $output, $return); + + if (sizeof($output) <= 5) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have p7zip installed')); + } + + return array('code' => StatusCode::SUCCESS); + } + + //Register the new files to the NC filesystem + public function postExtract($filename, $directory, $tmpPath, $external) + { + $NCDestination = $directory . '/' . $filename; + if ($external) { + Filesystem::mkdir($tmpPath); + Filesystem::rename($tmpPath, $NCDestination); + Filesystem::rmdir(dirname($tmpPath)); + } else { + Filesystem::mkdir($NCDestination); + } + } +} \ No newline at end of file From 1338d3c4243dbdfa580c634d8f8c035e53fc9dba Mon Sep 17 00:00:00 2001 From: agnisa Date: Wed, 1 Jun 2022 15:04:24 +0200 Subject: [PATCH 02/14] Protects before relative paths and trims the string --- lib/Controller/ExtractionController.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index 55e6dd0..18bfe1b 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -56,11 +56,14 @@ public function extract($sourceFileName, $targetDirName, $directory, $external, if ($this->encryptionManager->isEnabled()) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Encryption is not supported yet')); } + // Protects before relative paths + $targetDirName = str_replace('../', '', $targetDirName); + $targetDirName = trim($targetDirName); $sourceFilePath = Filesystem::getLocalFile($directory . '/' . $sourceFileName); $dir = dirname($sourceFilePath); - //name of the file without extention + // name of the file without extension $fileNameWithoutExtension = pathinfo($sourceFileName)['filename']; $isTarGz = array_key_exists('extension', pathinfo($fileNameWithoutExtension)) && pathinfo($fileNameWithoutExtension)['extension'] == 'tar'; if ($isTarGz) { @@ -173,4 +176,4 @@ public function postExtract($filename, $directory, $tmpPath, $external) Filesystem::mkdir($NCDestination); } } -} \ No newline at end of file +} From 1c308ec03badc839219558fabd564a3b05808965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Wed, 1 Jun 2022 16:05:24 +0200 Subject: [PATCH 03/14] added changelog and fixed composer.json --- CHANGELOG.md | 3 + composer.json | 5 +- composer.lock | 1665 +++++++++++++++++++++++++++++++++++++------------ 3 files changed, 1288 insertions(+), 385 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7aa4fdc..3ac5951 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.3.6 +- Added a dialog to change the target directory name + ## 1.3.5 - Fix issue on external storage diff --git a/composer.json b/composer.json index af36ae3..dd9f713 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "extract", + "name": "paullereverend/extract", "description": "Allows to extract archive from the web interface", "type": "project", "license": "AGPL", @@ -11,6 +11,7 @@ "require": { }, "require-dev": { - "phpunit/phpunit": "^5.4" + "phpunit/phpunit": "^9", + "christophwurst/nextcloud": "24" } } diff --git a/composer.lock b/composer.lock index 63d3ccd..fabc1f0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,41 +4,80 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "72ec7c4fb6871c4fa201f0dacf8bce9e", + "content-hash": "090be002beb869fbcbe6939e8f7f16ff", "packages": [], "packages-dev": [ + { + "name": "christophwurst/nextcloud", + "version": "v24.0.0", + "source": { + "type": "git", + "url": "https://github.com/ChristophWurst/nextcloud_composer.git", + "reference": "6ce63c3d29c59dc17394c8967981fd9272681713" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ChristophWurst/nextcloud_composer/zipball/6ce63c3d29c59dc17394c8967981fd9272681713", + "reference": "6ce63c3d29c59dc17394c8967981fd9272681713", + "shasum": "" + }, + "require": { + "php": "^7.4 || ~8.0 || ~8.1", + "psr/container": "^1.0", + "psr/event-dispatcher": "^1.0", + "psr/log": "^1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "24.0.0-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Christoph Wurst", + "email": "christoph@winzerhof-wurst.at" + } + ], + "description": "Composer package containing Nextcloud's public API (classes, interfaces)", + "support": { + "issues": "https://github.com/ChristophWurst/nextcloud_composer/issues", + "source": "https://github.com/ChristophWurst/nextcloud_composer/tree/v24.0.0" + }, + "time": "2022-05-09T13:50:27+00:00" + }, { "name": "doctrine/instantiator", - "version": "1.2.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -52,7 +91,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", @@ -61,41 +100,60 @@ "constructor", "instantiate" ], - "time": "2019-03-17T17:37:11+00:00" + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-03-03T08:28:38+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -109,39 +167,211 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "name": "nikic/php-parser", + "version": "v4.14.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { - "php": ">=5.5" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + }, + "time": "2022-05-31T20:59:12+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -163,44 +393,46 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -211,44 +443,50 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -261,42 +499,47 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -324,44 +567,52 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "version": "9.2.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -376,7 +627,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -387,29 +638,42 @@ "testing", "xunit" ], - "time": "2017-04-02T07:44:40+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -424,7 +688,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -434,26 +698,48 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -470,37 +756,47 @@ "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "template" + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { - "name": "phpunit/php-timer", - "version": "1.0.9", + "name": "phpunit/php-text-template", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -515,42 +811,51 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "timer" + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "2.0.2", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": "^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -565,63 +870,78 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "tokenizer" + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "5.7.27", + "version": "9.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "ext-soap": "*", + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -629,10 +949,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "9.5-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -655,45 +978,198 @@ "testing", "xunit" ], - "time": "2018-02-01T05:50:59+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-01T12:37:26+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "name": "psr/container", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" } }, - "autoload": { - "classmap": [ + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ "src/" ] }, @@ -704,43 +1180,104 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "abandoned": true, - "time": "2017-06-30T09:13:00+00:00" + "time": "2020-10-26T13:08:54+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -760,34 +1297,44 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -800,6 +1347,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -811,45 +1362,109 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -862,46 +1477,62 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -926,34 +1557,44 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "2.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -966,6 +1607,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -974,46 +1619,55 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], - "time": "2016-11-19T08:54:04+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "ext-dom": "*", + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -1021,7 +1675,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1044,33 +1698,101 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" }, { "name": "sebastian/object-enumerator", - "version": "2.0.1", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1090,32 +1812,97 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "2.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1128,14 +1915,14 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Adam Harvey", "email": "aharvey@php.net" @@ -1143,29 +1930,42 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1185,29 +1985,95 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1228,24 +2094,37 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.11.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "82ebae02209c21113908c229e9883c419720738a" + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", - "reference": "82ebae02209c21113908c229e9883c419720738a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" @@ -1253,16 +2132,20 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1270,12 +2153,12 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { - "name": "Gert de Pagter", - "email": "backendtea@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", @@ -1286,93 +2169,104 @@ "polyfill", "portable" ], - "time": "2019-02-06T07:57:58+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" }, { - "name": "symfony/yaml", - "version": "v4.2.4", + "name": "theseer/tokenizer", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "761fa560a937fd7686e5274ff89dcfa87a5047df" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/761fa560a937fd7686e5274ff89dcfa87a5047df", - "reference": "761fa560a937fd7686e5274ff89dcfa87a5047df", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://github.com/theseer", + "type": "github" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^8.5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -1396,7 +2290,11 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], @@ -1405,5 +2303,6 @@ "prefer-stable": false, "prefer-lowest": false, "platform": [], - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "2.3.0" } From 57001f8025740b0d51af4fe9c513e80e715d7c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Thu, 2 Jun 2022 11:15:01 +0200 Subject: [PATCH 04/14] fixed translation for title --- js/extraction.js | 2 +- l10n/de.js | 2 +- l10n/es.js | 2 +- l10n/uk.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/js/extraction.js b/js/extraction.js index fef44bf..20787c3 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -74,7 +74,7 @@ $(document).ready(function () { context.fileList.showFileBusyState(tr, false); OC.dialogs.alert( t('extract', response.desc), - t('extract', 'Error extracting' ) + " " + filename + t('extract', 'Error extracting ' ) + filename ); } } diff --git a/l10n/de.js b/l10n/de.js index 57341c1..b7d16e2 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting": "Fehler beim Entpacken von", + "Error extracting ": "Fehler beim Entpacken von", "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", diff --git a/l10n/es.js b/l10n/es.js index 9572cb7..0a7470a 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting": "Error al extraer", + "Error extracting ": "Error al extraer", "Encryption is not supported yet": "El cifrado aún no está soportado", "Zip extension is not available": "La extensión Zip no está disponible", "Cannot open Zip file": "No se puede abrir el archivo Zip", diff --git a/l10n/uk.js b/l10n/uk.js index 2993e9e..327b82b 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting": "Помилка з видобуванням", + "Error extracting ": "Помилка з видобуванням", "Encryption is not supported yet": "Шифрування ще не підтримується", "Zip extension is not available": "Розширення ZIP недоступне", "Cannot open Zip file": "Не вдається відкрити Zip-файл", From caaaedd16e046e6946df55a359ab46448b1e497a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Thu, 2 Jun 2022 11:57:56 +0200 Subject: [PATCH 05/14] fixed translation for title --- l10n/de.js | 2 +- l10n/de_DE.js | 2 +- l10n/el.js | 2 +- l10n/es.js | 2 +- l10n/uk.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/l10n/de.js b/l10n/de.js index b7d16e2..435708f 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting ": "Fehler beim Entpacken von", + "Error extracting ": "Fehler beim Entpacken von ", "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index d0b2def..4f59a58 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting ": "Fehler beim Entpacken", + "Error extracting ": "Fehler beim Entpacken ", "Encryption is not supported yet": "Verschlüsselung wird noch nicht unterstützt", "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", diff --git a/l10n/el.js b/l10n/el.js index ceb2e23..eb7d60f 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Extract here" : "Εξαγωγή εδώ", + "Extract here" : "Εξαγωγή εδώ ", "Error extracting " : "Σφάλμα αποσυμπίεσης ", "Encryption is not supported yet" : "Η κρυπτογράφηση δεν υποστηρίζεται ακόμη", "Zip extension is not available" : "Η επέκταση zip δεν είναι διαθέσιμη", diff --git a/l10n/es.js b/l10n/es.js index 0a7470a..9f815fb 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting ": "Error al extraer", + "Error extracting ": "Error al extraer ", "Encryption is not supported yet": "El cifrado aún no está soportado", "Zip extension is not available": "La extensión Zip no está disponible", "Cannot open Zip file": "No se puede abrir el archivo Zip", diff --git a/l10n/uk.js b/l10n/uk.js index 327b82b..8dd833e 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting ": "Помилка з видобуванням", + "Error extracting ": "Помилка з видобуванням ", "Encryption is not supported yet": "Шифрування ще не підтримується", "Zip extension is not available": "Розширення ZIP недоступне", "Cannot open Zip file": "Не вдається відкрити Zip-файл", From 1c1d0f4b6632aefd1f9a10badea2ff0d6b50ae3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Thu, 2 Jun 2022 11:58:39 +0200 Subject: [PATCH 06/14] fixed translation for title --- l10n/el.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n/el.js b/l10n/el.js index eb7d60f..ceb2e23 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Extract here" : "Εξαγωγή εδώ ", + "Extract here" : "Εξαγωγή εδώ", "Error extracting " : "Σφάλμα αποσυμπίεσης ", "Encryption is not supported yet" : "Η κρυπτογράφηση δεν υποστηρίζεται ακόμη", "Zip extension is not available" : "Η επέκταση zip δεν είναι διαθέσιμη", From 9a8f8fdca9f044bcc8f22639588624de09e93f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= <103562092+MarvinOehlerkingCap@users.noreply.github.com> Date: Thu, 2 Jun 2022 12:06:26 +0200 Subject: [PATCH 07/14] Feature/n21 132 duplicate folder error (#3) * added changelog and fixed composer.json * fixed translation for title --- CHANGELOG.md | 3 + composer.json | 5 +- composer.lock | 1665 +++++++++++++++++++++++++++++++++++----------- js/extraction.js | 2 +- l10n/de.js | 2 +- l10n/de_DE.js | 2 +- l10n/es.js | 2 +- l10n/uk.js | 2 +- 8 files changed, 1293 insertions(+), 390 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7aa4fdc..3ac5951 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.3.6 +- Added a dialog to change the target directory name + ## 1.3.5 - Fix issue on external storage diff --git a/composer.json b/composer.json index af36ae3..dd9f713 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "extract", + "name": "paullereverend/extract", "description": "Allows to extract archive from the web interface", "type": "project", "license": "AGPL", @@ -11,6 +11,7 @@ "require": { }, "require-dev": { - "phpunit/phpunit": "^5.4" + "phpunit/phpunit": "^9", + "christophwurst/nextcloud": "24" } } diff --git a/composer.lock b/composer.lock index 63d3ccd..fabc1f0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,41 +4,80 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "72ec7c4fb6871c4fa201f0dacf8bce9e", + "content-hash": "090be002beb869fbcbe6939e8f7f16ff", "packages": [], "packages-dev": [ + { + "name": "christophwurst/nextcloud", + "version": "v24.0.0", + "source": { + "type": "git", + "url": "https://github.com/ChristophWurst/nextcloud_composer.git", + "reference": "6ce63c3d29c59dc17394c8967981fd9272681713" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ChristophWurst/nextcloud_composer/zipball/6ce63c3d29c59dc17394c8967981fd9272681713", + "reference": "6ce63c3d29c59dc17394c8967981fd9272681713", + "shasum": "" + }, + "require": { + "php": "^7.4 || ~8.0 || ~8.1", + "psr/container": "^1.0", + "psr/event-dispatcher": "^1.0", + "psr/log": "^1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "24.0.0-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Christoph Wurst", + "email": "christoph@winzerhof-wurst.at" + } + ], + "description": "Composer package containing Nextcloud's public API (classes, interfaces)", + "support": { + "issues": "https://github.com/ChristophWurst/nextcloud_composer/issues", + "source": "https://github.com/ChristophWurst/nextcloud_composer/tree/v24.0.0" + }, + "time": "2022-05-09T13:50:27+00:00" + }, { "name": "doctrine/instantiator", - "version": "1.2.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -52,7 +91,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", @@ -61,41 +100,60 @@ "constructor", "instantiate" ], - "time": "2019-03-17T17:37:11+00:00" + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-03-03T08:28:38+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -109,39 +167,211 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "name": "nikic/php-parser", + "version": "v4.14.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { - "php": ">=5.5" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + }, + "time": "2022-05-31T20:59:12+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -163,44 +393,46 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -211,44 +443,50 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -261,42 +499,47 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -324,44 +567,52 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "version": "9.2.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -376,7 +627,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -387,29 +638,42 @@ "testing", "xunit" ], - "time": "2017-04-02T07:44:40+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -424,7 +688,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -434,26 +698,48 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -470,37 +756,47 @@ "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "template" + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { - "name": "phpunit/php-timer", - "version": "1.0.9", + "name": "phpunit/php-text-template", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -515,42 +811,51 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "timer" + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "2.0.2", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": "^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -565,63 +870,78 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "tokenizer" + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "5.7.27", + "version": "9.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "ext-soap": "*", + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -629,10 +949,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "9.5-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -655,45 +978,198 @@ "testing", "xunit" ], - "time": "2018-02-01T05:50:59+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-01T12:37:26+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "name": "psr/container", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" } }, - "autoload": { - "classmap": [ + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ "src/" ] }, @@ -704,43 +1180,104 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "abandoned": true, - "time": "2017-06-30T09:13:00+00:00" + "time": "2020-10-26T13:08:54+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -760,34 +1297,44 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -800,6 +1347,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -811,45 +1362,109 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -862,46 +1477,62 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -926,34 +1557,44 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "2.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -966,6 +1607,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -974,46 +1619,55 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], - "time": "2016-11-19T08:54:04+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "ext-dom": "*", + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -1021,7 +1675,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1044,33 +1698,101 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" }, { "name": "sebastian/object-enumerator", - "version": "2.0.1", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1090,32 +1812,97 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "2.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1128,14 +1915,14 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Adam Harvey", "email": "aharvey@php.net" @@ -1143,29 +1930,42 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1185,29 +1985,95 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1228,24 +2094,37 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.11.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "82ebae02209c21113908c229e9883c419720738a" + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", - "reference": "82ebae02209c21113908c229e9883c419720738a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" @@ -1253,16 +2132,20 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1270,12 +2153,12 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { - "name": "Gert de Pagter", - "email": "backendtea@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", @@ -1286,93 +2169,104 @@ "polyfill", "portable" ], - "time": "2019-02-06T07:57:58+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" }, { - "name": "symfony/yaml", - "version": "v4.2.4", + "name": "theseer/tokenizer", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "761fa560a937fd7686e5274ff89dcfa87a5047df" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/761fa560a937fd7686e5274ff89dcfa87a5047df", - "reference": "761fa560a937fd7686e5274ff89dcfa87a5047df", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://github.com/theseer", + "type": "github" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^8.5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -1396,7 +2290,11 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], @@ -1405,5 +2303,6 @@ "prefer-stable": false, "prefer-lowest": false, "platform": [], - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "2.3.0" } diff --git a/js/extraction.js b/js/extraction.js index fef44bf..20787c3 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -74,7 +74,7 @@ $(document).ready(function () { context.fileList.showFileBusyState(tr, false); OC.dialogs.alert( t('extract', response.desc), - t('extract', 'Error extracting' ) + " " + filename + t('extract', 'Error extracting ' ) + filename ); } } diff --git a/l10n/de.js b/l10n/de.js index 57341c1..435708f 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting": "Fehler beim Entpacken von", + "Error extracting ": "Fehler beim Entpacken von ", "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index d0b2def..4f59a58 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting ": "Fehler beim Entpacken", + "Error extracting ": "Fehler beim Entpacken ", "Encryption is not supported yet": "Verschlüsselung wird noch nicht unterstützt", "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", diff --git a/l10n/es.js b/l10n/es.js index 9572cb7..9f815fb 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting": "Error al extraer", + "Error extracting ": "Error al extraer ", "Encryption is not supported yet": "El cifrado aún no está soportado", "Zip extension is not available": "La extensión Zip no está disponible", "Cannot open Zip file": "No se puede abrir el archivo Zip", diff --git a/l10n/uk.js b/l10n/uk.js index 2993e9e..8dd833e 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -1,7 +1,7 @@ OC.L10N.register( "extract", { - "Error extracting": "Помилка з видобуванням", + "Error extracting ": "Помилка з видобуванням ", "Encryption is not supported yet": "Шифрування ще не підтримується", "Zip extension is not available": "Розширення ZIP недоступне", "Cannot open Zip file": "Не вдається відкрити Zip-файл", From 34b5c9ac41747691a5eccfe3949a68f2c3ad62fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Tue, 7 Jun 2022 14:22:35 +0200 Subject: [PATCH 08/14] now supports s3 --- js/extraction.js | 10 +- lib/Controller/ExtractionController.php | 206 ++++++++++++++++++------ 2 files changed, 161 insertions(+), 55 deletions(-) diff --git a/js/extraction.js b/js/extraction.js index 20787c3..1a5ee33 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -34,10 +34,8 @@ $(document).ready(function () { } var data = { - sourceFileName: filename, + sourcePath: context.dir ? context.dir + '/' + filename : filename, targetDirName: dirName, - directory: context.dir, - external: context.fileInfoModel.attributes.mountType && context.fileInfoModel.attributes.mountType.startsWith("external") ? 1 : 0, type: type }; @@ -47,7 +45,7 @@ $(document).ready(function () { var $input = $(''); self.createDialog( t('extract', 'Extract'), - ($dialog, $content, $cancelButton, $confirmButton) => { + (_$dialog, $content, _$cancelButton, $confirmButton) => { $confirmButton.text(t('extract', 'Extract')); var $text = $('

'); @@ -87,6 +85,7 @@ $(document).ready(function () { init: function () { var self = this; + // ZIP OCA.Files.fileActions.registerAction({ name: 'extractzip', displayName: t('extract', 'Extract'), @@ -111,9 +110,8 @@ $(document).ready(function () { self.extractDialog(filename, context, 'rar'); } }); + // TAR - //'application/x-tar', 'application/x-7z-compressed' - //var types = []; var types = ['application/x-tar', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-deb', 'application/x-gzip']; types.forEach(type => { OCA.Files.fileActions.registerAction({ diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index 18bfe1b..8612112 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -2,10 +2,16 @@ namespace OCA\Extract\Controller; +use OCP\Files\IRootFolder; +use OCP\Files\Storage\IStorage; use OCP\IRequest; use OCP\AppFramework\Controller; +use Psr\Log\LoggerInterface; use ZipArchive; use Rar; +use FilesystemIterator; +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; use OCP\IL10N; use OC\Files\Filesystem; use OCP\Encryption\IManager; @@ -26,12 +32,25 @@ class ExtractionController extends Controller private $userId; - public function __construct($AppName, IRequest $request, IL10N $l, IManager $encryptionManager, $UserId) + /** @var LoggerInterface */ + private $logger; + + /** @var IRootFolder */ + private $rootFolder; + + /** @var string */ + private $transactionId; + + public function __construct($AppName, IRequest $request, IL10N $l, IManager $encryptionManager, $UserId, LoggerInterface $logger, IRootFolder $rootFolder) { parent::__construct($AppName, $request); $this->l = $l; $this->encryptionManager = $encryptionManager; $this->userId = $UserId; + $this->logger = $logger; + $this->rootFolder = $rootFolder; + + $this->transactionId = uniqid('nextcloud_extract-'); \OC_Util::tearDownFS(); \OC_Util::setupFS($this->userId); @@ -43,66 +62,74 @@ public function __construct($AppName, IRequest $request, IL10N $l, IManager $enc * it up in the docs or you might create a security hole. This is * basically the only required method to add this exemption, don't * add it to any other method if you don't exactly know what it does - * - * - * @NoCSRFRequired */ /** + * @param $sourcePath + * @param $targetDirName + * @param $type + * @return array + * @throws \OCP\Files\NotFoundException + * + * @NoCSRFRequired * @NoAdminRequired */ - - public function extract($sourceFileName, $targetDirName, $directory, $external, $type) + public function extract($sourcePath, $targetDirName, $type) { if ($this->encryptionManager->isEnabled()) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Encryption is not supported yet')); } - // Protects before relative paths - $targetDirName = str_replace('../', '', $targetDirName); - $targetDirName = trim($targetDirName); - - $sourceFilePath = Filesystem::getLocalFile($directory . '/' . $sourceFileName); - $dir = dirname($sourceFilePath); - - // name of the file without extension - $fileNameWithoutExtension = pathinfo($sourceFileName)['filename']; - $isTarGz = array_key_exists('extension', pathinfo($fileNameWithoutExtension)) && pathinfo($fileNameWithoutExtension)['extension'] == 'tar'; - if ($isTarGz) { - $fileNameWithoutExtension = pathinfo($fileNameWithoutExtension)['filename']; + + $absoluteFilePath = Filesystem::getView()->getLocalFile($sourcePath); + if ($absoluteFilePath === null) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Archive file not found')); } - $targetName = $fileNameWithoutExtension; + // Path to the File relative to the mount point + $internalDir = dirname($sourcePath); + $isExternal = $this->isExternalStorage($internalDir); - if ($targetDirName !== $fileNameWithoutExtension && !empty($targetDirName)) { - $targetName = $targetDirName; + // Make the target directory name + $targetDirName = $this->sanitizeTargetPath($targetDirName); + $fileNameWithoutExtension = $this->getFileNameWithoutExtension($absoluteFilePath, $isTarGz); + + if (empty($targetDirName)) { + $targetDirName = $fileNameWithoutExtension; } - $extractTo = $dir . '/' . $targetName; - $tmpPath = '/extract_tmp/' . $targetName; - $folderExists = Filesystem::is_dir($directory . '/' . $targetName); + $internalTargetPath = "$internalDir/$targetDirName"; + // Error if the target folder already exists + $folderExists = Filesystem::is_dir($internalTargetPath); if ($folderExists) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Directory already exists'), 'dir' => $extractTo); + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Directory already exists')); } - // if the file is an external storage - if ($external) { - $extractTo = Filesystem::getLocalFolder('/') . $tmpPath; + // Extraction target + $extractTo = dirname($absoluteFilePath) . '/' . $targetDirName; + if ($isExternal) { + $transactionDir = '/tmp/' . $this->transactionId; + + // Remove leading '/' from S3 path + $internalDir = substr($internalDir, 0, 1) === '/' ? substr($internalDir, 1) : $internalDir; + $targetDir = strlen($internalDir) > 0 ? "$internalDir/$targetDirName" : $targetDirName; + + $extractTo = "$transactionDir/$targetDir"; } switch ($type) { case 'zip': - $response = $this->extractZip($sourceFilePath, $extractTo); + $response = $this->extractZip($absoluteFilePath, $extractTo); break; case 'rar': - $response = $this->extractRar($sourceFilePath, $extractTo); + $response = $this->extractRar($absoluteFilePath, $extractTo); break; default: - $response = $this->extractOther($sourceFilePath, $extractTo); + $response = $this->extractOther($absoluteFilePath, $extractTo); // Extract .tar from .gz if ($isTarGz && $response['code'] == StatusCode::SUCCESS) { // Extract .tar - $tarName = pathinfo($sourceFilePath)['filename']; + $tarName = pathinfo($absoluteFilePath)['filename']; $tarFilePath = $extractTo . '/' . $tarName; $response = $this->extractOther($tarFilePath, $extractTo); @@ -112,11 +139,23 @@ public function extract($sourceFileName, $targetDirName, $directory, $external, break; } - $this->postExtract($targetName, $directory, $tmpPath, $external); + // Register the new files to the NC filesystem + if ($isExternal) { + $this->moveFromTmp(true); + } else { + Filesystem::mkdir($internalTargetPath); + } return $response; } - public function extractZip($file, $extractTo) + /** + * Extracts a zip archive + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * @return array json response + */ + public function extractZip(string $filePath, string $extractTo): array { if (!extension_loaded('zip')) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Zip extension is not available')); @@ -124,7 +163,7 @@ public function extractZip($file, $extractTo) $zip = new ZipArchive(); - if (!$zip->open($file) === TRUE) { + if (!$zip->open($filePath) === TRUE) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Cannot open Zip file')); } @@ -133,15 +172,22 @@ public function extractZip($file, $extractTo) return array('code' => StatusCode::SUCCESS); } - public function extractRar($file, $extractTo) + /** + * Extracts a rar archive + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * @return array json response + */ + public function extractRar(string $filePath, string $extractTo): array { if (!extension_loaded('rar')) { - exec('unrar x ' . escapeshellarg($file) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); + exec('unrar x ' . escapeshellarg($filePath) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); if (sizeof($output) <= 4) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have rar extension or unrar installed')); } } else { - $rar_file = rar_open($file); + $rar_file = rar_open($filePath); $list = rar_list($rar_file); foreach ($list as $archive_file) { $entry = rar_entry_get($rar_file, $archive_file->getName()); @@ -153,9 +199,16 @@ public function extractRar($file, $extractTo) return array('code' => StatusCode::SUCCESS); } - public function extractOther($file, $extractTo) + /** + * Extracts a other archive (tar, tar.gz) + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * @return array json response + */ + public function extractOther(string $filePath, string $extractTo): array { - exec('7za -y x ' . escapeshellarg($file) . ' -o' . escapeshellarg($extractTo), $output, $return); + exec('7za -y x ' . escapeshellarg($filePath) . ' -o' . escapeshellarg($extractTo), $output, $return); if (sizeof($output) <= 5) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have p7zip installed')); @@ -164,16 +217,71 @@ public function extractOther($file, $extractTo) return array('code' => StatusCode::SUCCESS); } - //Register the new files to the NC filesystem - public function postExtract($filename, $directory, $tmpPath, $external) + /** + * Sanitizes a raw target path + * + * @param string $dir raw path + * @return string sanitized path + */ + private function sanitizeTargetPath(string $dir): string { - $NCDestination = $directory . '/' . $filename; - if ($external) { - Filesystem::mkdir($tmpPath); - Filesystem::rename($tmpPath, $NCDestination); - Filesystem::rmdir(dirname($tmpPath)); - } else { - Filesystem::mkdir($NCDestination); + return trim(str_replace('../', '', $dir)); + } + + /** + * Check if the given path is part of an external storage provider + * + * @param string $internalPath any path in the target storage + * @return bool + * @throws \OCP\Files\NotFoundException + */ + public function isExternalStorage(string $internalPath): bool + { + return !$this->getStorage($internalPath)->isLocal(); + } + + /** + * Get the storage interface at a given path + * + * @param string $internalPath any path in the target storage + * @return IStorage + * @throws \OCP\Files\NotFoundException + */ + public function getStorage(string $internalPath): IStorage + { + $mountPointDir = Filesystem::getView()->getMountPoint($internalPath); + return $this->rootFolder->get($mountPointDir)->getStorage(); + } + + public function getFileNameWithoutExtension(string $path, &$isTarGz): string + { + $fileName = pathinfo($path)['filename']; + $isTarGz = array_key_exists('extension', pathinfo($fileName)) && pathinfo($fileName)['extension'] == 'tar'; + return $isTarGz ? pathinfo($fileName)['filename'] : $fileName; + } + + public function moveFromTmp(bool $isExternalPath): void + { + $transactionDir = '/tmp/' . $this->transactionId . '/'; + + $it = new RecursiveDirectoryIterator($transactionDir, FilesystemIterator::SKIP_DOTS); + $it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + + foreach ($it as $fileInfo) { + if ($fileInfo->isFile()) { + $tmpFilePath = $fileInfo->getPathname(); + $storageFilePath = substr($tmpFilePath, strlen($transactionDir)); + + if ($isExternalPath) { + $storageFilePath = '/' . $storageFilePath; + } + + // move from tmp to nextcloud storage + Filesystem::fromTmpFile($tmpFilePath, $storageFilePath); + } elseif ($fileInfo->isDir()) { + rmdir($fileInfo->getPathname()); + } } + rmdir($transactionDir); } } From a096408ba22a4add8649aca3a51a878afb9c86dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Tue, 7 Jun 2022 15:11:46 +0200 Subject: [PATCH 09/14] prevent empty string in dialog + log successful extraction --- js/extraction.js | 8 ++++++++ lib/Controller/ExtractionController.php | 2 ++ 2 files changed, 10 insertions(+) diff --git a/js/extraction.js b/js/extraction.js index 1a5ee33..68cd81a 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -54,6 +54,14 @@ $(document).ready(function () { $input.attr('type', 'text').attr('id', 'file-name-input').attr('placeholder', t('extract', 'File Name')).attr('value', dirName); $content.append($input); + + $input.on('input', () => { + if($input.val().trim() === '') { + $confirmButton.prop("disabled", true); + } else { + $confirmButton.prop("disabled", false); + } + }); }, (result) => { context.fileList.showFileBusyState(tr, false); diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index 8612112..a4045de 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -145,6 +145,8 @@ public function extract($sourcePath, $targetDirName, $type) } else { Filesystem::mkdir($internalTargetPath); } + + $this->logger->info("Successfully extracted '$sourcePath' to '$internalTargetPath' ($this->transactionId)"); return $response; } From d1dd9eae253c1fe85854ae87f32443747305296f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= <103562092+MarvinOehlerkingCap@users.noreply.github.com> Date: Tue, 7 Jun 2022 15:13:12 +0200 Subject: [PATCH 10/14] N21-141 now supports s3 (#4) * now supports s3 * prevent empty string in dialog + log successful extraction --- js/extraction.js | 18 +- lib/Controller/ExtractionController.php | 208 ++++++++++++++++++------ 2 files changed, 171 insertions(+), 55 deletions(-) diff --git a/js/extraction.js b/js/extraction.js index 20787c3..68cd81a 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -34,10 +34,8 @@ $(document).ready(function () { } var data = { - sourceFileName: filename, + sourcePath: context.dir ? context.dir + '/' + filename : filename, targetDirName: dirName, - directory: context.dir, - external: context.fileInfoModel.attributes.mountType && context.fileInfoModel.attributes.mountType.startsWith("external") ? 1 : 0, type: type }; @@ -47,7 +45,7 @@ $(document).ready(function () { var $input = $(''); self.createDialog( t('extract', 'Extract'), - ($dialog, $content, $cancelButton, $confirmButton) => { + (_$dialog, $content, _$cancelButton, $confirmButton) => { $confirmButton.text(t('extract', 'Extract')); var $text = $('

'); @@ -56,6 +54,14 @@ $(document).ready(function () { $input.attr('type', 'text').attr('id', 'file-name-input').attr('placeholder', t('extract', 'File Name')).attr('value', dirName); $content.append($input); + + $input.on('input', () => { + if($input.val().trim() === '') { + $confirmButton.prop("disabled", true); + } else { + $confirmButton.prop("disabled", false); + } + }); }, (result) => { context.fileList.showFileBusyState(tr, false); @@ -87,6 +93,7 @@ $(document).ready(function () { init: function () { var self = this; + // ZIP OCA.Files.fileActions.registerAction({ name: 'extractzip', displayName: t('extract', 'Extract'), @@ -111,9 +118,8 @@ $(document).ready(function () { self.extractDialog(filename, context, 'rar'); } }); + // TAR - //'application/x-tar', 'application/x-7z-compressed' - //var types = []; var types = ['application/x-tar', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-deb', 'application/x-gzip']; types.forEach(type => { OCA.Files.fileActions.registerAction({ diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index 18bfe1b..a4045de 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -2,10 +2,16 @@ namespace OCA\Extract\Controller; +use OCP\Files\IRootFolder; +use OCP\Files\Storage\IStorage; use OCP\IRequest; use OCP\AppFramework\Controller; +use Psr\Log\LoggerInterface; use ZipArchive; use Rar; +use FilesystemIterator; +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; use OCP\IL10N; use OC\Files\Filesystem; use OCP\Encryption\IManager; @@ -26,12 +32,25 @@ class ExtractionController extends Controller private $userId; - public function __construct($AppName, IRequest $request, IL10N $l, IManager $encryptionManager, $UserId) + /** @var LoggerInterface */ + private $logger; + + /** @var IRootFolder */ + private $rootFolder; + + /** @var string */ + private $transactionId; + + public function __construct($AppName, IRequest $request, IL10N $l, IManager $encryptionManager, $UserId, LoggerInterface $logger, IRootFolder $rootFolder) { parent::__construct($AppName, $request); $this->l = $l; $this->encryptionManager = $encryptionManager; $this->userId = $UserId; + $this->logger = $logger; + $this->rootFolder = $rootFolder; + + $this->transactionId = uniqid('nextcloud_extract-'); \OC_Util::tearDownFS(); \OC_Util::setupFS($this->userId); @@ -43,66 +62,74 @@ public function __construct($AppName, IRequest $request, IL10N $l, IManager $enc * it up in the docs or you might create a security hole. This is * basically the only required method to add this exemption, don't * add it to any other method if you don't exactly know what it does - * - * - * @NoCSRFRequired */ /** + * @param $sourcePath + * @param $targetDirName + * @param $type + * @return array + * @throws \OCP\Files\NotFoundException + * + * @NoCSRFRequired * @NoAdminRequired */ - - public function extract($sourceFileName, $targetDirName, $directory, $external, $type) + public function extract($sourcePath, $targetDirName, $type) { if ($this->encryptionManager->isEnabled()) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Encryption is not supported yet')); } - // Protects before relative paths - $targetDirName = str_replace('../', '', $targetDirName); - $targetDirName = trim($targetDirName); - - $sourceFilePath = Filesystem::getLocalFile($directory . '/' . $sourceFileName); - $dir = dirname($sourceFilePath); - - // name of the file without extension - $fileNameWithoutExtension = pathinfo($sourceFileName)['filename']; - $isTarGz = array_key_exists('extension', pathinfo($fileNameWithoutExtension)) && pathinfo($fileNameWithoutExtension)['extension'] == 'tar'; - if ($isTarGz) { - $fileNameWithoutExtension = pathinfo($fileNameWithoutExtension)['filename']; + + $absoluteFilePath = Filesystem::getView()->getLocalFile($sourcePath); + if ($absoluteFilePath === null) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Archive file not found')); } - $targetName = $fileNameWithoutExtension; + // Path to the File relative to the mount point + $internalDir = dirname($sourcePath); + $isExternal = $this->isExternalStorage($internalDir); - if ($targetDirName !== $fileNameWithoutExtension && !empty($targetDirName)) { - $targetName = $targetDirName; + // Make the target directory name + $targetDirName = $this->sanitizeTargetPath($targetDirName); + $fileNameWithoutExtension = $this->getFileNameWithoutExtension($absoluteFilePath, $isTarGz); + + if (empty($targetDirName)) { + $targetDirName = $fileNameWithoutExtension; } - $extractTo = $dir . '/' . $targetName; - $tmpPath = '/extract_tmp/' . $targetName; - $folderExists = Filesystem::is_dir($directory . '/' . $targetName); + $internalTargetPath = "$internalDir/$targetDirName"; + // Error if the target folder already exists + $folderExists = Filesystem::is_dir($internalTargetPath); if ($folderExists) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Directory already exists'), 'dir' => $extractTo); + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Directory already exists')); } - // if the file is an external storage - if ($external) { - $extractTo = Filesystem::getLocalFolder('/') . $tmpPath; + // Extraction target + $extractTo = dirname($absoluteFilePath) . '/' . $targetDirName; + if ($isExternal) { + $transactionDir = '/tmp/' . $this->transactionId; + + // Remove leading '/' from S3 path + $internalDir = substr($internalDir, 0, 1) === '/' ? substr($internalDir, 1) : $internalDir; + $targetDir = strlen($internalDir) > 0 ? "$internalDir/$targetDirName" : $targetDirName; + + $extractTo = "$transactionDir/$targetDir"; } switch ($type) { case 'zip': - $response = $this->extractZip($sourceFilePath, $extractTo); + $response = $this->extractZip($absoluteFilePath, $extractTo); break; case 'rar': - $response = $this->extractRar($sourceFilePath, $extractTo); + $response = $this->extractRar($absoluteFilePath, $extractTo); break; default: - $response = $this->extractOther($sourceFilePath, $extractTo); + $response = $this->extractOther($absoluteFilePath, $extractTo); // Extract .tar from .gz if ($isTarGz && $response['code'] == StatusCode::SUCCESS) { // Extract .tar - $tarName = pathinfo($sourceFilePath)['filename']; + $tarName = pathinfo($absoluteFilePath)['filename']; $tarFilePath = $extractTo . '/' . $tarName; $response = $this->extractOther($tarFilePath, $extractTo); @@ -112,11 +139,25 @@ public function extract($sourceFileName, $targetDirName, $directory, $external, break; } - $this->postExtract($targetName, $directory, $tmpPath, $external); + // Register the new files to the NC filesystem + if ($isExternal) { + $this->moveFromTmp(true); + } else { + Filesystem::mkdir($internalTargetPath); + } + + $this->logger->info("Successfully extracted '$sourcePath' to '$internalTargetPath' ($this->transactionId)"); return $response; } - public function extractZip($file, $extractTo) + /** + * Extracts a zip archive + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * @return array json response + */ + public function extractZip(string $filePath, string $extractTo): array { if (!extension_loaded('zip')) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Zip extension is not available')); @@ -124,7 +165,7 @@ public function extractZip($file, $extractTo) $zip = new ZipArchive(); - if (!$zip->open($file) === TRUE) { + if (!$zip->open($filePath) === TRUE) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Cannot open Zip file')); } @@ -133,15 +174,22 @@ public function extractZip($file, $extractTo) return array('code' => StatusCode::SUCCESS); } - public function extractRar($file, $extractTo) + /** + * Extracts a rar archive + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * @return array json response + */ + public function extractRar(string $filePath, string $extractTo): array { if (!extension_loaded('rar')) { - exec('unrar x ' . escapeshellarg($file) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); + exec('unrar x ' . escapeshellarg($filePath) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); if (sizeof($output) <= 4) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have rar extension or unrar installed')); } } else { - $rar_file = rar_open($file); + $rar_file = rar_open($filePath); $list = rar_list($rar_file); foreach ($list as $archive_file) { $entry = rar_entry_get($rar_file, $archive_file->getName()); @@ -153,9 +201,16 @@ public function extractRar($file, $extractTo) return array('code' => StatusCode::SUCCESS); } - public function extractOther($file, $extractTo) + /** + * Extracts a other archive (tar, tar.gz) + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * @return array json response + */ + public function extractOther(string $filePath, string $extractTo): array { - exec('7za -y x ' . escapeshellarg($file) . ' -o' . escapeshellarg($extractTo), $output, $return); + exec('7za -y x ' . escapeshellarg($filePath) . ' -o' . escapeshellarg($extractTo), $output, $return); if (sizeof($output) <= 5) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have p7zip installed')); @@ -164,16 +219,71 @@ public function extractOther($file, $extractTo) return array('code' => StatusCode::SUCCESS); } - //Register the new files to the NC filesystem - public function postExtract($filename, $directory, $tmpPath, $external) + /** + * Sanitizes a raw target path + * + * @param string $dir raw path + * @return string sanitized path + */ + private function sanitizeTargetPath(string $dir): string + { + return trim(str_replace('../', '', $dir)); + } + + /** + * Check if the given path is part of an external storage provider + * + * @param string $internalPath any path in the target storage + * @return bool + * @throws \OCP\Files\NotFoundException + */ + public function isExternalStorage(string $internalPath): bool { - $NCDestination = $directory . '/' . $filename; - if ($external) { - Filesystem::mkdir($tmpPath); - Filesystem::rename($tmpPath, $NCDestination); - Filesystem::rmdir(dirname($tmpPath)); - } else { - Filesystem::mkdir($NCDestination); + return !$this->getStorage($internalPath)->isLocal(); + } + + /** + * Get the storage interface at a given path + * + * @param string $internalPath any path in the target storage + * @return IStorage + * @throws \OCP\Files\NotFoundException + */ + public function getStorage(string $internalPath): IStorage + { + $mountPointDir = Filesystem::getView()->getMountPoint($internalPath); + return $this->rootFolder->get($mountPointDir)->getStorage(); + } + + public function getFileNameWithoutExtension(string $path, &$isTarGz): string + { + $fileName = pathinfo($path)['filename']; + $isTarGz = array_key_exists('extension', pathinfo($fileName)) && pathinfo($fileName)['extension'] == 'tar'; + return $isTarGz ? pathinfo($fileName)['filename'] : $fileName; + } + + public function moveFromTmp(bool $isExternalPath): void + { + $transactionDir = '/tmp/' . $this->transactionId . '/'; + + $it = new RecursiveDirectoryIterator($transactionDir, FilesystemIterator::SKIP_DOTS); + $it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + + foreach ($it as $fileInfo) { + if ($fileInfo->isFile()) { + $tmpFilePath = $fileInfo->getPathname(); + $storageFilePath = substr($tmpFilePath, strlen($transactionDir)); + + if ($isExternalPath) { + $storageFilePath = '/' . $storageFilePath; + } + + // move from tmp to nextcloud storage + Filesystem::fromTmpFile($tmpFilePath, $storageFilePath); + } elseif ($fileInfo->isDir()) { + rmdir($fileInfo->getPathname()); + } } + rmdir($transactionDir); } } From 539c52a6aa7403940182d7631a933eaaa751fb94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= <103562092+MarvinOehlerkingCap@users.noreply.github.com> Date: Wed, 8 Jun 2022 14:14:04 +0200 Subject: [PATCH 11/14] increase min-width of dialog to 300px (#5) --- js/extraction.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/extraction.js b/js/extraction.js index 68cd81a..dab25f5 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -45,7 +45,9 @@ $(document).ready(function () { var $input = $(''); self.createDialog( t('extract', 'Extract'), - (_$dialog, $content, _$cancelButton, $confirmButton) => { + ($dialog, $content, _$cancelButton, $confirmButton) => { + $dialog.css("min-width", "300px"); + $confirmButton.text(t('extract', 'Extract')); var $text = $('

'); From 5b220b029c48742e4abbc4ee1d5f6aa6eeb2857f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Fri, 10 Jun 2022 12:45:19 +0200 Subject: [PATCH 12/14] fixed tar.gz for external storage --- lib/Controller/ExtractionController.php | 61 +++++++++++++++++-------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index a4045de..249bb4c 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -79,23 +79,30 @@ public function extract($sourcePath, $targetDirName, $type) return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Encryption is not supported yet')); } + // Absolute file path to the local file, downloads tmp file if primary storage is external (S3) $absoluteFilePath = Filesystem::getView()->getLocalFile($sourcePath); + $this->logger->error($absoluteFilePath); if ($absoluteFilePath === null) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Archive file not found')); } - // Path to the File relative to the mount point + // Path to the file in Nextclouds internal filesystem $internalDir = dirname($sourcePath); + $isExternal = $this->isExternalStorage($internalDir); + // Tar gz files downloaded from external storage look like '/tmp/oc_tmp_LNmlJI-.gz' in $absoluteFilePath, so $sourcePath has to be used + $isTarGz = self::isTarGz($sourcePath); + // Make the target directory name $targetDirName = $this->sanitizeTargetPath($targetDirName); - $fileNameWithoutExtension = $this->getFileNameWithoutExtension($absoluteFilePath, $isTarGz); + $fileNameWithoutExtension = self::getFileNameWithoutExtension($absoluteFilePath); if (empty($targetDirName)) { $targetDirName = $fileNameWithoutExtension; } + // Path to the target folder in Nextclouds internal filesystem $internalTargetPath = "$internalDir/$targetDirName"; // Error if the target folder already exists @@ -104,12 +111,12 @@ public function extract($sourcePath, $targetDirName, $type) return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Directory already exists')); } - // Extraction target + // Path to the target folder in local filesystem $extractTo = dirname($absoluteFilePath) . '/' . $targetDirName; if ($isExternal) { $transactionDir = '/tmp/' . $this->transactionId; - // Remove leading '/' from S3 path + // Remove leading '/' from external storage path $internalDir = substr($internalDir, 0, 1) === '/' ? substr($internalDir, 1) : $internalDir; $targetDir = strlen($internalDir) > 0 ? "$internalDir/$targetDirName" : $targetDirName; @@ -130,6 +137,7 @@ public function extract($sourcePath, $targetDirName, $type) if ($isTarGz && $response['code'] == StatusCode::SUCCESS) { // Extract .tar $tarName = pathinfo($absoluteFilePath)['filename']; + $tarFilePath = $extractTo . '/' . $tarName; $response = $this->extractOther($tarFilePath, $extractTo); @@ -141,7 +149,7 @@ public function extract($sourcePath, $targetDirName, $type) // Register the new files to the NC filesystem if ($isExternal) { - $this->moveFromTmp(true); + $this->moveFromTmp(); } else { Filesystem::mkdir($internalTargetPath); } @@ -255,14 +263,11 @@ public function getStorage(string $internalPath): IStorage return $this->rootFolder->get($mountPointDir)->getStorage(); } - public function getFileNameWithoutExtension(string $path, &$isTarGz): string - { - $fileName = pathinfo($path)['filename']; - $isTarGz = array_key_exists('extension', pathinfo($fileName)) && pathinfo($fileName)['extension'] == 'tar'; - return $isTarGz ? pathinfo($fileName)['filename'] : $fileName; - } - - public function moveFromTmp(bool $isExternalPath): void + /** + * Moves the locally generated files from the /tmp/ folder from this transaction to the nextcloud storage. + * This is the case if the file for this transaction is from an external storage (S3) + */ + public function moveFromTmp(): void { $transactionDir = '/tmp/' . $this->transactionId . '/'; @@ -272,11 +277,7 @@ public function moveFromTmp(bool $isExternalPath): void foreach ($it as $fileInfo) { if ($fileInfo->isFile()) { $tmpFilePath = $fileInfo->getPathname(); - $storageFilePath = substr($tmpFilePath, strlen($transactionDir)); - - if ($isExternalPath) { - $storageFilePath = '/' . $storageFilePath; - } + $storageFilePath = '/' . substr($tmpFilePath, strlen($transactionDir)); // move from tmp to nextcloud storage Filesystem::fromTmpFile($tmpFilePath, $storageFilePath); @@ -286,4 +287,28 @@ public function moveFromTmp(bool $isExternalPath): void } rmdir($transactionDir); } + + /** + * Returns the name of the file at the given path without its extension + * + * @param string $path path to the file + * @return string file name without extension + */ + public static function getFileNameWithoutExtension(string $path): string + { + $fileName = pathinfo($path)['filename']; + return self::isTarGz($path) ? pathinfo($fileName)['filename'] : $fileName; + } + + /** + * Checks if the file at the given path has the ending .tar.* + * + * @param string $path path to the file + * @return bool is tar.gz + */ + public static function isTarGz(string $path): bool + { + $fileName = pathinfo($path)['filename']; + return array_key_exists('extension', pathinfo($fileName)) && pathinfo($fileName)['extension'] == 'tar'; + } } From e6d23704278e71018211b65defca499bc87b11f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= <103562092+MarvinOehlerkingCap@users.noreply.github.com> Date: Mon, 10 Jul 2023 13:25:35 +0200 Subject: [PATCH 13/14] N21-1040 Update for Nextcloud 26 (#7) --- .tx/config | 9 +- CHANGELOG.md | 3 + appinfo/info.xml | 4 +- composer.json | 4 +- composer.lock | 639 +++++------------------- js/extraction.js | 36 +- l10n/ar.js | 15 + l10n/ar.json | 13 + l10n/az.js | 12 + l10n/az.json | 10 + l10n/ca.js | 2 +- l10n/ca.json | 2 +- l10n/de.js | 4 +- l10n/de.json | 4 +- l10n/en_GB.js | 15 + l10n/en_GB.json | 13 + l10n/gl.js | 1 + l10n/gl.json | 1 + l10n/he.js | 1 + l10n/he.json | 1 + l10n/ko.js | 4 +- l10n/ko.json | 4 +- l10n/nb.js | 12 + l10n/nb.json | 10 + l10n/sr.js | 4 + l10n/sr.json | 4 + l10n/sv.js | 7 +- l10n/sv.json | 7 +- l10n/tr.js | 2 +- l10n/tr.json | 2 +- l10n/uk.js | 7 +- l10n/uk.json | 7 +- l10n/zh_CN.js | 4 +- l10n/zh_CN.json | 4 +- lib/Controller/ExtractionController.php | 39 +- 35 files changed, 338 insertions(+), 568 deletions(-) create mode 100644 l10n/ar.js create mode 100644 l10n/ar.json create mode 100644 l10n/az.js create mode 100644 l10n/az.json create mode 100644 l10n/en_GB.js create mode 100644 l10n/en_GB.json create mode 100644 l10n/nb.js create mode 100644 l10n/nb.json diff --git a/.tx/config b/.tx/config index 88c378d..7d354aa 100644 --- a/.tx/config +++ b/.tx/config @@ -1,9 +1,10 @@ [main] -host = https://www.transifex.com -lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja +host = https://www.transifex.com +lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi -[nextcloud.extract] +[o:nextcloud:p:nextcloud:r:extract] file_filter = translationfiles//extract.po source_file = translationfiles/templates/extract.pot source_lang = en -type = PO +type = PO + diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ac5951..ed133ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.3.8 +- NC26 support + ## 1.3.6 - Added a dialog to change the target directory name diff --git a/appinfo/info.xml b/appinfo/info.xml index 7cac8c0..aff9310 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -29,7 +29,7 @@ * **Note :** Encrypted files are not supported yet ]]> - 1.3.6 + 1.3.8 agpl Paul Lereverend Extract @@ -38,7 +38,7 @@ https://github.com/PaulLereverend/NextcloudExtract https://github.com/PaulLereverend/NextcloudExtract/issues - + diff --git a/composer.json b/composer.json index dd9f713..4c5fe3a 100644 --- a/composer.json +++ b/composer.json @@ -9,9 +9,11 @@ } ], "require": { + "php": ">=8.2", + "ext-zip": "*" }, "require-dev": { "phpunit/phpunit": "^9", - "christophwurst/nextcloud": "24" + "nextcloud/ocp": "^26" } } diff --git a/composer.lock b/composer.lock index fabc1f0..6866f4a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,78 +4,35 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "090be002beb869fbcbe6939e8f7f16ff", + "content-hash": "61a3f0e8d1206354a772a99031910427", "packages": [], "packages-dev": [ - { - "name": "christophwurst/nextcloud", - "version": "v24.0.0", - "source": { - "type": "git", - "url": "https://github.com/ChristophWurst/nextcloud_composer.git", - "reference": "6ce63c3d29c59dc17394c8967981fd9272681713" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ChristophWurst/nextcloud_composer/zipball/6ce63c3d29c59dc17394c8967981fd9272681713", - "reference": "6ce63c3d29c59dc17394c8967981fd9272681713", - "shasum": "" - }, - "require": { - "php": "^7.4 || ~8.0 || ~8.1", - "psr/container": "^1.0", - "psr/event-dispatcher": "^1.0", - "psr/log": "^1.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "24.0.0-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "AGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Christoph Wurst", - "email": "christoph@winzerhof-wurst.at" - } - ], - "description": "Composer package containing Nextcloud's public API (classes, interfaces)", - "support": { - "issues": "https://github.com/ChristophWurst/nextcloud_composer/issues", - "source": "https://github.com/ChristophWurst/nextcloud_composer/tree/v24.0.0" - }, - "time": "2022-05-09T13:50:27+00:00" - }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -102,7 +59,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -118,20 +75,20 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -169,7 +126,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -177,20 +134,63 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nextcloud/ocp", + "version": "v26.0.3", + "source": { + "type": "git", + "url": "https://github.com/nextcloud-deps/ocp.git", + "reference": "e96e5a5b17fc30e79d59091ccf1356e93816e5b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/e96e5a5b17fc30e79d59091ccf1356e93816e5b7", + "reference": "e96e5a5b17fc30e79d59091ccf1356e93816e5b7", + "shasum": "" + }, + "require": { + "php": "^7.4 || ~8.0 || ~8.1", + "psr/container": "^1.1.1", + "psr/event-dispatcher": "^1.0", + "psr/log": "^1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "26.0.0-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Christoph Wurst", + "email": "christoph@winzerhof-wurst.at" + } + ], + "description": "Composer package containing Nextcloud's public API (classes, interfaces)", + "support": { + "issues": "https://github.com/nextcloud-deps/ocp/issues", + "source": "https://github.com/nextcloud-deps/ocp/tree/v26.0.3" + }, + "time": "2023-06-17T00:37:14+00:00" }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", "shasum": "" }, "require": { @@ -231,9 +231,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2023-06-25T14:52:30+00:00" }, { "name": "phar-io/manifest", @@ -346,252 +346,25 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -606,8 +379,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -640,7 +413,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" }, "funding": [ { @@ -648,7 +421,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2023-03-06T12:58:08+00:00" }, { "name": "phpunit/php-file-iterator", @@ -893,20 +666,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.20", + "version": "9.6.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" + "reference": "a9aceaf20a682aeacf28d582654a1670d8826778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a9aceaf20a682aeacf28d582654a1670d8826778", + "reference": "a9aceaf20a682aeacf28d582654a1670d8826778", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -917,7 +690,6 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", @@ -925,23 +697,19 @@ "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -949,7 +717,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -980,7 +748,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.9" }, "funding": [ { @@ -990,9 +759,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-04-01T12:37:26+00:00" + "time": "2023-06-11T06:13:56+00:00" }, { "name": "psr/container", @@ -1311,16 +1084,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -1373,7 +1146,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -1381,7 +1154,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -1442,16 +1215,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -1496,7 +1269,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -1504,20 +1277,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -1559,7 +1332,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -1567,20 +1340,20 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -1636,7 +1409,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -1644,7 +1417,7 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", @@ -1881,16 +1654,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -1929,10 +1702,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -1940,7 +1713,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -1999,16 +1772,16 @@ }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -2020,7 +1793,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2043,7 +1816,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -2051,7 +1824,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -2106,88 +1879,6 @@ ], "time": "2020-09-28T06:39:44+00:00" }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-20T20:35:02+00:00" - }, { "name": "theseer/tokenizer", "version": "1.2.1", @@ -2237,64 +1928,6 @@ } ], "time": "2021-07-28T10:34:58+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], @@ -2302,7 +1935,9 @@ "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, - "platform": [], + "platform": { + "php": ">=8.2" + }, "platform-dev": [], "plugin-api-version": "2.3.0" } diff --git a/js/extraction.js b/js/extraction.js index dab25f5..fa08d30 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -1,6 +1,6 @@ -$(document).ready(function () { +$(() => { - var actionsExtract = { + const actionsExtract = { createDialog: function (title, init, callback) { return OC.dialogs.confirmHtml( '', @@ -8,12 +8,12 @@ $(document).ready(function () { callback, true ).then(() => { - var $dialog = $('.oc-dialog:visible'); - var $content = $('.oc-dialog-content'); - var $buttons = $dialog.find('button'); + const $dialog = $('.oc-dialog:visible'); + const $content = $('.oc-dialog-content'); + const $buttons = $('.oc-dialog-buttonrow').find('button'); - var $cancelButton = $buttons.eq(0); - var $confirmButton = $buttons.eq(1); + const $cancelButton = $buttons.eq(0); + const $confirmButton = $buttons.eq(1); $content.empty(); @@ -25,32 +25,36 @@ $(document).ready(function () { }, extractDialog: function (filename, context, type) { - var self = this; + const self = this; - var dirName = filename; - var matches = dirName.match('^([^\\.]+)'); + let dirName = filename; + const matches = dirName.match('^([^\\.]+)'); if (matches) { dirName = matches[0]; } - var data = { + const data = { sourcePath: context.dir ? context.dir + '/' + filename : filename, targetDirName: dirName, type: type }; - var tr = context.fileList.findFileEl(filename); + const tr = context.fileList.findFileEl(filename); context.fileList.showFileBusyState(tr, true); - var $input = $(''); + const $input = $(''); + $input.css("width", "100%"); + self.createDialog( t('extract', 'Extract'), ($dialog, $content, _$cancelButton, $confirmButton) => { $dialog.css("min-width", "300px"); + $dialog.css("width", "50%"); + $dialog.css("max-width", "600px"); $confirmButton.text(t('extract', 'Extract')); - var $text = $('

'); + const $text = $('

'); $text.text(t('extract', 'Files will be extracted to this folder:')); $content.append($text); @@ -93,7 +97,7 @@ $(document).ready(function () { }, init: function () { - var self = this; + const self = this; // ZIP OCA.Files.fileActions.registerAction({ @@ -122,7 +126,7 @@ $(document).ready(function () { }); // TAR - var types = ['application/x-tar', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-deb', 'application/x-gzip']; + const types = ['application/x-tar', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-deb', 'application/x-gzip']; types.forEach(type => { OCA.Files.fileActions.registerAction({ name: 'extractOthers', diff --git a/l10n/ar.js b/l10n/ar.js new file mode 100644 index 0000000..ac74cc2 --- /dev/null +++ b/l10n/ar.js @@ -0,0 +1,15 @@ +OC.L10N.register( + "extract", + { + "Extract here" : "إستخلص هنا", + "Error extracting " : "خطأ في الاستخلاص", + "Encryption is not supported yet" : "التشفير غير مدعوم حاليّاً", + "Zip extension is not available" : "الامتداد ZIP غير مُتاحٍ حاليّاً", + "Cannot open Zip file" : "لم يُمكن فتح ملف ZIP", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "وقع خطأٌ ما. تأكد من أن لديك امتداد rar، و أن تطبيق الفكّ unrar قد تمّ تنصيبه", + "Oops something went wrong. Check that you have p7zip installed" : "وقع خطأٌ ما. تأكد من أن تطبيق الفكّ p7zip قد تمّ تنصيبه", + "Extract" : "إستخلاص", + "Extract archive from the web interface" : "إستخلاص الأرشيف من متصفح الوب", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "استخلاص الأراشيف\n\n**يدعم الصيغ:**\n* Zip\n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n**المتطلبات:**\n* Rar PHP extension (pecl -v install rar)\n\n* **OR**\n* unrar (sudo apt-get install unrar)\n\n* **AND**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **لاحظ أن:** الملفات المشفرة غير مدعومة بعدُ." +}, +"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/l10n/ar.json b/l10n/ar.json new file mode 100644 index 0000000..c2bf0db --- /dev/null +++ b/l10n/ar.json @@ -0,0 +1,13 @@ +{ "translations": { + "Extract here" : "إستخلص هنا", + "Error extracting " : "خطأ في الاستخلاص", + "Encryption is not supported yet" : "التشفير غير مدعوم حاليّاً", + "Zip extension is not available" : "الامتداد ZIP غير مُتاحٍ حاليّاً", + "Cannot open Zip file" : "لم يُمكن فتح ملف ZIP", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "وقع خطأٌ ما. تأكد من أن لديك امتداد rar، و أن تطبيق الفكّ unrar قد تمّ تنصيبه", + "Oops something went wrong. Check that you have p7zip installed" : "وقع خطأٌ ما. تأكد من أن تطبيق الفكّ p7zip قد تمّ تنصيبه", + "Extract" : "إستخلاص", + "Extract archive from the web interface" : "إستخلاص الأرشيف من متصفح الوب", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "استخلاص الأراشيف\n\n**يدعم الصيغ:**\n* Zip\n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n**المتطلبات:**\n* Rar PHP extension (pecl -v install rar)\n\n* **OR**\n* unrar (sudo apt-get install unrar)\n\n* **AND**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **لاحظ أن:** الملفات المشفرة غير مدعومة بعدُ." +},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" +} \ No newline at end of file diff --git a/l10n/az.js b/l10n/az.js new file mode 100644 index 0000000..0338e97 --- /dev/null +++ b/l10n/az.js @@ -0,0 +1,12 @@ +OC.L10N.register( + "extract", + { + "Extract here" : "Bura ekstrakt edin", + "Error extracting " : "Ekstrakt vaxtı səhv baş verdi", + "Encryption is not supported yet" : "Şifrələmə dəstəklənmir", + "Zip extension is not available" : "Zip ekstrakt mövcud deyil", + "Cannot open Zip file" : "Zip faylı ammaq olmur", + "Extract" : "Ekstrakt et", + "Extract archive from the web interface" : "Arxivi veb interfeysdən ekstrakt edin" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/az.json b/l10n/az.json new file mode 100644 index 0000000..c9bb66e --- /dev/null +++ b/l10n/az.json @@ -0,0 +1,10 @@ +{ "translations": { + "Extract here" : "Bura ekstrakt edin", + "Error extracting " : "Ekstrakt vaxtı səhv baş verdi", + "Encryption is not supported yet" : "Şifrələmə dəstəklənmir", + "Zip extension is not available" : "Zip ekstrakt mövcud deyil", + "Cannot open Zip file" : "Zip faylı ammaq olmur", + "Extract" : "Ekstrakt et", + "Extract archive from the web interface" : "Arxivi veb interfeysdən ekstrakt edin" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/l10n/ca.js b/l10n/ca.js index 3dd330c..ef7a523 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Alguna cosa ha anat malament. Comproveu que teniu p7zip instal·lat", "Extract" : "Extreure", "Extract archive from the web interface" : "Extreure l'arxiu de la interfície web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extraure arxius.\n\n* **Suportats :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :** \n * Extensió PHP de rar (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extreure arxius.\n\n* **Suportats :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :** \n * Extensió PHP de rar (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/ca.json b/l10n/ca.json index b6f3495..acf5396 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Alguna cosa ha anat malament. Comproveu que teniu p7zip instal·lat", "Extract" : "Extreure", "Extract archive from the web interface" : "Extreure l'arxiu de la interfície web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extraure arxius.\n\n* **Suportats :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :** \n * Extensió PHP de rar (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extreure arxius.\n\n* **Suportats :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :** \n * Extensió PHP de rar (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/de.js b/l10n/de.js index 435708f..392a0c9 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -5,8 +5,8 @@ OC.L10N.register( "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du die Erweiterung rar oder unrar installiert hast", - "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du p7zip installiert hast", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob du die Erweiterung rar oder unrar installiert hast", + "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob du p7zip installiert hast", "Extract": "Entpacken", "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", diff --git a/l10n/de.json b/l10n/de.json index 77149b2..7bd9d54 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -4,8 +4,8 @@ "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du die Erweiterung rar oder unrar installiert hast", - "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob Du p7zip installiert hast", + "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob du die Erweiterung rar oder unrar installiert hast", + "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob du p7zip installiert hast", "Extract": "Entpacken", "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", diff --git a/l10n/en_GB.js b/l10n/en_GB.js new file mode 100644 index 0000000..2dc66bf --- /dev/null +++ b/l10n/en_GB.js @@ -0,0 +1,15 @@ +OC.L10N.register( + "extract", + { + "Extract here" : "Extract here", + "Error extracting " : "Error extracting ", + "Encryption is not supported yet" : "Encryption is not supported yet", + "Zip extension is not available" : "Zip extension is not available", + "Cannot open Zip file" : "Cannot open Zip file", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Oops something went wrong. Check that you have rar extension or unrar installed", + "Oops something went wrong. Check that you have p7zip installed" : "Oops something went wrong. Check that you have p7zip installed", + "Extract" : "Extract", + "Extract archive from the web interface" : "Extract archive from the web interface", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/en_GB.json b/l10n/en_GB.json new file mode 100644 index 0000000..4d69316 --- /dev/null +++ b/l10n/en_GB.json @@ -0,0 +1,13 @@ +{ "translations": { + "Extract here" : "Extract here", + "Error extracting " : "Error extracting ", + "Encryption is not supported yet" : "Encryption is not supported yet", + "Zip extension is not available" : "Zip extension is not available", + "Cannot open Zip file" : "Cannot open Zip file", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Oops something went wrong. Check that you have rar extension or unrar installed", + "Oops something went wrong. Check that you have p7zip installed" : "Oops something went wrong. Check that you have p7zip installed", + "Extract" : "Extract", + "Extract archive from the web interface" : "Extract archive from the web interface", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/l10n/gl.js b/l10n/gl.js index c91c968..069b8a2 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -5,6 +5,7 @@ OC.L10N.register( "Error extracting " : "Produciuse un erro durante a extracción", "Encryption is not supported yet" : "Aínda non se admite o cifrado", "Zip extension is not available" : "A extensión zip non está dispoñíbel", + "Cannot open Zip file" : "Non se pode abrir o ficheiro Zip", "Oops something went wrong. Check that you have rar extension or unrar installed" : "Vaites, algo foi mal. Comprobe se ten instalada unha extensión rar ou unrar", "Oops something went wrong. Check that you have p7zip installed" : "Vaites, algo foi mal. Comprobe se ten instalado p7zip", "Extract" : "Extraer", diff --git a/l10n/gl.json b/l10n/gl.json index 865a03c..7e23c74 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -3,6 +3,7 @@ "Error extracting " : "Produciuse un erro durante a extracción", "Encryption is not supported yet" : "Aínda non se admite o cifrado", "Zip extension is not available" : "A extensión zip non está dispoñíbel", + "Cannot open Zip file" : "Non se pode abrir o ficheiro Zip", "Oops something went wrong. Check that you have rar extension or unrar installed" : "Vaites, algo foi mal. Comprobe se ten instalada unha extensión rar ou unrar", "Oops something went wrong. Check that you have p7zip installed" : "Vaites, algo foi mal. Comprobe se ten instalado p7zip", "Extract" : "Extraer", diff --git a/l10n/he.js b/l10n/he.js index 470ff68..954da20 100644 --- a/l10n/he.js +++ b/l10n/he.js @@ -5,6 +5,7 @@ OC.L10N.register( "Error extracting " : "שגיאה בחילוץ", "Encryption is not supported yet" : "עדיין אין תמיכה בהצפנה", "Zip extension is not available" : "הסיומת Zip אינה זמינה", + "Cannot open Zip file" : "לא ניתן לפתוח קובץ Zip", "Oops something went wrong. Check that you have rar extension or unrar installed" : "אופס, משהו השתבש. נא לוודא שיש לך סיומת rar או את unrar מותקן", "Oops something went wrong. Check that you have p7zip installed" : "אופס, משהו השתבש. נא לבדוק שמותקן אצלך p7zip", "Extract" : "חילוץ", diff --git a/l10n/he.json b/l10n/he.json index 12d3824..791e27f 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -3,6 +3,7 @@ "Error extracting " : "שגיאה בחילוץ", "Encryption is not supported yet" : "עדיין אין תמיכה בהצפנה", "Zip extension is not available" : "הסיומת Zip אינה זמינה", + "Cannot open Zip file" : "לא ניתן לפתוח קובץ Zip", "Oops something went wrong. Check that you have rar extension or unrar installed" : "אופס, משהו השתבש. נא לוודא שיש לך סיומת rar או את unrar מותקן", "Oops something went wrong. Check that you have p7zip installed" : "אופס, משהו השתבש. נא לבדוק שמותקן אצלך p7zip", "Extract" : "חילוץ", diff --git a/l10n/ko.js b/l10n/ko.js index 646416a..713452c 100644 --- a/l10n/ko.js +++ b/l10n/ko.js @@ -3,8 +3,8 @@ OC.L10N.register( { "Extract here" : "여기에 압축 풀기", "Error extracting " : "압축해제 중 오류", - "Encryption is not supported yet" : "암호화는 아직 지원하지 않습니다", - "Zip extension is not available" : "Zip 확장 기능은 사용할 수 없습니다", + "Encryption is not supported yet" : "암호화는 아직 지원하지 않습니다.", + "Zip extension is not available" : "Zip 확장 기능은 사용할 수 없습니다.", "Cannot open Zip file" : "Zip 파일을 열 수 없음", "Oops something went wrong. Check that you have rar extension or unrar installed" : "앗, 무엇인가 잘못되었습니다. rar 확장기능 혹은 unrar을 설치했는지 확인하십시오", "Oops something went wrong. Check that you have p7zip installed" : "앗, 무엇인가 잘못되었습니다. p7zip을 설치했는지 확인하십시오", diff --git a/l10n/ko.json b/l10n/ko.json index 38ef8e4..0f79392 100644 --- a/l10n/ko.json +++ b/l10n/ko.json @@ -1,8 +1,8 @@ { "translations": { "Extract here" : "여기에 압축 풀기", "Error extracting " : "압축해제 중 오류", - "Encryption is not supported yet" : "암호화는 아직 지원하지 않습니다", - "Zip extension is not available" : "Zip 확장 기능은 사용할 수 없습니다", + "Encryption is not supported yet" : "암호화는 아직 지원하지 않습니다.", + "Zip extension is not available" : "Zip 확장 기능은 사용할 수 없습니다.", "Cannot open Zip file" : "Zip 파일을 열 수 없음", "Oops something went wrong. Check that you have rar extension or unrar installed" : "앗, 무엇인가 잘못되었습니다. rar 확장기능 혹은 unrar을 설치했는지 확인하십시오", "Oops something went wrong. Check that you have p7zip installed" : "앗, 무엇인가 잘못되었습니다. p7zip을 설치했는지 확인하십시오", diff --git a/l10n/nb.js b/l10n/nb.js new file mode 100644 index 0000000..016802f --- /dev/null +++ b/l10n/nb.js @@ -0,0 +1,12 @@ +OC.L10N.register( + "extract", + { + "Extract here" : "Pakk ut her", + "Error extracting " : "Feil med utpakking", + "Encryption is not supported yet" : "Kryptering er ikke støttet enda", + "Zip extension is not available" : "Zip-modul er ikke tilgjengelig", + "Cannot open Zip file" : "Kan ikke åpne zip-fil", + "Extract" : "Pakk ut", + "Extract archive from the web interface" : "Pakk ut arkiv-filen fra web-grensesnittet" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/nb.json b/l10n/nb.json new file mode 100644 index 0000000..1ff7228 --- /dev/null +++ b/l10n/nb.json @@ -0,0 +1,10 @@ +{ "translations": { + "Extract here" : "Pakk ut her", + "Error extracting " : "Feil med utpakking", + "Encryption is not supported yet" : "Kryptering er ikke støttet enda", + "Zip extension is not available" : "Zip-modul er ikke tilgjengelig", + "Cannot open Zip file" : "Kan ikke åpne zip-fil", + "Extract" : "Pakk ut", + "Extract archive from the web interface" : "Pakk ut arkiv-filen fra web-grensesnittet" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/l10n/sr.js b/l10n/sr.js index 4f33724..97b0e4e 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -3,7 +3,11 @@ OC.L10N.register( { "Extract here" : "Отпакуј овде", "Error extracting " : "Грешка приликом отпакивања", + "Encryption is not supported yet" : "Шифрирање још увек није подржано", "Zip extension is not available" : "Zip екстензија није доступна", + "Cannot open Zip file" : "Не може да се отвори Zip фајл", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Упсс, нешто је пошло наопако. Проверите да имате rar екстензију или да је инсталиран програм unrar", + "Oops something went wrong. Check that you have p7zip installed" : "Упсс, нешто је пошло наопако. Проверите да имате инсталиран програм p7zip", "Extract" : "Отпакуј", "Extract archive from the web interface" : "Отпакујте архиве преко веб интерфејса", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Отпакујте архиве.\n\n* **Подржано :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Захтевано :** \n * Rar PHP ектензија (pecl -v install rar)\n \n * **ИЛИ** \n * unrar (sudo apt-get install unrar)\n\n * **И**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Пажња:** Шифровани фајлови још нису подржани" diff --git a/l10n/sr.json b/l10n/sr.json index 58564ab..77f8137 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -1,7 +1,11 @@ { "translations": { "Extract here" : "Отпакуј овде", "Error extracting " : "Грешка приликом отпакивања", + "Encryption is not supported yet" : "Шифрирање још увек није подржано", "Zip extension is not available" : "Zip екстензија није доступна", + "Cannot open Zip file" : "Не може да се отвори Zip фајл", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Упсс, нешто је пошло наопако. Проверите да имате rar екстензију или да је инсталиран програм unrar", + "Oops something went wrong. Check that you have p7zip installed" : "Упсс, нешто је пошло наопако. Проверите да имате инсталиран програм p7zip", "Extract" : "Отпакуј", "Extract archive from the web interface" : "Отпакујте архиве преко веб интерфејса", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Отпакујте архиве.\n\n* **Подржано :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Захтевано :** \n * Rar PHP ектензија (pecl -v install rar)\n \n * **ИЛИ** \n * unrar (sudo apt-get install unrar)\n\n * **И**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Пажња:** Шифровани фајлови још нису подржани" diff --git a/l10n/sv.js b/l10n/sv.js index 8de7214..f039ffc 100644 --- a/l10n/sv.js +++ b/l10n/sv.js @@ -3,8 +3,13 @@ OC.L10N.register( { "Extract here" : "Extrahera här", "Error extracting " : "Fel när filen extraherades", + "Encryption is not supported yet" : "Kryptering stödjs inte ännu", "Zip extension is not available" : "Zip-tillägg är inte tillgängligt", + "Cannot open Zip file" : "Kan inte öppna zip-fil", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ojdå! Något gick fel. Kontrollera att du har installerat unrar, eller att filen är en .rar-fil.", + "Oops something went wrong. Check that you have p7zip installed" : "Ojdå! Något gick fel. Kontrollera att du har installerat 7-zip", "Extract" : "Extract", - "Extract archive from the web interface" : "Extrahera arkiv i webinterfacet" + "Extract archive from the web interface" : "Extrahera arkiv i webinterfacet", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extrahera arkiv.\n\n* **Stödjs:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Krav :** \n * Rar PHP extension (pecl -v install rar)\n\n * **ELLER** \n * unrar (sudo apt-get install unrar)\n\n * **OCH**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Notera :** Krypterade filer stödjs inte ännu" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/sv.json b/l10n/sv.json index 292f326..068b1b2 100644 --- a/l10n/sv.json +++ b/l10n/sv.json @@ -1,8 +1,13 @@ { "translations": { "Extract here" : "Extrahera här", "Error extracting " : "Fel när filen extraherades", + "Encryption is not supported yet" : "Kryptering stödjs inte ännu", "Zip extension is not available" : "Zip-tillägg är inte tillgängligt", + "Cannot open Zip file" : "Kan inte öppna zip-fil", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ojdå! Något gick fel. Kontrollera att du har installerat unrar, eller att filen är en .rar-fil.", + "Oops something went wrong. Check that you have p7zip installed" : "Ojdå! Något gick fel. Kontrollera att du har installerat 7-zip", "Extract" : "Extract", - "Extract archive from the web interface" : "Extrahera arkiv i webinterfacet" + "Extract archive from the web interface" : "Extrahera arkiv i webinterfacet", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extrahera arkiv.\n\n* **Stödjs:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Krav :** \n * Rar PHP extension (pecl -v install rar)\n\n * **ELLER** \n * unrar (sudo apt-get install unrar)\n\n * **OCH**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Notera :** Krypterade filer stödjs inte ännu" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/tr.js b/l10n/tr.js index cfc6663..9af2ab3 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -9,7 +9,7 @@ OC.L10N.register( "Oops something went wrong. Check that you have rar extension or unrar installed" : "Bir şeyler ters gitti. rar ya da unrar eklentilerinin kurulmuş olduğundan emin olun", "Oops something went wrong. Check that you have p7zip installed" : "Bir şeyler ters gitti. p7zip eklentisinin kurulmuş olduğundan emin olun", "Extract" : "Ayıkla", - "Extract archive from the web interface" : "Arşivi web arayüzünden ayıkla", + "Extract archive from the web interface" : "Arşivi site arayüzünden ayıkla", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Arşivileri ayıklar.\n\n* **Desteklenen türler:**\n\n* Zip\n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Gereksinimler: **\n* Rar PHP eklentisi (pecl -v install rar)\n\n* **YA DA**\n* unrar (sudo apt-get install unrar)\n\n* **VE** \n*p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Not:** Şifrelenmiş dosyalar henüz desteklenmiyor." }, "nplurals=2; plural=(n > 1);"); diff --git a/l10n/tr.json b/l10n/tr.json index 66c026a..94a44f6 100644 --- a/l10n/tr.json +++ b/l10n/tr.json @@ -7,7 +7,7 @@ "Oops something went wrong. Check that you have rar extension or unrar installed" : "Bir şeyler ters gitti. rar ya da unrar eklentilerinin kurulmuş olduğundan emin olun", "Oops something went wrong. Check that you have p7zip installed" : "Bir şeyler ters gitti. p7zip eklentisinin kurulmuş olduğundan emin olun", "Extract" : "Ayıkla", - "Extract archive from the web interface" : "Arşivi web arayüzünden ayıkla", + "Extract archive from the web interface" : "Arşivi site arayüzünden ayıkla", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Arşivileri ayıklar.\n\n* **Desteklenen türler:**\n\n* Zip\n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Gereksinimler: **\n* Rar PHP eklentisi (pecl -v install rar)\n\n* **YA DA**\n* unrar (sudo apt-get install unrar)\n\n* **VE** \n*p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Not:** Şifrelenmiş dosyalar henüz desteklenmiyor." },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/l10n/uk.js b/l10n/uk.js index 8dd833e..4b5809c 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -4,11 +4,12 @@ OC.L10N.register( "Error extracting ": "Помилка з видобуванням ", "Encryption is not supported yet": "Шифрування ще не підтримується", "Zip extension is not available": "Розширення ZIP недоступне", - "Cannot open Zip file": "Не вдається відкрити Zip-файл", + "Cannot open Zip file": "Не вдається відкрити файл Zip", "Oops something went wrong. Check that you have rar extension or unrar installed": "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", "Oops something went wrong. Check that you have p7zip installed": "Щось пішло не так. Перевірте, чи встановлено p7zip", - "Extract": "Екстракт", - "Extract archive from the web interface": "Витягніть архів з веб-інтерфейсу", + "Extract": "Видобути", + "Extract archive from the web interface": "Видобути архів у вебінтерфейсів", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Розпакуйте архіви. * \n**Підтримується:**\n\n * Zip \n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Requirements :** \n* Rar PHP extension (pecl -v install rar)\n\n* **OR** \n* unrar (sudo apt-get install unrar)\n\n* **AND**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet", "Files will be extracted to this folder:": "Файли будуть розпаковані в цю папку:", "File Name": "Ім'я файлу", "Directory already exists": "Каталог уже існує" diff --git a/l10n/uk.json b/l10n/uk.json index 77c241f..c007dba 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -3,11 +3,12 @@ "Error extracting": "Помилка з видобуванням", "Encryption is not supported yet": "Шифрування ще не підтримується", "Zip extension is not available": "Розширення ZIP недоступне", - "Cannot open Zip file": "Не вдається відкрити Zip-файл", + "Cannot open Zip file": "Не вдається відкрити файл Zip", "Oops something went wrong. Check that you have rar extension or unrar installed": "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", "Oops something went wrong. Check that you have p7zip installed": "Щось пішло не так. Перевірте, чи встановлено p7zip", - "Extract": "Екстракт", - "Extract archive from the web interface": "Витягніть архів з веб-інтерфейсу", + "Extract": "Видобути", + "Extract archive from the web interface": "Видобути архів у вебінтерфейсів", + "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Розпакуйте архіви. * \n**Підтримується:**\n\n * Zip \n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Requirements :** \n* Rar PHP extension (pecl -v install rar)\n\n* **OR** \n* unrar (sudo apt-get install unrar)\n\n* **AND**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet", "Files will be extracted to this folder:": "Файли будуть розпаковані в цю папку:", "File Name": "Ім'я файлу", "Directory already exists": "Каталог уже існує" diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index d282c55..44fde5f 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -6,8 +6,8 @@ OC.L10N.register( "Encryption is not supported yet" : "尚不支持加密", "Zip extension is not available" : "Zip 扩展不可用", "Cannot open Zip file" : "打不开 Zip 文件", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "哎呀,出问题了。检查你是否安装了 rar 扩展或 unar", - "Oops something went wrong. Check that you have p7zip installed" : "哎呀,出问题了。检查你是否安装了 p7zip", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "哎呀,出问题了。请检查您是否安装了 rar 扩展或 unrar。", + "Oops something went wrong. Check that you have p7zip installed" : "哎呀,出问题了。请检查您是否安装了 p7zip。", "Extract" : "解压", "Extract archive from the web interface" : "从网页界面解压压缩包", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "解压缩。\n\n* **支持的格式:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **需求:** \n * Rar PHP 扩展 (pecl -v install rar)\n\n * **或** \n * unrar (sudo apt-get install unrar)\n\n * **和**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意:** 已加密文件暂不支持" diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index 9798071..a14bf68 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -4,8 +4,8 @@ "Encryption is not supported yet" : "尚不支持加密", "Zip extension is not available" : "Zip 扩展不可用", "Cannot open Zip file" : "打不开 Zip 文件", - "Oops something went wrong. Check that you have rar extension or unrar installed" : "哎呀,出问题了。检查你是否安装了 rar 扩展或 unar", - "Oops something went wrong. Check that you have p7zip installed" : "哎呀,出问题了。检查你是否安装了 p7zip", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "哎呀,出问题了。请检查您是否安装了 rar 扩展或 unrar。", + "Oops something went wrong. Check that you have p7zip installed" : "哎呀,出问题了。请检查您是否安装了 p7zip。", "Extract" : "解压", "Extract archive from the web interface" : "从网页界面解压压缩包", "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "解压缩。\n\n* **支持的格式:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **需求:** \n * Rar PHP 扩展 (pecl -v install rar)\n\n * **或** \n * unrar (sudo apt-get install unrar)\n\n * **和**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意:** 已加密文件暂不支持" diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index 249bb4c..382d22c 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -16,19 +16,17 @@ use OC\Files\Filesystem; use OCP\Encryption\IManager; -abstract class StatusCode -{ +abstract class StatusCode { const ERROR = 0; const SUCCESS = 1; } -class ExtractionController extends Controller -{ +class ExtractionController extends Controller { /** @var IL10N */ private $l; /** @var IManager */ - protected $encryptionManager; + protected IManager $encryptionManager; private $userId; @@ -36,13 +34,20 @@ class ExtractionController extends Controller private $logger; /** @var IRootFolder */ - private $rootFolder; + private IRootFolder $rootFolder; /** @var string */ - private $transactionId; - - public function __construct($AppName, IRequest $request, IL10N $l, IManager $encryptionManager, $UserId, LoggerInterface $logger, IRootFolder $rootFolder) - { + private string $transactionId; + + public function __construct( + $AppName, + IRequest $request, + IL10N $l, + IManager $encryptionManager, + $UserId, + LoggerInterface $logger, + IRootFolder $rootFolder + ) { parent::__construct($AppName, $request); $this->l = $l; $this->encryptionManager = $encryptionManager; @@ -73,8 +78,7 @@ public function __construct($AppName, IRequest $request, IL10N $l, IManager $enc * @NoCSRFRequired * @NoAdminRequired */ - public function extract($sourcePath, $targetDirName, $type) - { + public function extract($sourcePath, $targetDirName, $type) { if ($this->encryptionManager->isEnabled()) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Encryption is not supported yet')); } @@ -165,15 +169,14 @@ public function extract($sourcePath, $targetDirName, $type) * @param string $extractTo absolute path to the extraction directory * @return array json response */ - public function extractZip(string $filePath, string $extractTo): array - { + public function extractZip(string $filePath, string $extractTo): array { if (!extension_loaded('zip')) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Zip extension is not available')); } $zip = new ZipArchive(); - if (!$zip->open($filePath) === TRUE) { + if (!$zip->open($filePath) === true) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Cannot open Zip file')); } @@ -189,10 +192,10 @@ public function extractZip(string $filePath, string $extractTo): array * @param string $extractTo absolute path to the extraction directory * @return array json response */ - public function extractRar(string $filePath, string $extractTo): array - { + public function extractRar(string $filePath, string $extractTo): array { if (!extension_loaded('rar')) { exec('unrar x ' . escapeshellarg($filePath) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); + if (sizeof($output) <= 4) { return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have rar extension or unrar installed')); } @@ -290,7 +293,6 @@ public function moveFromTmp(): void /** * Returns the name of the file at the given path without its extension - * * @param string $path path to the file * @return string file name without extension */ @@ -302,7 +304,6 @@ public static function getFileNameWithoutExtension(string $path): string /** * Checks if the file at the given path has the ending .tar.* - * * @param string $path path to the file * @return bool is tar.gz */ From dedb3d74a31b0b56f7182de8e66446f3ae067f6b Mon Sep 17 00:00:00 2001 From: Arne Gnisa Date: Wed, 15 Nov 2023 11:27:45 +0100 Subject: [PATCH 14/14] reimplements s3 and extraction dialog support --- appinfo/info.xml | 13 +- js/extraction.js | 174 +++--- l10n/bg.js | 2 +- l10n/bg.json | 4 +- l10n/ca.js | 2 +- l10n/ca.json | 4 +- l10n/da.js | 2 +- l10n/da.json | 4 +- l10n/de.js | 30 +- l10n/de.json | 33 +- l10n/de_DE.js | 30 +- l10n/de_DE.json | 33 +- l10n/el.js | 2 +- l10n/el.json | 4 +- l10n/es.js | 30 +- l10n/es.json | 33 +- l10n/eu.json | 4 +- l10n/fi.js | 2 +- l10n/fi.json | 4 +- l10n/he.js | 2 +- l10n/he.json | 4 +- l10n/hr.js | 2 +- l10n/hr.json | 4 +- l10n/hu.js | 2 +- l10n/hu.json | 4 +- l10n/is.js | 2 +- l10n/is.json | 4 +- l10n/it.js | 2 +- l10n/it.json | 4 +- l10n/ja.js | 2 +- l10n/ja.json | 4 +- l10n/ko.js | 2 +- l10n/ko.json | 4 +- l10n/mk.js | 2 +- l10n/mk.json | 4 +- l10n/nl.js | 2 +- l10n/nl.json | 4 +- l10n/pl.js | 2 +- l10n/pl.json | 4 +- l10n/sc.js | 2 +- l10n/sc.json | 4 +- l10n/sk.js | 2 +- l10n/sk.json | 4 +- l10n/sl.js | 2 +- l10n/sl.json | 4 +- l10n/uk.js | 30 +- l10n/uk.json | 33 +- l10n/zh_CN.js | 2 +- l10n/zh_CN.json | 4 +- lib/Controller/ExtractionController.php | 687 ++++++++++++++---------- 50 files changed, 644 insertions(+), 600 deletions(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index aff9310..07a98f7 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -7,9 +7,9 @@ https://raw.githubusercontent.com/PaulLereverend/NextcloudExtract/master/img/extract.png - 1.3.8 + 1.4.0 agpl Paul Lereverend Extract @@ -38,7 +38,6 @@ https://github.com/PaulLereverend/NextcloudExtract https://github.com/PaulLereverend/NextcloudExtract/issues - - + diff --git a/js/extraction.js b/js/extraction.js index fa08d30..9da1b3c 100644 --- a/js/extraction.js +++ b/js/extraction.js @@ -1,147 +1,105 @@ $(() => { - const actionsExtract = { createDialog: function (title, init, callback) { - return OC.dialogs.confirmHtml( - '', - title, - callback, - true - ).then(() => { - const $dialog = $('.oc-dialog:visible'); - const $content = $('.oc-dialog-content'); - const $buttons = $('.oc-dialog-buttonrow').find('button'); - - const $cancelButton = $buttons.eq(0); - const $confirmButton = $buttons.eq(1); + return OC.dialogs.confirmHtml('', title, callback, true) + .then(() => { + const $dialog = $('.oc-dialog:visible'); + const $content = $('.oc-dialog-content'); + const $buttons = $('.oc-dialog-buttonrow').find('button'); + const $cancelButton = $buttons.eq(0); + const $confirmButton = $buttons.eq(1); - $content.empty(); + $content.empty(); - $cancelButton.text(t('core', 'Cancel')); - $confirmButton.text(t('core', 'Confirm')); + $cancelButton.text(t('core', 'Cancel')); + $confirmButton.text(t('core', 'Confirm')); - init($dialog, $content, $cancelButton, $confirmButton); - }); + init($dialog, $content, $cancelButton, $confirmButton); + }); }, extractDialog: function (filename, context, type) { const self = this; - - let dirName = filename; - const matches = dirName.match('^([^\\.]+)'); - if (matches) { - dirName = matches[0]; - } + let dirName = filename.match('^([^\\.]+)')[0] || filename; const data = { - sourcePath: context.dir ? context.dir + '/' + filename : filename, - targetDirName: dirName, - type: type + sourcePath: context.dir ? `${context.dir}/${filename}` : filename, targetDirName: dirName, type: type, }; const tr = context.fileList.findFileEl(filename); context.fileList.showFileBusyState(tr, true); - const $input = $(''); - $input.css("width", "100%"); + const $input = $('').css('width', '100%'); - self.createDialog( - t('extract', 'Extract'), - ($dialog, $content, _$cancelButton, $confirmButton) => { - $dialog.css("min-width", "300px"); - $dialog.css("width", "50%"); - $dialog.css("max-width", "600px"); + self.createDialog(t('extract', 'Extract'), ($dialog, $content, _$cancelButton, $confirmButton) => { + $dialog.css({ + 'min-width': '300px', width: '50%', 'max-width': '600px', + }); - $confirmButton.text(t('extract', 'Extract')); + $confirmButton.text(t('extract', 'Extract')); - const $text = $('

'); - $text.text(t('extract', 'Files will be extracted to this folder:')); - $content.append($text); + const $text = $('

').text(t('extract', 'Files will be extracted to this folder:')); + $content.append($text); - $input.attr('type', 'text').attr('id', 'file-name-input').attr('placeholder', t('extract', 'File Name')).attr('value', dirName); - $content.append($input); + $input.attr('type', 'text').attr('id', 'file-name-input').attr('placeholder', t('extract', 'File Name')).attr('value', dirName); + $content.append($input); - $input.on('input', () => { - if($input.val().trim() === '') { - $confirmButton.prop("disabled", true); - } else { - $confirmButton.prop("disabled", false); - } - }); - }, - (result) => { - context.fileList.showFileBusyState(tr, false); - data.targetDirName = $input.val(); - if (result) { - $.ajax({ - type: "POST", - async: "false", - url: OC.filePath('extract', 'ajax', 'extract.php'), - data: data, - success: function (response) { - console.log(response); - if (response.code === 1) { - context.fileList.reload(); - } else { - context.fileList.showFileBusyState(tr, false); - OC.dialogs.alert( - t('extract', response.desc), - t('extract', 'Error extracting ' ) + filename - ); - } + $input.on('input', () => { + $confirmButton.prop('disabled', $input.val().trim() === ''); + }); + }, (result) => { + context.fileList.showFileBusyState(tr, false); + data.targetDirName = $input.val(); + if (result) { + $.ajax({ + type: 'POST', + async: 'false', + url: OC.filePath('extract', 'ajax', 'extract.php'), + data: data, + success: function (response) { + console.log(response); + if (response.code === 1) { + context.fileList.reload(); + } else { + context.fileList.showFileBusyState(tr, false); + OC.dialogs.alert(t('extract', response.desc), t('extract', 'Error extracting ') + filename); } - }); - } - }, - ); + }, + }); + } + },); }, init: function () { const self = this; - // ZIP - OCA.Files.fileActions.registerAction({ - name: 'extractzip', - displayName: t('extract', 'Extract'), - mime: 'application/zip', - permissions: OC.PERMISSION_UPDATE, - type: OCA.Files.FileActions.TYPE_DROPDOWN, - iconClass: 'icon-extract', - actionHandler: function (filename, context) { - self.extractDialog(filename, context, 'zip'); - } - }); - - // RAR - OCA.Files.fileActions.registerAction({ - name: 'extractrar', - displayName: t('extract', 'Extract'), - mime: 'application/x-rar-compressed', - permissions: OC.PERMISSION_UPDATE, - type: OCA.Files.FileActions.TYPE_DROPDOWN, - iconClass: 'icon-extract', - actionHandler: function (filename, context) { - self.extractDialog(filename, context, 'rar'); - } - }); - - // TAR - const types = ['application/x-tar', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-deb', 'application/x-gzip']; - types.forEach(type => { + const registerAction = function (name, mime) { OCA.Files.fileActions.registerAction({ - name: 'extractOthers', + name: name, displayName: t('extract', 'Extract'), - mime: type, + mime: mime, permissions: OC.PERMISSION_UPDATE, type: OCA.Files.FileActions.TYPE_DROPDOWN, iconClass: 'icon-extract', actionHandler: function (filename, context) { - self.extractDialog(filename, context, 'other'); - } + self.extractDialog(filename, context, mime); + }, }); + }; + + // ZIP + registerAction('extractzip', 'application/zip'); + + // RAR + registerAction('extractrar', 'application/x-rar-compressed'); + + // TAR and others + const types = ['application/x-tar', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-deb', 'application/x-gzip', 'application/x-compressed']; + types.forEach(type => { + registerAction('extractOthers', type); }); }, - } + }; + actionsExtract.init(); }); - diff --git a/l10n/bg.js b/l10n/bg.js index 2cde74e..5e19af0 100644 --- a/l10n/bg.js +++ b/l10n/bg.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Опа, нещо се обърка. Проверете дали имате инсталиран p7zip", "Extract" : "Извличане", "Extract archive from the web interface" : "Извличане на архив от уеб интерфейса", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Извличане на архиви.\n\n* **Поддържани:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Изисквания:** \n *Rar PHP разширение (pecl -v инсталирайте rar)\n\n * **ИЛИ** \n * unrar (sudo apt-get инсталирайтеl unrar)\n\n * **AND**\n * p7zip (sudo apt-get инсталирайте p7zip p7zip-full)\n\n* **Забележка:** Шифрираните файлове все още не се поддържат " + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Извличане на архиви.\n\n* **Поддържани:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Изисквания:**\n *Rar PHP разширение (pecl -v инсталирайте rar)\n\n * **ИЛИ**\n * unrar (sudo apt-get инсталирайтеl unrar)\n\n * **AND**\n * p7zip (sudo apt-get инсталирайте p7zip p7zip-full)\n\n* **Забележка:** Шифрираните файлове все още не се поддържат" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/bg.json b/l10n/bg.json index 8c83acc..beec013 100644 --- a/l10n/bg.json +++ b/l10n/bg.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Опа, нещо се обърка. Проверете дали имате инсталиран p7zip", "Extract" : "Извличане", "Extract archive from the web interface" : "Извличане на архив от уеб интерфейса", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Извличане на архиви.\n\n* **Поддържани:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Изисквания:** \n *Rar PHP разширение (pecl -v инсталирайте rar)\n\n * **ИЛИ** \n * unrar (sudo apt-get инсталирайтеl unrar)\n\n * **AND**\n * p7zip (sudo apt-get инсталирайте p7zip p7zip-full)\n\n* **Забележка:** Шифрираните файлове все още не се поддържат " + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Извличане на архиви.\n\n* **Поддържани:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Изисквания:**\n *Rar PHP разширение (pecl -v инсталирайте rar)\n\n * **ИЛИ**\n * unrar (sudo apt-get инсталирайтеl unrar)\n\n * **AND**\n * p7zip (sudo apt-get инсталирайте p7zip p7zip-full)\n\n* **Забележка:** Шифрираните файлове все още не се поддържат" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/ca.js b/l10n/ca.js index ef7a523..70396e8 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Alguna cosa ha anat malament. Comproveu que teniu p7zip instal·lat", "Extract" : "Extreure", "Extract archive from the web interface" : "Extreure l'arxiu de la interfície web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extreure arxius.\n\n* **Suportats :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :** \n * Extensió PHP de rar (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extreure arxius.\n\n* **Suportats :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :**\n * Extensió PHP de rar (pecl -v install rar)\n \n * **O**\n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/ca.json b/l10n/ca.json index acf5396..3a7d3bc 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Alguna cosa ha anat malament. Comproveu que teniu p7zip instal·lat", "Extract" : "Extreure", "Extract archive from the web interface" : "Extreure l'arxiu de la interfície web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extreure arxius.\n\n* **Suportats :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :** \n * Extensió PHP de rar (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extreure arxius.\n\n* **Suportats :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisits :**\n * Extensió PHP de rar (pecl -v install rar)\n \n * **O**\n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Els arxius encriptats encara no estan suportats" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/da.js b/l10n/da.js index bcc3f2b..701628a 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Ups! Noget gik galt. Kontroller, at du har installeret p7zip", "Extract" : "Udpak", "Extract archive from the web interface" : "Udpak arkiv fra webgrænsefladen", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Uddrag arkiver.\n\n**Understøttet :**\n\n* ZIP\n* Rar\n*Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n**Krav:**\n* Rar PHP-udvidelse (pecl -v install rar)\n\n**ELLER**\n* unrar (sudo apt-get install unrar)\n\n**OG**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Bemærk:** Krypterede filer understøttes ikke endnu" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Uddrag arkiver.\n\n**Understøttet :**\n\n * ZIP\n * Rar\n *Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n **Krav:**\n * Rar PHP-udvidelse (pecl -v install rar)\n\n **ELLER**\n * unrar (sudo apt-get install unrar)\n\n **OG**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Bemærk:** Krypterede filer understøttes ikke endnu" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/da.json b/l10n/da.json index 8999f42..a5c02b1 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Ups! Noget gik galt. Kontroller, at du har installeret p7zip", "Extract" : "Udpak", "Extract archive from the web interface" : "Udpak arkiv fra webgrænsefladen", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Uddrag arkiver.\n\n**Understøttet :**\n\n* ZIP\n* Rar\n*Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n**Krav:**\n* Rar PHP-udvidelse (pecl -v install rar)\n\n**ELLER**\n* unrar (sudo apt-get install unrar)\n\n**OG**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Bemærk:** Krypterede filer understøttes ikke endnu" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Uddrag arkiver.\n\n**Understøttet :**\n\n * ZIP\n * Rar\n *Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n **Krav:**\n * Rar PHP-udvidelse (pecl -v install rar)\n\n **ELLER**\n * unrar (sudo apt-get install unrar)\n\n **OG**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Bemærk:** Krypterede filer understøttes ikke endnu" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/de.js b/l10n/de.js index 392a0c9..378a68b 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -1,18 +1,18 @@ OC.L10N.register( "extract", { - "Error extracting ": "Fehler beim Entpacken von ", - "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", - "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob du die Erweiterung rar oder unrar installiert hast", - "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob du p7zip installiert hast", - "Extract": "Entpacken", - "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", - "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", - "File Name": "Dateiname", - "Directory already exists": "Ordner existiert bereits" - }, - "nplurals=2; plural=(n != 1);" -); + "Extract here" : "Hier entpacken", + "Error extracting " : "Fehler beim Entpacken von", + "Encryption is not supported yet" : "Verschlüsselung wird bislang nicht unterstützt", + "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfe, ob du die Erweiterung rar oder unrar installiert hast", + "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfe, ob du p7zip installiert hast", + "Extract" : "Entpacken", + "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive entpacken.\n\n* **Unterstützt :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:**\n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER**\n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", + "Files will be extracted to this folder:" : "Dateien werden in diesen Ordner entpackt:", + "File Name" : "Dateiname", + "Directory already exists" : "Ordner existiert bereits" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/de.json b/l10n/de.json index 7bd9d54..0c44b88 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -1,17 +1,16 @@ -{ - "translations": { - "Error extracting": "Fehler beim Entpacken von", - "Encryption is not supported yet": "Verschlüsselung wird bislang nicht unterstützt", - "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfe, ob du die Erweiterung rar oder unrar installiert hast", - "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfe, ob du p7zip installiert hast", - "Extract": "Entpacken", - "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", - "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", - "File Name": "Dateiname", - "Directory already exists": "Ordner existiert bereits" - }, - "pluralForm": "nplurals=2; plural=(n != 1);" -} \ No newline at end of file +{ "translations": { + "Extract here" : "Hier entpacken", + "Error extracting " : "Fehler beim Entpacken", + "Encryption is not supported yet" : "Verschlüsselung wird bislang nicht unterstützt", + "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfe, ob du die Erweiterung rar oder unrar installiert hast", + "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfe, ob du p7zip installiert hast", + "Extract" : "Entpacken", + "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive entpacken.\n\n* **Unterstützt :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:**\n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER**\n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", + "Files will be extracted to this folder:" : "Dateien werden in diesen Ordner entpackt:", + "File Name" : "Dateiname", + "Directory already exists" : "Ordner existiert bereits" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 4f59a58..1371580 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -1,18 +1,18 @@ OC.L10N.register( "extract", { - "Error extracting ": "Fehler beim Entpacken ", - "Encryption is not supported yet": "Verschlüsselung wird noch nicht unterstützt", - "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", - "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", - "Extract": "Entpacken", - "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", - "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", - "File Name": "Dateiname", - "Directory already exists": "Ordner existiert bereits" - }, - "nplurals=2; plural=(n != 1);" -); + "Extract here" : "Hier entpacken", + "Error extracting " : "Fehler beim Entpacken", + "Encryption is not supported yet" : "Verschlüsselung wird noch nicht unterstützt", + "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", + "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", + "Extract" : "Entpacken", + "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive extrahieren.\n\n* **Unterstützt:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n * Zip\n\n* **Anforderungen :**\n * Rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER**\n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Hinweis:** Verschlüsselte Dateien werden noch nicht unterstützt", + "Files will be extracted to this folder:" : "Dateien werden in diesen Ordner entpackt:", + "File Name" : "Dateiname", + "Directory already exists" : "Ordner existiert bereits" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 4e5c0b9..55bc976 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -1,17 +1,16 @@ -{ - "translations": { - "Error extracting ": "Fehler beim Entpacken", - "Encryption is not supported yet": "Verschlüsselung wird noch nicht unterstützt", - "Zip extension is not available": "Zip-Erweiterung nicht verfügbar", - "Cannot open Zip file": "Zip-Datei kann nicht geöffnet werden", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", - "Oops something went wrong. Check that you have p7zip installed": "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", - "Extract": "Entpacken", - "Extract archive from the web interface": "Gepackte Datei aus dem Webinterface entpacken", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Archive entpacken.\n\n* **Unterstützt:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Anforderungen:** \n * rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER** \n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **ACHTUNG:** Verschlüsselte Dateien werden bislang nicht unterstützt", - "Files will be extracted to this folder:": "Dateien werden in diesen Ordner entpackt:", - "File Name": "Dateiname", - "Directory already exists": "Ordner existiert bereits" - }, - "pluralForm": "nplurals=2; plural=(n != 1);" -} \ No newline at end of file +{ "translations": { + "Extract here" : "Hier entpacken", + "Error extracting " : "Fehler beim Entpacken", + "Encryption is not supported yet" : "Verschlüsselung wird noch nicht unterstützt", + "Zip extension is not available" : "Zip-Erweiterung nicht verfügbar", + "Cannot open Zip file" : "Zip-Datei kann nicht geöffnet werden", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie die Erweiterung rar oder unrar installiert haben", + "Oops something went wrong. Check that you have p7zip installed" : "Ups! Irgendwas lief schief. Überprüfen Sie, ob Sie p7zip installiert haben", + "Extract" : "Entpacken", + "Extract archive from the web interface" : "Gepackte Datei aus dem Webinterface entpacken", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archive extrahieren.\n\n* **Unterstützt:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n * Zip\n\n* **Anforderungen :**\n * Rar PHP-Erweiterung (pecl -v install rar)\n\n * **ODER**\n * unrar (sudo apt-get install unrar)\n\n * **UND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Hinweis:** Verschlüsselte Dateien werden noch nicht unterstützt", + "Files will be extracted to this folder:" : "Dateien werden in diesen Ordner entpackt:", + "File Name" : "Dateiname", + "Directory already exists" : "Ordner existiert bereits" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} diff --git a/l10n/el.js b/l10n/el.js index ceb2e23..0cad003 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Ωχ! Κάτι πήγε στραβά. Βεβαιωθείτε ότι έχετε εγκαταστήσει το p7zip", "Extract" : "Αποσυμπίεση", "Extract archive from the web interface" : "Αποσυμπίεση αρχείου από περιηγητή", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Αποσυμπίεση αρχείων.\n\n* ** Υποστηρίζεται :** \n\n * Zip \n * Rar \n * Tar \n * Gzip \n * 7z \n * Deb \n * Bzip2 \n\n* ** Απαιτήσεις :** \n * Rar επέκταση PHP (pecl -v install rar)\n\n * **Ή **\n * unrar (sudo apt-get install unrar)\n\n * **ΚΑΙ**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n * **Σημείωση :** Τα κρυπτογραφημένα αρχεία δεν υποστηρίζονται ακόμη" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Αποσυμπίεση αρχείων.\n\n* ** Υποστηρίζεται :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* ** Απαιτήσεις :**\n * Rar επέκταση PHP (pecl -v install rar)\n\n * **Ή **\n * unrar (sudo apt-get install unrar)\n\n * **ΚΑΙ**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n * **Σημείωση :** Τα κρυπτογραφημένα αρχεία δεν υποστηρίζονται ακόμη" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/el.json b/l10n/el.json index c3f90df..31b552c 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Ωχ! Κάτι πήγε στραβά. Βεβαιωθείτε ότι έχετε εγκαταστήσει το p7zip", "Extract" : "Αποσυμπίεση", "Extract archive from the web interface" : "Αποσυμπίεση αρχείου από περιηγητή", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Αποσυμπίεση αρχείων.\n\n* ** Υποστηρίζεται :** \n\n * Zip \n * Rar \n * Tar \n * Gzip \n * 7z \n * Deb \n * Bzip2 \n\n* ** Απαιτήσεις :** \n * Rar επέκταση PHP (pecl -v install rar)\n\n * **Ή **\n * unrar (sudo apt-get install unrar)\n\n * **ΚΑΙ**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n * **Σημείωση :** Τα κρυπτογραφημένα αρχεία δεν υποστηρίζονται ακόμη" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Αποσυμπίεση αρχείων.\n\n* ** Υποστηρίζεται :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* ** Απαιτήσεις :**\n * Rar επέκταση PHP (pecl -v install rar)\n\n * **Ή **\n * unrar (sudo apt-get install unrar)\n\n * **ΚΑΙ**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n * **Σημείωση :** Τα κρυπτογραφημένα αρχεία δεν υποστηρίζονται ακόμη" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/es.js b/l10n/es.js index 9f815fb..dc4c17b 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -1,18 +1,18 @@ OC.L10N.register( "extract", { - "Error extracting ": "Error al extraer ", - "Encryption is not supported yet": "El cifrado aún no está soportado", - "Zip extension is not available": "La extensión Zip no está disponible", - "Cannot open Zip file": "No se puede abrir el archivo Zip", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", - "Oops something went wrong. Check that you have p7zip installed": "Oops, algo ha ido mal. Comprueba que p7zip está instalado", - "Extract": "Extraer", - "Extract archive from the web interface": "Extraer el archivo desde la interfaz web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados", - "Files will be extracted to this folder:": "Los archivos se extraerán a esta carpeta:", - "File Name": "Nombre del archivo", - "Directory already exists": "El directorio ya existe" - }, - "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" -); + "Extract here" : "Extraer aquí", + "Error extracting " : "Error al extraer", + "Encryption is not supported yet" : "El cifrado aún no está soportado", + "Zip extension is not available" : "La extensión Zip no está disponible", + "Cannot open Zip file" : "No se puede abrir el archivo Zip", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", + "Oops something went wrong. Check that you have p7zip installed" : "Oops, algo ha ido mal. Comprueba que p7zip está instalado", + "Extract" : "Extraer", + "Extract archive from the web interface" : "Extraer el archivo desde la interfaz web", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados", + "Files will be extracted to this folder:" : "Los archivos se extraerán a esta carpeta:", + "File Name" : "Nombre del archivo", + "Directory already exists" : "El directorio ya existe" +}, +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/l10n/es.json b/l10n/es.json index eff5b7a..383e26a 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -1,17 +1,16 @@ -{ - "translations": { - "Error extracting": "Error al extraer", - "Encryption is not supported yet": "El cifrado aún no está soportado", - "Zip extension is not available": "La extensión Zip no está disponible", - "Cannot open Zip file": "No se puede abrir el archivo Zip", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", - "Oops something went wrong. Check that you have p7zip installed": "Oops, algo ha ido mal. Comprueba que p7zip está instalado", - "Extract": "Extraer", - "Extract archive from the web interface": "Extraer el archivo desde la interfaz web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet": "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados", - "Files will be extracted to this folder:": "Los archivos se extraerán a esta carpeta:", - "File Name": "Nombre del archivo", - "Directory already exists": "El directorio ya existe" - }, - "pluralForm": "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" -} \ No newline at end of file +{ "translations": { + "Extract here" : "Extraer aquí", + "Error extracting " : "Error al extraer", + "Encryption is not supported yet" : "El cifrado aún no está soportado", + "Zip extension is not available" : "La extensión Zip no está disponible", + "Cannot open Zip file" : "No se puede abrir el archivo Zip", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Oops, algo ha ido mal. Comprueba que tienes la extensión rar o que unrar está instalado", + "Oops something went wrong. Check that you have p7zip installed" : "Oops, algo ha ido mal. Comprueba que p7zip está instalado", + "Extract" : "Extraer", + "Extract archive from the web interface" : "Extraer el archivo desde la interfaz web", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Extraer archivos comprimidos.\n\n* **Formatos soportados :** \n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisitos:** \n * Extensión PHP rar (pecl -v install rar)\n\n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **Y**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Los archivos cifrados todavía no están soportados", + "Files will be extracted to this folder:" : "Los archivos se extraerán a esta carpeta:", + "File Name" : "Nombre del archivo", + "Directory already exists" : "El directorio ya existe" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +} diff --git a/l10n/eu.json b/l10n/eu.json index 61db2c5..44b6881 100644 --- a/l10n/eu.json +++ b/l10n/eu.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Arazoren bat izan da. Egiaztatu p7zip instalatuta duzula", "Extract" : "Atera", "Extract archive from the web interface" : "Atera artxiboa web interfazetik", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Atera artxiboak.\n\n* **Onartuta:**\n\n* Zip \n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Eskakizunak:** \n* Rar PHP luzapena (pecl -v install rar)\n\n * **EDO** \n* unrar (sudo apt-get install unrar)\n\n * **ETA**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Oharra:** \nOraindik ez dira enkriptatutako fitxategiak onartzen" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Atera artxiboak.\n\n* **Onartzen du :**\n\n* Zip\n* Arraroa\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Baldintzak:**\n * Rar PHP luzapena (pecl -v install rar)\n\n* **EDO**\n * unrar (sudo apt-get install unrar)\n\n* **ETA**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Oharra :** Zifratutako fitxategiak ez dira onartzen oraindik" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/fi.js b/l10n/fi.js index d00ea97..abcd49c 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Hups, jokin meni pieleen. Varmista että p7zip on asennettu", "Extract" : "Pura", "Extract archive from the web interface" : "Pura arkistotiedosto verkkokäyttöliittymän avulla", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Pura arkistoja.\n\n* **Tuettu :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Vaatii :** \n * Rar PHP laajennuksen (pecl -v install rar)\n\n * **TAI** \n * unrar (sudo apt-get install unrar)\n\n * **JA**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Huom. :** Salattuja tiedostoja ei tueta vielä" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Pura arkistoja.\n\n* **Tuettu :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Vaatii :**\n * Rar PHP laajennuksen (pecl -v install rar)\n\n * **TAI**\n * unrar (sudo apt-get install unrar)\n\n * **JA**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Huom. :** Salattuja tiedostoja ei tueta vielä" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/fi.json b/l10n/fi.json index 310bf68..75198aa 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Hups, jokin meni pieleen. Varmista että p7zip on asennettu", "Extract" : "Pura", "Extract archive from the web interface" : "Pura arkistotiedosto verkkokäyttöliittymän avulla", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Pura arkistoja.\n\n* **Tuettu :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Vaatii :** \n * Rar PHP laajennuksen (pecl -v install rar)\n\n * **TAI** \n * unrar (sudo apt-get install unrar)\n\n * **JA**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Huom. :** Salattuja tiedostoja ei tueta vielä" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Pura arkistoja.\n\n* **Tuettu :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Vaatii :**\n * Rar PHP laajennuksen (pecl -v install rar)\n\n * **TAI**\n * unrar (sudo apt-get install unrar)\n\n * **JA**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Huom. :** Salattuja tiedostoja ei tueta vielä" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/he.js b/l10n/he.js index 954da20..b0f2a51 100644 --- a/l10n/he.js +++ b/l10n/he.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "אופס, משהו השתבש. נא לבדוק שמותקן אצלך p7zip", "Extract" : "חילוץ", "Extract archive from the web interface" : "חילוץ ארכיון בעזרת מנשק הדפדפן", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "חילוץ ארכיונים.\n\n* **נתמכים:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **דרישות :** \n * הרחבת Rar של PHP‏ (pecl -v install rar)\n\n * **או** \n * unrar (sudo apt-get install unrar)\n\n * **וגם**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **לתשומת לבך :** אין עדיין תמיכה בקבצים מוצפנים" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "חילוץ ארכיונים.\n\n* **נתמכים:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **דרישות :**\n * הרחבת Rar של PHP‏ (pecl -v install rar)\n\n * **או**\n * unrar (sudo apt-get install unrar)\n\n * **וגם**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **לתשומת לבך :** אין עדיין תמיכה בקבצים מוצפנים" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/l10n/he.json b/l10n/he.json index 791e27f..7b1a0de 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "אופס, משהו השתבש. נא לבדוק שמותקן אצלך p7zip", "Extract" : "חילוץ", "Extract archive from the web interface" : "חילוץ ארכיון בעזרת מנשק הדפדפן", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "חילוץ ארכיונים.\n\n* **נתמכים:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **דרישות :** \n * הרחבת Rar של PHP‏ (pecl -v install rar)\n\n * **או** \n * unrar (sudo apt-get install unrar)\n\n * **וגם**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **לתשומת לבך :** אין עדיין תמיכה בקבצים מוצפנים" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "חילוץ ארכיונים.\n\n* **נתמכים:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **דרישות :**\n * הרחבת Rar של PHP‏ (pecl -v install rar)\n\n * **או**\n * unrar (sudo apt-get install unrar)\n\n * **וגם**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **לתשומת לבך :** אין עדיין תמיכה בקבצים מוצפנים" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" -} \ No newline at end of file +} diff --git a/l10n/hr.js b/l10n/hr.js index cd6f6ea..4d4f6f0 100644 --- a/l10n/hr.js +++ b/l10n/hr.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Ups! Nešto je pošlo po krivu. Provjerite je li instaliran p7zip", "Extract" : "Izdvoji", "Extract archive from the web interface" : "Izdvoji arhivu putem web-sučelja", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Izdvoji arhive.\n\n* **Podržano :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahtjevi :** \n * Rar PHP proširenje (pecl -v install rar)\n\n * **ILI** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Napomena :** šifrirane datoteke još uvijek nisu podržane" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Izdvoji arhive.\n\n* **Podržano :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahtjevi :**\n * Rar PHP proširenje (pecl -v install rar)\n\n * **ILI**\n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Napomena :** šifrirane datoteke još uvijek nisu podržane" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/l10n/hr.json b/l10n/hr.json index b8f91d1..911015e 100644 --- a/l10n/hr.json +++ b/l10n/hr.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Ups! Nešto je pošlo po krivu. Provjerite je li instaliran p7zip", "Extract" : "Izdvoji", "Extract archive from the web interface" : "Izdvoji arhivu putem web-sučelja", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Izdvoji arhive.\n\n* **Podržano :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahtjevi :** \n * Rar PHP proširenje (pecl -v install rar)\n\n * **ILI** \n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Napomena :** šifrirane datoteke još uvijek nisu podržane" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Izdvoji arhive.\n\n* **Podržano :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahtjevi :**\n * Rar PHP proširenje (pecl -v install rar)\n\n * **ILI**\n * unrar (sudo apt-get install unrar)\n\n * **I**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Napomena :** šifrirane datoteke još uvijek nisu podržane" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" -} \ No newline at end of file +} diff --git a/l10n/hu.js b/l10n/hu.js index b2e32ef..26d71c3 100644 --- a/l10n/hu.js +++ b/l10n/hu.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Hoppá! Valami rosszul sült el. Ellenőrizze, hogy telepítve van-e a p7zip", "Extract" : "Kibontás", "Extract archive from the web interface" : "Archívum kibontása a webes felületről", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archívumok kibontása.\n\n* **Támogatott :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Szükséges:** \n * Rar PHP kiterjesztés (pecl -v install rar)\n \n * **VAGY** \n * unrar (sudo apt-get install unrar)\n\n * **ÉS**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Megjegyzés :** A titkosított fájlok még nem támogatottak" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archívumok kibontása.\n\n* **Támogatott :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Szükséges:**\n * Rar PHP kiterjesztés (pecl -v install rar)\n\n * **VAGY**\n * unrar (sudo apt-get install unrar)\n\n * **ÉS**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Megjegyzés :** A titkosított fájlok még nem támogatottak" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/hu.json b/l10n/hu.json index 15bab76..7ebe0de 100644 --- a/l10n/hu.json +++ b/l10n/hu.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Hoppá! Valami rosszul sült el. Ellenőrizze, hogy telepítve van-e a p7zip", "Extract" : "Kibontás", "Extract archive from the web interface" : "Archívum kibontása a webes felületről", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archívumok kibontása.\n\n* **Támogatott :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Szükséges:** \n * Rar PHP kiterjesztés (pecl -v install rar)\n \n * **VAGY** \n * unrar (sudo apt-get install unrar)\n\n * **ÉS**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Megjegyzés :** A titkosított fájlok még nem támogatottak" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archívumok kibontása.\n\n* **Támogatott :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Szükséges:**\n * Rar PHP kiterjesztés (pecl -v install rar)\n\n * **VAGY**\n * unrar (sudo apt-get install unrar)\n\n * **ÉS**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Megjegyzés :** A titkosított fájlok még nem támogatottak" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/is.js b/l10n/is.js index ccd3681..801f5da 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -6,6 +6,6 @@ OC.L10N.register( "Zip extension is not available" : "Zip-viðaukinn er ekki tiltækur", "Extract" : "Afþjappa", "Extract archive from the web interface" : "Afþjappa safnskrá úr vefviðmótinu", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Afþjappar safnskrár.\n\n* **Stuðningur við :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Kerfiskröfur :** \n * Rar PHP-viðauki (pecl -v install rar)\n \n * **EÐA** \n * unrar (sudo apt-get install unrar)\n\n * **OG**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Athugið :** Ekki er enn stuðningur við dulritaðar skrár" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Afþjappar safnskrár.\n\n* **Stuðningur við :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Kerfiskröfur :**\n * Rar PHP-viðauki (pecl -v install rar)\n\n * **EÐA**\n * unrar (sudo apt-get install unrar)\n\n * **OG**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Athugið :** Ekki er enn stuðningur við dulritaðar skrár" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/l10n/is.json b/l10n/is.json index c83c170..b36dde2 100644 --- a/l10n/is.json +++ b/l10n/is.json @@ -4,6 +4,6 @@ "Zip extension is not available" : "Zip-viðaukinn er ekki tiltækur", "Extract" : "Afþjappa", "Extract archive from the web interface" : "Afþjappa safnskrá úr vefviðmótinu", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Afþjappar safnskrár.\n\n* **Stuðningur við :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Kerfiskröfur :** \n * Rar PHP-viðauki (pecl -v install rar)\n \n * **EÐA** \n * unrar (sudo apt-get install unrar)\n\n * **OG**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Athugið :** Ekki er enn stuðningur við dulritaðar skrár" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Afþjappar safnskrár.\n\n* **Stuðningur við :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Kerfiskröfur :**\n * Rar PHP-viðauki (pecl -v install rar)\n\n * **EÐA**\n * unrar (sudo apt-get install unrar)\n\n * **OG**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Athugið :** Ekki er enn stuðningur við dulritaðar skrár" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" -} \ No newline at end of file +} diff --git a/l10n/it.js b/l10n/it.js index cbf17f2..8dad513 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Qualcosa non ha funzionato. Controlla di avere p7zip installato", "Extract" : "Estrai", "Extract archive from the web interface" : "Estrai archivio dall'interfaccia web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Estrai archivi.\n\n* **Supportati:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisiti:** \n * Estensione rar di PHP (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **E**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota:** I file cifrati non sono ancora supportati" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Estrai archivi.\n\n* **Supportati:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisiti:**\n * Estensione rar di PHP (pecl -v install rar)\n\n * **O**\n * unrar (sudo apt-get install unrar)\n\n * **E**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota:** I file cifrati non sono ancora supportati" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/l10n/it.json b/l10n/it.json index 6db26a5..2555cb4 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Qualcosa non ha funzionato. Controlla di avere p7zip installato", "Extract" : "Estrai", "Extract archive from the web interface" : "Estrai archivio dall'interfaccia web", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Estrai archivi.\n\n* **Supportati:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisiti:** \n * Estensione rar di PHP (pecl -v install rar)\n \n * **O** \n * unrar (sudo apt-get install unrar)\n\n * **E**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota:** I file cifrati non sono ancora supportati" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Estrai archivi.\n\n* **Supportati:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requisiti:**\n * Estensione rar di PHP (pecl -v install rar)\n\n * **O**\n * unrar (sudo apt-get install unrar)\n\n * **E**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota:** I file cifrati non sono ancora supportati" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" -} \ No newline at end of file +} diff --git a/l10n/ja.js b/l10n/ja.js index 74d6736..977e68c 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "エラーが発生しました。p7zipがインストールされていることを確認してください", "Extract" : "展開", "Extract archive from the web interface" : "ウェブインターフェースからアーカイブを展開する", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "アーカイブから抽出します\n\n* **サポート圧縮形式:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **必要なもの:** \n * Rar PHP拡張(pecl -v install rar)\n \n * **もしくは** \n * unrar (sudo apt-get install unrar)\n\n * **また**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意 :** 暗号化された圧縮ファイルはサポートされていません" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "アーカイブから抽出します\n\n* **サポート圧縮形式:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **必要なもの:**\n * Rar PHP拡張(pecl -v install rar)\n\n * **もしくは**\n * unrar (sudo apt-get install unrar)\n\n * **また**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意 :** 暗号化された圧縮ファイルはサポートされていません" }, "nplurals=1; plural=0;"); diff --git a/l10n/ja.json b/l10n/ja.json index e3eb226..5ae597b 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "エラーが発生しました。p7zipがインストールされていることを確認してください", "Extract" : "展開", "Extract archive from the web interface" : "ウェブインターフェースからアーカイブを展開する", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "アーカイブから抽出します\n\n* **サポート圧縮形式:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **必要なもの:** \n * Rar PHP拡張(pecl -v install rar)\n \n * **もしくは** \n * unrar (sudo apt-get install unrar)\n\n * **また**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意 :** 暗号化された圧縮ファイルはサポートされていません" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "アーカイブから抽出します\n\n* **サポート圧縮形式:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **必要なもの:**\n * Rar PHP拡張(pecl -v install rar)\n\n * **もしくは**\n * unrar (sudo apt-get install unrar)\n\n * **また**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意 :** 暗号化された圧縮ファイルはサポートされていません" },"pluralForm" :"nplurals=1; plural=0;" -} \ No newline at end of file +} diff --git a/l10n/ko.js b/l10n/ko.js index 713452c..1ec229c 100644 --- a/l10n/ko.js +++ b/l10n/ko.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "앗, 무엇인가 잘못되었습니다. p7zip을 설치했는지 확인하십시오", "Extract" : "압축 풀기", "Extract archive from the web interface" : "웹 인터페이스에서 압축 풀기", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "압축을 해제하십시오.\n\n* **지원하는 파일 :**\n\n* Zip \n  * Rar\n  * Tar\n  * Gzip\n  * 7z\n  * Deb\n  * Bzip2\n\n* **요구사항 :** \n * Rar PHP 확장 (pecl -v install rar)\n\n  * **또는** \n  * unrar (sudo apt-get install unrar)\n\n * **그리고**\n  * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **참고 :** 암호화된 파일은 아직 지원하지 않습니다" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "압축을 해제하십시오.\n\n* **지원하는 파일 :**\n\n * Zip\n   * Rar\n   * Tar\n   * Gzip\n   * 7z\n   * Deb\n   * Bzip2\n\n* **요구사항 :**\n * Rar PHP 확장 (pecl -v install rar)\n\n   * **또는**\n   * unrar (sudo apt-get install unrar)\n\n * **그리고**\n   * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **참고 :** 암호화된 파일은 아직 지원하지 않습니다" }, "nplurals=1; plural=0;"); diff --git a/l10n/ko.json b/l10n/ko.json index 0f79392..aa59801 100644 --- a/l10n/ko.json +++ b/l10n/ko.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "앗, 무엇인가 잘못되었습니다. p7zip을 설치했는지 확인하십시오", "Extract" : "압축 풀기", "Extract archive from the web interface" : "웹 인터페이스에서 압축 풀기", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "압축을 해제하십시오.\n\n* **지원하는 파일 :**\n\n* Zip \n  * Rar\n  * Tar\n  * Gzip\n  * 7z\n  * Deb\n  * Bzip2\n\n* **요구사항 :** \n * Rar PHP 확장 (pecl -v install rar)\n\n  * **또는** \n  * unrar (sudo apt-get install unrar)\n\n * **그리고**\n  * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **참고 :** 암호화된 파일은 아직 지원하지 않습니다" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "압축을 해제하십시오.\n\n* **지원하는 파일 :**\n\n * Zip\n   * Rar\n   * Tar\n   * Gzip\n   * 7z\n   * Deb\n   * Bzip2\n\n* **요구사항 :**\n * Rar PHP 확장 (pecl -v install rar)\n\n   * **또는**\n   * unrar (sudo apt-get install unrar)\n\n * **그리고**\n   * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **참고 :** 암호화된 파일은 아직 지원하지 않습니다" },"pluralForm" :"nplurals=1; plural=0;" -} \ No newline at end of file +} diff --git a/l10n/mk.js b/l10n/mk.js index d8d6430..6893afa 100644 --- a/l10n/mk.js +++ b/l10n/mk.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Настана грешка. Проверете дали имате инсталирано p7zip", "Extract" : "Отпакувај", "Extract archive from the web interface" : "Отпакување архиви од веб прелистувач", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Одпакување на архиви.\n\n* **Поддржани :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Барања :** \n * Rar PHP додаток (pecl -v install rar)\n\n * **ИЛИ** \n * unrar (sudo apt-get install unrar)\n\n * **И**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Забелешка :** Криптирани датотеки не се поддржани" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Одпакување на архиви.\n\n* **Поддржани :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Барања :**\n * Rar PHP додаток (pecl -v install rar)\n\n * **ИЛИ**\n * unrar (sudo apt-get install unrar)\n\n * **И**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Забелешка :** Криптирани датотеки не се поддржани" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/l10n/mk.json b/l10n/mk.json index 24699ce..3206819 100644 --- a/l10n/mk.json +++ b/l10n/mk.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Настана грешка. Проверете дали имате инсталирано p7zip", "Extract" : "Отпакувај", "Extract archive from the web interface" : "Отпакување архиви од веб прелистувач", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Одпакување на архиви.\n\n* **Поддржани :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Барања :** \n * Rar PHP додаток (pecl -v install rar)\n\n * **ИЛИ** \n * unrar (sudo apt-get install unrar)\n\n * **И**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Забелешка :** Криптирани датотеки не се поддржани" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Одпакување на архиви.\n\n* **Поддржани :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Барања :**\n * Rar PHP додаток (pecl -v install rar)\n\n * **ИЛИ**\n * unrar (sudo apt-get install unrar)\n\n * **И**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Забелешка :** Криптирани датотеки не се поддржани" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" -} \ No newline at end of file +} diff --git a/l10n/nl.js b/l10n/nl.js index ff06003..ed8c693 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Oeps! Er is iets misgegaan. Controleer of je p7zip hebt geïnstalleerd", "Extract" : "Uitpakken", "Extract archive from the web interface" : "Archief uitpakken via de webinterface", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archieven uitpakken\n\n* ** Ondersteund: **      \n\n* Zip\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* ** Vereisten: **\n* Rar PHP-extensie (pecl -v installatie rar)\n\n* ** OF **\n* unrar (sudo apt-get install unrar)\n\n* ** EN **\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* ** Opmerking: ** Versleutelde bestanden worden nog niet ondersteund" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archieven uitpakken\n\n* ** Ondersteund: **     \n\n * Zip\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n * ** Vereisten: **\n * Rar PHP-extensie (pecl -v installatie rar)\n\n * ** OF **\n * unrar (sudo apt-get install unrar)\n\n * ** EN **\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* ** Opmerking: ** Versleutelde bestanden worden nog niet ondersteund" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/nl.json b/l10n/nl.json index 61c9a24..c14bf8a 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Oeps! Er is iets misgegaan. Controleer of je p7zip hebt geïnstalleerd", "Extract" : "Uitpakken", "Extract archive from the web interface" : "Archief uitpakken via de webinterface", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archieven uitpakken\n\n* ** Ondersteund: **      \n\n* Zip\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* ** Vereisten: **\n* Rar PHP-extensie (pecl -v installatie rar)\n\n* ** OF **\n* unrar (sudo apt-get install unrar)\n\n* ** EN **\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* ** Opmerking: ** Versleutelde bestanden worden nog niet ondersteund" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Archieven uitpakken\n\n* ** Ondersteund: **     \n\n * Zip\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n * ** Vereisten: **\n * Rar PHP-extensie (pecl -v installatie rar)\n\n * ** OF **\n * unrar (sudo apt-get install unrar)\n\n * ** EN **\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* ** Opmerking: ** Versleutelde bestanden worden nog niet ondersteund" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/pl.js b/l10n/pl.js index 792ae71..892ec03 100644 --- a/l10n/pl.js +++ b/l10n/pl.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Ups! Coś poszło nie tak. Sprawdź, czy masz zainstalowany p7zip", "Extract" : "Wyodrębnij", "Extract archive from the web interface" : "Wyodrębnij archiwum z interfejsu internetowego", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Wyodrębnij archiwa.\n\n* **Obsługiwane:**\n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Wymagania:**\n * Rozszerzenie Rar PHP (pecl -v install rar)\n\n * **lub**\n * unrar (sudo apt-get install unrar)\n\n * **i**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Uwaga:** Zaszyfrowane pliki nie są jeszcze obsługiwane" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Wyodrębnij archiwa.\n\n* **Obsługiwane:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Wymagania:**\n * Rozszerzenie Rar PHP (pecl -v install rar)\n\n * **lub**\n * unrar (sudo apt-get install unrar)\n\n * **i**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Uwaga:** Zaszyfrowane pliki nie są jeszcze obsługiwane" }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/l10n/pl.json b/l10n/pl.json index 6f52393..afd6bba 100644 --- a/l10n/pl.json +++ b/l10n/pl.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Ups! Coś poszło nie tak. Sprawdź, czy masz zainstalowany p7zip", "Extract" : "Wyodrębnij", "Extract archive from the web interface" : "Wyodrębnij archiwum z interfejsu internetowego", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Wyodrębnij archiwa.\n\n* **Obsługiwane:**\n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Wymagania:**\n * Rozszerzenie Rar PHP (pecl -v install rar)\n\n * **lub**\n * unrar (sudo apt-get install unrar)\n\n * **i**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Uwaga:** Zaszyfrowane pliki nie są jeszcze obsługiwane" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Wyodrębnij archiwa.\n\n* **Obsługiwane:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Wymagania:**\n * Rozszerzenie Rar PHP (pecl -v install rar)\n\n * **lub**\n * unrar (sudo apt-get install unrar)\n\n * **i**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Uwaga:** Zaszyfrowane pliki nie są jeszcze obsługiwane" },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" -} \ No newline at end of file +} diff --git a/l10n/sc.js b/l10n/sc.js index 049d21b..6fd3416 100644 --- a/l10n/sc.js +++ b/l10n/sc.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Oops calicuna cosa est andada male. Controlla chi tèngias p7zip installadu", "Extract" : "Boga a fora", "Extract archive from the web interface" : "Boga a fora s'archìviu dae s'interfache ìnternet", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Boga a fora archìvios.\n\n* **Suportadu :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Rechisitos :** \n * Estensione Rar PHP (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Encrypted files are not supported yet" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Boga a fora archìvios.\n\n* **Suportadu :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Rechisitos :**\n * Estensione Rar PHP (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Encrypted files are not supported yet" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/sc.json b/l10n/sc.json index f732500..05e7016 100644 --- a/l10n/sc.json +++ b/l10n/sc.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Oops calicuna cosa est andada male. Controlla chi tèngias p7zip installadu", "Extract" : "Boga a fora", "Extract archive from the web interface" : "Boga a fora s'archìviu dae s'interfache ìnternet", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Boga a fora archìvios.\n\n* **Suportadu :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Rechisitos :** \n * Estensione Rar PHP (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Encrypted files are not supported yet" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Boga a fora archìvios.\n\n* **Suportadu :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Rechisitos :**\n * Estensione Rar PHP (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Nota :** Encrypted files are not supported yet" },"pluralForm" :"nplurals=2; plural=(n != 1);" -} \ No newline at end of file +} diff --git a/l10n/sk.js b/l10n/sk.js index 000bab3..d6839ca 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Ups, niečo sa pokazilo. Skontrolujte že máte nainštalovaný p7zip", "Extract" : "Rozbaliť", "Extract archive from the web interface" : "Extrahovať archív z webového rozhrania", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Rozbaliť archívy.\n\n* **Podporované :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Požiadavky :** \n * rozšírenie PHP pre formát rar (pecl -v install rar)\n\n * **alebo** \n * unrar (sudo apt-get install unrar)\n\n * **a**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Poznámka:** Šifrované súbory zatiaľ nie sú podporované" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Rozbaliť archívy.\n\n* **Podporované :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Požiadavky :**\n * rozšírenie PHP pre formát rar (pecl -v install rar)\n\n * **alebo**\n * unrar (sudo apt-get install unrar)\n\n * **a**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Poznámka:** Šifrované súbory zatiaľ nie sú podporované" }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/l10n/sk.json b/l10n/sk.json index 58dd449..8339b7c 100644 --- a/l10n/sk.json +++ b/l10n/sk.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Ups, niečo sa pokazilo. Skontrolujte že máte nainštalovaný p7zip", "Extract" : "Rozbaliť", "Extract archive from the web interface" : "Extrahovať archív z webového rozhrania", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Rozbaliť archívy.\n\n* **Podporované :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Požiadavky :** \n * rozšírenie PHP pre formát rar (pecl -v install rar)\n\n * **alebo** \n * unrar (sudo apt-get install unrar)\n\n * **a**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Poznámka:** Šifrované súbory zatiaľ nie sú podporované" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Rozbaliť archívy.\n\n* **Podporované :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Požiadavky :**\n * rozšírenie PHP pre formát rar (pecl -v install rar)\n\n * **alebo**\n * unrar (sudo apt-get install unrar)\n\n * **a**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Poznámka:** Šifrované súbory zatiaľ nie sú podporované" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" -} \ No newline at end of file +} diff --git a/l10n/sl.js b/l10n/sl.js index 0ad75a6..a38fdb5 100644 --- a/l10n/sl.js +++ b/l10n/sl.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "Ojoj, prišlo je do napake. Preverite, da je nameščena razširitev p7zip.", "Extract" : "Razširi", "Extract archive from the web interface" : "Razširjanje vsebine arhiva prek spletnega vmesnika", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Razširjanje arhiviranih datotek.\n\n* **Podprte vrste:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahteve:** \n * Razširitev PHP RAR (pecl -v install rar)\n\n * **ali** \n * razširitev unrar (sudo apt-get install unrar)\n\n * **in**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Opomba:** Upravljanje s šifriranimi arhivi še ni podprto." + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Razširjanje arhiviranih datotek.\n\n* **Podprte vrste:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahteve:**\n * Razširitev PHP RAR (pecl -v install rar)\n\n * **ali**\n * razširitev unrar (sudo apt-get install unrar)\n\n * **in**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Opomba:** Upravljanje s šifriranimi arhivi še ni podprto." }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/l10n/sl.json b/l10n/sl.json index 995a3a0..67420f3 100644 --- a/l10n/sl.json +++ b/l10n/sl.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "Ojoj, prišlo je do napake. Preverite, da je nameščena razširitev p7zip.", "Extract" : "Razširi", "Extract archive from the web interface" : "Razširjanje vsebine arhiva prek spletnega vmesnika", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Razširjanje arhiviranih datotek.\n\n* **Podprte vrste:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahteve:** \n * Razširitev PHP RAR (pecl -v install rar)\n\n * **ali** \n * razširitev unrar (sudo apt-get install unrar)\n\n * **in**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Opomba:** Upravljanje s šifriranimi arhivi še ni podprto." + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Razširjanje arhiviranih datotek.\n\n* **Podprte vrste:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Zahteve:**\n * Razširitev PHP RAR (pecl -v install rar)\n\n * **ali**\n * razširitev unrar (sudo apt-get install unrar)\n\n * **in**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Opomba:** Upravljanje s šifriranimi arhivi še ni podprto." },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" -} \ No newline at end of file +} diff --git a/l10n/uk.js b/l10n/uk.js index 4b5809c..2432a58 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -1,18 +1,18 @@ OC.L10N.register( "extract", { - "Error extracting ": "Помилка з видобуванням ", - "Encryption is not supported yet": "Шифрування ще не підтримується", - "Zip extension is not available": "Розширення ZIP недоступне", - "Cannot open Zip file": "Не вдається відкрити файл Zip", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", - "Oops something went wrong. Check that you have p7zip installed": "Щось пішло не так. Перевірте, чи встановлено p7zip", - "Extract": "Видобути", - "Extract archive from the web interface": "Видобути архів у вебінтерфейсів", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Розпакуйте архіви. * \n**Підтримується:**\n\n * Zip \n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Requirements :** \n* Rar PHP extension (pecl -v install rar)\n\n* **OR** \n* unrar (sudo apt-get install unrar)\n\n* **AND**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet", - "Files will be extracted to this folder:": "Файли будуть розпаковані в цю папку:", - "File Name": "Ім'я файлу", - "Directory already exists": "Каталог уже існує" - }, - "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" -); + "Extract here" : "Видобути тут", + "Error extracting " : "Помилка з видобуванням", + "Encryption is not supported yet" : "Шифрування ще не підтримується", + "Zip extension is not available" : "Розширення ZIP недоступне", + "Cannot open Zip file" : "Не вдається відкрити файл ZIP", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", + "Oops something went wrong. Check that you have p7zip installed" : "Щось пішло не так. Перевірте, чи встановлено p7zip", + "Extract" : "Видобути", + "Extract archive from the web interface" : "Видобути архів у вебінтерфейсів", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Видобування архівів.\n\n* **Підтримуються:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Вимоги:**\n * Розширення RAR для PHP (pecl -v install rar)\n\n * **АБО**\n * unrar (sudo apt-get install unrar)\n\n * **ТА**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Увага:** Зашифровані файли поки не підтримуються", + "Files will be extracted to this folder:" : "Файли будуть розпаковані в цю папку:", + "File Name" : "Ім'я файлу", + "Directory already exists" : "Каталог уже існує" +}, +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/l10n/uk.json b/l10n/uk.json index c007dba..9368c39 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -1,17 +1,16 @@ -{ - "translations": { - "Error extracting": "Помилка з видобуванням", - "Encryption is not supported yet": "Шифрування ще не підтримується", - "Zip extension is not available": "Розширення ZIP недоступне", - "Cannot open Zip file": "Не вдається відкрити файл Zip", - "Oops something went wrong. Check that you have rar extension or unrar installed": "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", - "Oops something went wrong. Check that you have p7zip installed": "Щось пішло не так. Перевірте, чи встановлено p7zip", - "Extract": "Видобути", - "Extract archive from the web interface": "Видобути архів у вебінтерфейсів", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Розпакуйте архіви. * \n**Підтримується:**\n\n * Zip \n* Rar\n* Tar\n* Gzip\n* 7z\n* Deb\n* Bzip2\n\n* **Requirements :** \n* Rar PHP extension (pecl -v install rar)\n\n* **OR** \n* unrar (sudo apt-get install unrar)\n\n* **AND**\n* p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet", - "Files will be extracted to this folder:": "Файли будуть розпаковані в цю папку:", - "File Name": "Ім'я файлу", - "Directory already exists": "Каталог уже існує" - }, - "pluralForm": "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" -} \ No newline at end of file +{ "translations": { + "Extract here" : "Видобути тут", + "Error extracting " : "Помилка з видобуванням", + "Encryption is not supported yet" : "Шифрування ще не підтримується", + "Zip extension is not available" : "Розширення ZIP недоступне", + "Cannot open Zip file" : "Не вдається відкрити файл ZIP", + "Oops something went wrong. Check that you have rar extension or unrar installed" : "Щось пішло не так. Перевірте, чи встановлено розширення rar або unrar", + "Oops something went wrong. Check that you have p7zip installed" : "Щось пішло не так. Перевірте, чи встановлено p7zip", + "Extract" : "Видобути", + "Extract archive from the web interface" : "Видобути архів у вебінтерфейсів", + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "Видобування архівів.\n\n* **Підтримуються:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Вимоги:**\n * Розширення RAR для PHP (pecl -v install rar)\n\n * **АБО**\n * unrar (sudo apt-get install unrar)\n\n * **ТА**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Увага:** Зашифровані файли поки не підтримуються", + "Files will be extracted to this folder:" : "Файли будуть розпаковані в цю папку:", + "File Name" : "Ім'я файлу", + "Directory already exists" : "Каталог уже існує" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" +} diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index 44fde5f..0926392 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -10,6 +10,6 @@ OC.L10N.register( "Oops something went wrong. Check that you have p7zip installed" : "哎呀,出问题了。请检查您是否安装了 p7zip。", "Extract" : "解压", "Extract archive from the web interface" : "从网页界面解压压缩包", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "解压缩。\n\n* **支持的格式:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **需求:** \n * Rar PHP 扩展 (pecl -v install rar)\n\n * **或** \n * unrar (sudo apt-get install unrar)\n\n * **和**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意:** 已加密文件暂不支持" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "解压缩。\n\n* **支持的格式:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **需求:**\n * Rar PHP 扩展 (pecl -v install rar)\n\n * **或**\n * unrar (sudo apt-get install unrar)\n\n * **和**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意:** 已加密文件暂不支持" }, "nplurals=1; plural=0;"); diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index a14bf68..7ac4c0f 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -8,6 +8,6 @@ "Oops something went wrong. Check that you have p7zip installed" : "哎呀,出问题了。请检查您是否安装了 p7zip。", "Extract" : "解压", "Extract archive from the web interface" : "从网页界面解压压缩包", - "Extract archives.\n\n* **Supported :** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :** \n * Rar PHP extension (pecl -v install rar)\n\n * **OR** \n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "解压缩。\n\n* **支持的格式:** \n\n * Zip \n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **需求:** \n * Rar PHP 扩展 (pecl -v install rar)\n\n * **或** \n * unrar (sudo apt-get install unrar)\n\n * **和**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意:** 已加密文件暂不支持" + "Extract archives.\n\n* **Supported :**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **Requirements :**\n * Rar PHP extension (pecl -v install rar)\n\n * **OR**\n * unrar (sudo apt-get install unrar)\n\n * **AND**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **Note :** Encrypted files are not supported yet" : "解压缩。\n\n* **支持的格式:**\n\n * Zip\n * Rar\n * Tar\n * Gzip\n * 7z\n * Deb\n * Bzip2\n\n* **需求:**\n * Rar PHP 扩展 (pecl -v install rar)\n\n * **或**\n * unrar (sudo apt-get install unrar)\n\n * **和**\n * p7zip (sudo apt-get install p7zip p7zip-full)\n\n* **注意:** 已加密文件暂不支持" },"pluralForm" :"nplurals=1; plural=0;" -} \ No newline at end of file +} diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index 382d22c..0c7f24c 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -2,314 +2,405 @@ namespace OCA\Extract\Controller; +use FilesystemIterator; +use OC\Files\Filesystem; +use OCA\Extract\Service\ExtractionService; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\DataResponse; +use OCP\Encryption\IManager; +use OCP\Files\Folder; use OCP\Files\IRootFolder; use OCP\Files\Storage\IStorage; +use OCP\IL10N; use OCP\IRequest; -use OCP\AppFramework\Controller; use Psr\Log\LoggerInterface; -use ZipArchive; use Rar; -use FilesystemIterator; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; -use OCP\IL10N; -use OC\Files\Filesystem; -use OCP\Encryption\IManager; +use ZipArchive; + +// use PharData; not used ATM + +// Only in order to access Filesystem::isFileBlacklisted(). abstract class StatusCode { - const ERROR = 0; - const SUCCESS = 1; + const ERROR = 0; + const SUCCESS = 1; } class ExtractionController extends Controller { - /** @var IL10N */ - private $l; - - /** @var IManager */ - protected IManager $encryptionManager; - - private $userId; - - /** @var LoggerInterface */ - private $logger; - - /** @var IRootFolder */ - private IRootFolder $rootFolder; - - /** @var string */ - private string $transactionId; - - public function __construct( - $AppName, - IRequest $request, - IL10N $l, - IManager $encryptionManager, - $UserId, - LoggerInterface $logger, - IRootFolder $rootFolder - ) { - parent::__construct($AppName, $request); - $this->l = $l; - $this->encryptionManager = $encryptionManager; - $this->userId = $UserId; - $this->logger = $logger; - $this->rootFolder = $rootFolder; - - $this->transactionId = uniqid('nextcloud_extract-'); - - \OC_Util::tearDownFS(); - \OC_Util::setupFS($this->userId); - } - - /** - * CAUTION: the @Stuff turns off security checks; for this page no admin is - * required and no CSRF check. If you don't know what CSRF is, read - * it up in the docs or you might create a security hole. This is - * basically the only required method to add this exemption, don't - * add it to any other method if you don't exactly know what it does - */ - /** - * @param $sourcePath - * @param $targetDirName - * @param $type - * @return array - * @throws \OCP\Files\NotFoundException - * - * @NoCSRFRequired - * @NoAdminRequired - */ - public function extract($sourcePath, $targetDirName, $type) { - if ($this->encryptionManager->isEnabled()) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Encryption is not supported yet')); - } - - // Absolute file path to the local file, downloads tmp file if primary storage is external (S3) - $absoluteFilePath = Filesystem::getView()->getLocalFile($sourcePath); - $this->logger->error($absoluteFilePath); - if ($absoluteFilePath === null) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Archive file not found')); - } - - // Path to the file in Nextclouds internal filesystem - $internalDir = dirname($sourcePath); - - $isExternal = $this->isExternalStorage($internalDir); - - // Tar gz files downloaded from external storage look like '/tmp/oc_tmp_LNmlJI-.gz' in $absoluteFilePath, so $sourcePath has to be used - $isTarGz = self::isTarGz($sourcePath); - - // Make the target directory name - $targetDirName = $this->sanitizeTargetPath($targetDirName); - $fileNameWithoutExtension = self::getFileNameWithoutExtension($absoluteFilePath); - - if (empty($targetDirName)) { - $targetDirName = $fileNameWithoutExtension; - } - - // Path to the target folder in Nextclouds internal filesystem - $internalTargetPath = "$internalDir/$targetDirName"; - - // Error if the target folder already exists - $folderExists = Filesystem::is_dir($internalTargetPath); - if ($folderExists) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Directory already exists')); - } - - // Path to the target folder in local filesystem - $extractTo = dirname($absoluteFilePath) . '/' . $targetDirName; - if ($isExternal) { - $transactionDir = '/tmp/' . $this->transactionId; - - // Remove leading '/' from external storage path - $internalDir = substr($internalDir, 0, 1) === '/' ? substr($internalDir, 1) : $internalDir; - $targetDir = strlen($internalDir) > 0 ? "$internalDir/$targetDirName" : $targetDirName; - - $extractTo = "$transactionDir/$targetDir"; - } - - switch ($type) { - case 'zip': - $response = $this->extractZip($absoluteFilePath, $extractTo); - break; - case 'rar': - $response = $this->extractRar($absoluteFilePath, $extractTo); - break; - default: - $response = $this->extractOther($absoluteFilePath, $extractTo); - - // Extract .tar from .gz - if ($isTarGz && $response['code'] == StatusCode::SUCCESS) { - // Extract .tar - $tarName = pathinfo($absoluteFilePath)['filename']; - - $tarFilePath = $extractTo . '/' . $tarName; - $response = $this->extractOther($tarFilePath, $extractTo); - - // Remove .tar file - unlink($tarFilePath); - } - break; - } - - // Register the new files to the NC filesystem - if ($isExternal) { - $this->moveFromTmp(); - } else { - Filesystem::mkdir($internalTargetPath); - } - - $this->logger->info("Successfully extracted '$sourcePath' to '$internalTargetPath' ($this->transactionId)"); - return $response; - } - - /** - * Extracts a zip archive - * - * @param string $filePath absolute path to the source archive - * @param string $extractTo absolute path to the extraction directory - * @return array json response - */ - public function extractZip(string $filePath, string $extractTo): array { - if (!extension_loaded('zip')) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Zip extension is not available')); - } - - $zip = new ZipArchive(); - - if (!$zip->open($filePath) === true) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Cannot open Zip file')); - } - - $zip->extractTo($extractTo); - $zip->close(); - return array('code' => StatusCode::SUCCESS); - } - - /** - * Extracts a rar archive - * - * @param string $filePath absolute path to the source archive - * @param string $extractTo absolute path to the extraction directory - * @return array json response - */ - public function extractRar(string $filePath, string $extractTo): array { - if (!extension_loaded('rar')) { - exec('unrar x ' . escapeshellarg($filePath) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); - - if (sizeof($output) <= 4) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have rar extension or unrar installed')); - } - } else { - $rar_file = rar_open($filePath); - $list = rar_list($rar_file); - foreach ($list as $archive_file) { - $entry = rar_entry_get($rar_file, $archive_file->getName()); - $entry->extract($extractTo); - } - rar_close($rar_file); - } - - return array('code' => StatusCode::SUCCESS); - } - - /** - * Extracts a other archive (tar, tar.gz) - * - * @param string $filePath absolute path to the source archive - * @param string $extractTo absolute path to the extraction directory - * @return array json response - */ - public function extractOther(string $filePath, string $extractTo): array - { - exec('7za -y x ' . escapeshellarg($filePath) . ' -o' . escapeshellarg($extractTo), $output, $return); - - if (sizeof($output) <= 5) { - return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Oops something went wrong. Check that you have p7zip installed')); - } - - return array('code' => StatusCode::SUCCESS); - } - - /** - * Sanitizes a raw target path - * - * @param string $dir raw path - * @return string sanitized path - */ - private function sanitizeTargetPath(string $dir): string - { - return trim(str_replace('../', '', $dir)); - } - - /** - * Check if the given path is part of an external storage provider - * - * @param string $internalPath any path in the target storage - * @return bool - * @throws \OCP\Files\NotFoundException - */ - public function isExternalStorage(string $internalPath): bool - { - return !$this->getStorage($internalPath)->isLocal(); - } - - /** - * Get the storage interface at a given path - * - * @param string $internalPath any path in the target storage - * @return IStorage - * @throws \OCP\Files\NotFoundException - */ - public function getStorage(string $internalPath): IStorage - { - $mountPointDir = Filesystem::getView()->getMountPoint($internalPath); - return $this->rootFolder->get($mountPointDir)->getStorage(); - } - - /** - * Moves the locally generated files from the /tmp/ folder from this transaction to the nextcloud storage. - * This is the case if the file for this transaction is from an external storage (S3) - */ - public function moveFromTmp(): void - { - $transactionDir = '/tmp/' . $this->transactionId . '/'; - - $it = new RecursiveDirectoryIterator($transactionDir, FilesystemIterator::SKIP_DOTS); - $it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); - - foreach ($it as $fileInfo) { - if ($fileInfo->isFile()) { - $tmpFilePath = $fileInfo->getPathname(); - $storageFilePath = '/' . substr($tmpFilePath, strlen($transactionDir)); - - // move from tmp to nextcloud storage - Filesystem::fromTmpFile($tmpFilePath, $storageFilePath); - } elseif ($fileInfo->isDir()) { - rmdir($fileInfo->getPathname()); - } - } - rmdir($transactionDir); - } - - /** - * Returns the name of the file at the given path without its extension - * @param string $path path to the file - * @return string file name without extension - */ - public static function getFileNameWithoutExtension(string $path): string - { - $fileName = pathinfo($path)['filename']; - return self::isTarGz($path) ? pathinfo($fileName)['filename'] : $fileName; - } - - /** - * Checks if the file at the given path has the ending .tar.* - * @param string $path path to the file - * @return bool is tar.gz - */ - public static function isTarGz(string $path): bool - { - $fileName = pathinfo($path)['filename']; - return array_key_exists('extension', pathinfo($fileName)) && pathinfo($fileName)['extension'] == 'tar'; - } + + /** @var IL10N */ + private $l; + + /** @var LoggerInterface */ + private $logger; + + /** @var IRootFolder */ + private $rootFolder; + + /** @var Folder */ + private $userFolder; + + /** @var IManager */ + protected IManager $encryptionManager; + + /** @var string */ + private $userId; + + /** @var ExtractionService */ + private $extractionService; + + /** @var string */ + private string $transactionId; + + public function __construct( + string $AppName, + IRequest $request, + ExtractionService $extractionService, + IRootFolder $rootFolder, + IL10N $l, + LoggerInterface $logger, + IManager $encryptionManager, + $UserId + ) { + parent::__construct($AppName, $request); + $this->l = $l; + $this->logger = $logger; + $this->encryptionManager = $encryptionManager; + $this->userId = $UserId; + $this->extractionService = $extractionService; + $this->rootFolder = $rootFolder; + $this->userFolder = $this->rootFolder->getUserFolder($this->userId); + + $this->transactionId = uniqid('nextcloud_extract-'); + + \OC_Util::tearDownFS(); + \OC_Util::setupFS($this->userId); + } + + /** + * Get the absolute path to the file. + * + * @param $sourcePath + * @return string | array with the absolute path to the file or an array error message + */ + private function getAbsoluteFilePath($sourcePath): array|string { + $absoluteFilePath = Filesystem::getView()->getLocalFile($sourcePath); + if ($absoluteFilePath === null) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Archive file not found')); + } + return $absoluteFilePath; + } + + /** + * Register the new files to the NC filesystem. + * + * @param string $extractTo The local file-system path of the directory + * with the extracted data, i.e. this is the OS path. + */ + private function postExtract(string $internalTargetPath, string $extractTo, bool $isExternal) { + $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($extractTo)); + foreach ($iterator as $file) { + /** @var \SplFileInfo $file */ + if (Filesystem::isFileBlacklisted($file->getBasename())) { + $this->logger->warning(__METHOD__ . ': removing blacklisted file: ' . $file->getPathname()); + // remove it + unlink($file->getPathname()); + } + } + + if ($isExternal) { + $this->moveFromTmp(); + } else { + Filesystem::mkdir($internalTargetPath); + } + } + + /** + * Moves the locally generated files from the /tmp/ folder from this transaction to the nextcloud storage. + * This is the case if the file for this transaction is from an external storage (S3) + */ + private function moveFromTmp(): void { + $transactionDir = '/tmp/' . $this->transactionId . '/'; + + $it = new RecursiveDirectoryIterator($transactionDir, FilesystemIterator::SKIP_DOTS); + $it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + + foreach ($it as $fileInfo) { + if ($fileInfo->isFile()) { + $tmpFilePath = $fileInfo->getPathname(); + $storageFilePath = '/' . substr($tmpFilePath, strlen($transactionDir)); + + // move from tmp to nextcloud storage + Filesystem::fromTmpFile($tmpFilePath, $storageFilePath); + } elseif ($fileInfo->isDir()) { + rmdir($fileInfo->getPathname()); + } + } + rmdir($transactionDir); + } + + /** + * The only AJAX callback. This is a hook for ordinary cloud-users, os no admin required. + * + * CAUTION: the @Stuff turns off security checks; for this page no admin is + * required and no CSRF check. If you don't know what CSRF is, read + * it up in the docs or you might create a security hole. This is + * basically the only required method to add this exemption, don't + * add it to any other method if you don't exactly know what it does + * + * + * @param $sourcePath + * @param $targetDirName + * @param $type + * @return DataResponse + * @throws \OCP\Files\NotFoundException + * + * @NoAdminRequired + * @NoCSRFRequired + */ + public function extract($sourcePath, $targetDirName, $type) { + if ($this->encryptionManager->isEnabled()) { + $response = array(); + $response = array_merge($response, + array("code" => StatusCode::ERROR, "desc" => $this->l->t("Encryption is not supported yet")) + ); + return new DataResponse($response); + } + $absoluteFilePath = $this->getAbsoluteFilePath($sourcePath); + + // Path to the file in Nextclouds internal filesystem + $internalDir = dirname($sourcePath); + + $isExternal = $this->isExternalStorage($internalDir); + + // Tar gz files downloaded from external storage look like '/tmp/oc_tmp_LNmlJI-.gz' + // in $absoluteFilePath, so $sourcePath has to be used + $isTarGz = self::isTarGz($sourcePath); + + // Make the target directory name + $targetDirName = $this->sanitizeTargetPath($targetDirName); + $fileNameWithoutExtension = self::getFileNameWithoutExtension($absoluteFilePath); + + if (empty($targetDirName)) { + $targetDirName = $fileNameWithoutExtension; + } + + // Path to the target folder in Nextclouds internal filesystem + $internalTargetPath = $this->getInternalTargetPath($internalDir, $targetDirName); + if (!$internalTargetPath) { + return new DataResponse(array( + 'code' => StatusCode::ERROR, + 'desc' => $this->l->t('Directory already exists') + )); + } + + $extractTo = $this->getExtractionPath($absoluteFilePath, $internalDir, $targetDirName, $isExternal); + + switch ($type) { + case 'zip': + $response = $this->extractZip($absoluteFilePath, $extractTo); + break; + case 'rar': + $response = $this->extractRar($absoluteFilePath, $extractTo); + break; + default: + $response = $this->extractOther($absoluteFilePath, $extractTo); + + // Extract .tar from .gz + if ($isTarGz && $response['code'] == StatusCode::SUCCESS) { + // Extract .tar + $tarName = pathinfo($absoluteFilePath)['filename']; + + $tarFilePath = $extractTo . '/' . $tarName; + $response = $this->extractOther($tarFilePath, $extractTo); + + // Remove .tar file + unlink($tarFilePath); + } + break; + } + + $this->postExtract($internalTargetPath, $extractTo, $isExternal); + + $this->logger->info("Successfully extracted '$sourcePath' to '$internalTargetPath' ($this->transactionId)"); + + return new DataResponse($response); + } + + /** + * Check if the given path is part of an external storage provider + * + * @param string $internalPath any path in the target storage + * @return bool + * + * @throws \OCP\Files\NotFoundException + */ + private function isExternalStorage(string $internalPath): bool { + return !$this->getStorage($internalPath)->isLocal(); + } + + /** + * Get the storage interface at a given path + * + * @param string $internalPath any path in the target storage + * @return IStorage + * @throws \OCP\Files\NotFoundException + */ + private function getStorage(string $internalPath): IStorage { + $mountPointDir = Filesystem::getView()->getMountPoint($internalPath); + return $this->rootFolder->get($mountPointDir)->getStorage(); + } + + /** + * Sanitizes a raw target path + * + * @param string $dir raw path + * + * @return string sanitized path + */ + private function sanitizeTargetPath(string $dir): string { + return trim(preg_replace('#^(?:\.{0,2}\/|\/)+#', '', $dir)); + } + + /** + * Returns the path to the target folder in Nextcloud's internal filesystem + * + * @param string $internalDir + * @param string $targetDirName + * + * @return string|null internal target path + */ + private function getInternalTargetPath(string $internalDir, string $targetDirName): string|null { + // Path to the target folder in Nextcloud's internal filesystem + $internalTargetPath = "$internalDir/$targetDirName"; + + // Error if the target folder already exists + $folderExists = Filesystem::is_dir($internalTargetPath); + if ($folderExists) { + return null; + } + return $internalTargetPath; + } + + private function getExtractionPath(string $absoluteFilePath, + string $internalDir, + string $targetDirName, + bool $isExternal + ): string { + $extractTo = dirname($absoluteFilePath) . '/' . $targetDirName; + if ($isExternal) { + $transactionDir = '/tmp/' . $this->transactionId; + + // Remove leading '/' from external storage path + $internalDir = substr($internalDir, 0, 1) === '/' ? substr($internalDir, 1) : $internalDir; + $targetDir = strlen($internalDir) > 0 ? "$internalDir/$targetDirName" : $targetDirName; + + $extractTo = "$transactionDir/$targetDir"; + } + return $extractTo; + } + + /** + * Extracts a zip archive + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * + * @return array json response + */ + private function extractZip(string $filePath, string $extractTo): array { + if (!extension_loaded('zip')) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Zip extension is not available')); + } + + $zip = new ZipArchive(); + + if (!$zip->open($filePath) === true) { + return array('code' => StatusCode::ERROR, 'desc' => $this->l->t('Cannot open Zip file')); + } + + $zip->extractTo($extractTo); + $zip->close(); + return array('code' => StatusCode::SUCCESS); + } + + /** + * Extracts a rar archive + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * + * @return array json response + */ + private function extractRar(string $filePath, string $extractTo): array { + if (!extension_loaded('rar')) { + exec('unrar x ' . escapeshellarg($filePath) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', + $output, + $return + ); + + if (sizeof($output) <= 4) { + return array( + 'code' => StatusCode::ERROR, + 'desc' => $this->l->t('Oops something went wrong. Check that you have rar extension or unrar installed' + ) + ); + } + } else { + $rar_file = rar_open($filePath); + $list = rar_list($rar_file); + foreach ($list as $archive_file) { + $entry = rar_entry_get($rar_file, $archive_file->getName()); + $entry->extract($extractTo); + } + rar_close($rar_file); + } + + return array('code' => StatusCode::SUCCESS); + } + + /** + * Extracts a other archive (tar, tar.gz) + * + * @param string $filePath absolute path to the source archive + * @param string $extractTo absolute path to the extraction directory + * + * @return array json response + */ + private function extractOther(string $filePath, string $extractTo): array { + exec('7za -y x ' . escapeshellarg($filePath) . ' -o' . escapeshellarg($extractTo), $output, $return); + + if (sizeof($output) <= 5) { + return array( + 'code' => StatusCode::ERROR, + 'desc' => $this->l->t('Oops something went wrong. Check that you have p7zip installed') + ); + } + + return array('code' => StatusCode::SUCCESS); + } + + /** + * Checks if the file at the given path has the ending .tar.* + * + * @param string $path path to the file + * @return bool is tar.gz + */ + private static function isTarGz(string $path): bool { + $fileName = pathinfo($path)['filename']; + return array_key_exists('extension', pathinfo($fileName)) && pathinfo($fileName)['extension'] == 'tar'; + } + + /** + * Returns the name of the file at the given path without its extension + * + * @param string $path path to the file + * @return string file name without extension + */ + private static function getFileNameWithoutExtension(string $path): string { + $fileName = pathinfo($path)['filename']; + return self::isTarGz($path) ? pathinfo($fileName)['filename'] : $fileName; + } }