From 40e7ee79b41a130fef557d42102675c5f6ef8420 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 18 Mar 2018 11:56:59 -0600 Subject: [PATCH] Added more detailed error handling (#1922) --- system/src/Grav/Common/GPM/Installer.php | 51 +++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Common/GPM/Installer.php b/system/src/Grav/Common/GPM/Installer.php index 275c2fc36..a32e1e1b0 100644 --- a/system/src/Grav/Common/GPM/Installer.php +++ b/system/src/Grav/Common/GPM/Installer.php @@ -189,10 +189,59 @@ class Installer return $extracted_folder; } - self::$error = self::ZIP_EXTRACT_ERROR; + self::$error = self::getZipError($archive); return false; } + /** + * Output a more useful ZIP error + * + * @param $res + * @return string + */ + protected static function getZipError($res) + { + switch($res){ + case ZipArchive::ER_EXISTS: + $error = "File already exists."; + break; + + case ZipArchive::ER_INCONS: + $error = "Zip archive inconsistent."; + break; + + case ZipArchive::ER_MEMORY: + $error = "Malloc failure."; + break; + + case ZipArchive::ER_NOENT: + $error = "No such file."; + break; + + case ZipArchive::ER_NOZIP: + $error = "Not a zip archive."; + break; + + case ZipArchive::ER_OPEN: + $error = "Can't open file."; + break; + + case ZipArchive::ER_READ: + $error = "Read error."; + break; + + case ZipArchive::ER_SEEK: + $error = "Seek error."; + break; + + default: + $error = self::ZIP_EXTRACT_ERROR; + break; + } + + return $error; + } + /** * Instantiates and returns the package installer class