From ce4c6d1925536b721a10d35f261c850af49c3b7b Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Thu, 20 Oct 2022 21:24:45 +0200 Subject: [PATCH] Nextcloud added import RainLoop data helper for https://github.com/pierre-alain-b/rainloop-nextcloud/issues/288 --- .../snappymail/lib/Util/SnappyMailHelper.php | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php index f8cfda676..dcaab1df2 100644 --- a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php +++ b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php @@ -119,4 +119,43 @@ class SnappyMailHelper static::loadApp(); return \SnappyMail\Crypt::DecryptUrlSafe($sPassword, $sSalt); } + + public static function importRainloop() : bool + { + $dir = \rtrim(\trim(\OC::$server->getSystemConfig()->getValue('datadirectory', '')), '\\/'); + + $dir_snappy = $dir . '/appdata_snappymail/'; + \is_dir($dir_snappy) || \mkdir($dir); + + $dir_rainloop = $dir . '/rainloop-storage'; + if (\is_dir($dir_rainloop)) { + $plugins = []; + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($dir_rainloop, \RecursiveDirectoryIterator::SKIP_DOTS), + \RecursiveIteratorIterator::SELF_FIRST + ); + foreach ($iterator as $item) { + $target = $dir_snappy . DIRECTORY_SEPARATOR . $iterator->getSubPathname(); + if (\preg_match('@/plugins/([^/])@', $target, $match)) { + $plugins[$match[1]] = $match[1]; + } else if (!\strpos($target, '/cache/')) { + if ($item->isDir()) { + \mkdir($target); + } else { + \copy($item, $target); + } + } + } + + static::loadApp(); + foreach (\SnappyMail\Repository::getPackagesList()['List'] as $plugin) { + if (\in_array($plugin['id'], $plugins)) { + \SnappyMail\Repository::installPackage('plugin', $plugin['id']); + } + } + + return true; + } + return false; + } }