From fa3d4727f9ef9241a4a63deb5444a8975e3869db Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 31 Jan 2023 09:31:01 +0100 Subject: [PATCH] Also support SnappyMail\TAR on core update --- .../v/0.0.0/app/libraries/snappymail/repository.php | 12 ++++++------ .../v/0.0.0/app/libraries/snappymail/upgrade.php | 11 +++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/repository.php b/snappymail/v/0.0.0/app/libraries/snappymail/repository.php index 3ac1ff4bd..4c2be1c52 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/repository.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/repository.php @@ -263,18 +263,18 @@ abstract class Repository } if ($sTmp) { - if (\class_exists('PharData')) { - $oArchive = new \PharData($sTmp, 0, $sRealFile); - } else { -// throw new \Exception('PHP Phar is disabled, you must enable it'); - $oArchive = new \SnappyMail\TAR($sTmp); - } if (!static::deletePackageDir($sId)) { throw new \Exception('Cannot remove previous plugin folder: '.$sId); } if ('.phar' === \substr($sRealFile, -5)) { $bResult = \copy($sTmp, APP_PLUGINS_PATH . \basename($sRealFile)); } else { + if (\class_exists('PharData')) { + $oArchive = new \PharData($sTmp, 0, $sRealFile); + } else { +// throw new \Exception('PHP Phar is disabled, you must enable it'); + $oArchive = new \SnappyMail\TAR($sTmp); + } $bResult = $oArchive->extractTo(\rtrim(APP_PLUGINS_PATH, '\\/')); } if (!$bResult) { diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php b/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php index d410e7e09..eeef6c521 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php @@ -197,16 +197,19 @@ abstract class Upgrade throw new \Exception('Failed to download latest SnappyMail'); } $target = \rtrim(APP_INDEX_ROOT_PATH, '\\/'); - $oArchive = new \PharData($sTmp, 0, null, \Phar::GZ); + if (\class_exists('PharData')) { + $oArchive = new \PharData($sTmp, 0, null, \Phar::GZ); + } else { + $oArchive = new \SnappyMail\TAR($sTmp); + } \error_log('Extract to ' . $target); // $bResult = $oArchive->extractTo($target, null, true); $bResult = $oArchive->extractTo($target, 'snappymail/') && $oArchive->extractTo($target, 'index.php', true); - if ($bResult) { - \error_log('Update success'); - } else { + if (!$bResult) { throw new \Exception('Extract core files failed'); } + \error_log('Update success'); // opcache_reset is a terrible solution // \is_callable('opcache_reset') && \opcache_reset(); \is_callable('opcache_invalidate') && \opcache_invalidate($target.'/index.php', true);