diff --git a/build/owncloud/rainloop-app/appinfo/info.xml b/build/owncloud/rainloop-app/appinfo/info.xml
index 26b7dc553..84b506124 100644
--- a/build/owncloud/rainloop-app/appinfo/info.xml
+++ b/build/owncloud/rainloop-app/appinfo/info.xml
@@ -4,7 +4,7 @@
RainLoop
Simple, modern and fast web-based email client.
0.0
- AGPL 3.0
+
RainLoop Team
6.0
diff --git a/dev/Common/Enums.js b/dev/Common/Enums.js
index e08450a44..71fd923f6 100644
--- a/dev/Common/Enums.js
+++ b/dev/Common/Enums.js
@@ -114,6 +114,21 @@
'User': 99
};
+ /**
+ * @enum {number}
+ */
+ Enums.ServerFolderType = {
+ 'USER': 0,
+ 'INBOX': 1,
+ 'SENT': 2,
+ 'DRAFTS': 3,
+ 'JUNK': 4,
+ 'TRASH': 5,
+ 'IMPORTANT': 10,
+ 'FLAGGED': 11,
+ 'ALL': 12
+ };
+
/**
* @enum {string}
*/
diff --git a/dev/Promises/User/Populator.js b/dev/Promises/User/Populator.js
index 623396bb0..324271935 100644
--- a/dev/Promises/User/Populator.js
+++ b/dev/Promises/User/Populator.js
@@ -162,12 +162,11 @@
Settings.settingsGet('ArchiveFolder') +
Settings.settingsGet('NullFolder'))
{
- // TODO Magic Numbers
- Settings.settingsSet('SentFolder', oData['SystemFolders'][2] || null);
- Settings.settingsSet('DraftFolder', oData['SystemFolders'][3] || null);
- Settings.settingsSet('SpamFolder', oData['SystemFolders'][4] || null);
- Settings.settingsSet('TrashFolder', oData['SystemFolders'][5] || null);
- Settings.settingsSet('ArchiveFolder', oData['SystemFolders'][12] || null);
+ Settings.settingsSet('SentFolder', oData['SystemFolders'][Enums.ServerFolderType.SENT] || null);
+ Settings.settingsSet('DraftFolder', oData['SystemFolders'][Enums.ServerFolderType.DRAFTS] || null);
+ Settings.settingsSet('SpamFolder', oData['SystemFolders'][Enums.ServerFolderType.JUNK] || null);
+ Settings.settingsSet('TrashFolder', oData['SystemFolders'][Enums.ServerFolderType.TRASH] || null);
+ Settings.settingsSet('ArchiveFolder', oData['SystemFolders'][Enums.ServerFolderType.ALL] || null);
bUpdate = true;
}
diff --git a/gulpfile.js b/gulpfile.js
index d981af14f..ed4d16f10 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -563,7 +563,10 @@ gulp.task('rainloop:owncloud:setup', ['rainloop:owncloud:copy',
;
fs.writeFileSync(dist + 'rainloop/appinfo/info.xml',
- fs.readFileSync(dist + 'rainloop/appinfo/info.xml', 'utf8').replace('0.0', '' + versionFull + ''));
+ fs.readFileSync(dist + 'rainloop/appinfo/info.xml', 'utf8')
+ .replace('0.0', '' + versionFull + '')
+ .replace('', '' + (cfg.community ? 'AGPLv3' : 'CC BY-NC-SA 3.0') + '')
+ );
fs.writeFileSync(dist + 'rainloop/appinfo/version', versionFull);
fs.writeFileSync(dist + 'rainloop/VERSION', versionFull);
@@ -571,7 +574,7 @@ gulp.task('rainloop:owncloud:setup', ['rainloop:owncloud:copy',
cfg.destPath = cfg.releasesPath + '/owncloud/' + versionFull + '/';
cfg.cleanPath = dist;
cfg.zipSrcPath = dist;
- cfg.zipFile = 'rainloop-owncloud-app-' + (cfg.community ? '' : 'premium-') + versionFull + '.zip';
+ cfg.zipFile = 'rainloop-owncloud-app-' + (cfg.community ? '' : 'cc-') + versionFull + '.zip';
cfg.md5File = cfg.zipFile;
});
diff --git a/package.json b/package.json
index 0cce4a40c..b1a604be9 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "RainLoop",
"title": "RainLoop Webmail",
"version": "1.9.0",
- "release": "324",
+ "release": "325",
"description": "Simple, modern & fast web-based email client",
"homepage": "http://rainloop.net",
"main": "gulpfile.js",
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
index 6e915c727..f1cfad108 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
@@ -5103,7 +5103,6 @@ class Actions
$oSettingsLocal = $this->SettingsProvider(true)->Load($oAccount);
$aSystemFolders = array();
-
$this->recFoldersTypes($oAccount, $oFolderCollection, $aSystemFolders);
$oFolderCollection->SystemFolders = $aSystemFolders;
@@ -9495,7 +9494,8 @@ class Actions
'FoldersHash' => isset($mResponse->FoldersHash) ? $mResponse->FoldersHash : '',
'IsThreadsSupported' => $mResponse->IsThreadsSupported,
'Optimized' => $mResponse->Optimized,
- 'SystemFolders' => isset($mResponse->SystemFolders) && \is_array($mResponse->SystemFolders) ? $mResponse->SystemFolders : array()
+ 'SystemFolders' => isset($mResponse->SystemFolders) && \is_array($mResponse->SystemFolders) ?
+ $mResponse->SystemFolders : array()
));
}
else if ($mResponse instanceof \MailSo\Base\Collection)
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php
index 21fd6e76d..db32a6b9e 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php
@@ -188,10 +188,10 @@ class PdoAddressBook
$this->oLogger->Write($sCmd.' '.$sUrl.(('PUT' === $sCmd || 'POST' === $sCmd) && null !== $mData ? ' ('.\strlen($mData).')' : ''),
\MailSo\Log\Enumerations\Type::INFO, 'DAV');
- if ('PUT' === $sCmd || 'POST' === $sCmd)
- {
- $this->oLogger->Write($mData, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
- }
+// if ('PUT' === $sCmd || 'POST' === $sCmd)
+// {
+// $this->oLogger->Write($mData, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
+// }
$oResponse = false;
try
@@ -265,7 +265,7 @@ class PdoAddressBook
$sCurrentUserPrincipal = '';
$sAddressbookHomeSet = '';
-
+
// [{DAV:}current-user-principal] => /cloud/remote.php/carddav/principals/admin/
// [{urn:ietf:params:xml:ns:carddav}addressbook-home-set] => /cloud/remote.php/carddav/addressbooks/admin/
@@ -297,14 +297,20 @@ class PdoAddressBook
if (!empty($sKey))
{
- $sFirstNextPath = $sKey;
-
- $oResourceType = isset($aItem['{DAV:}resourcetype']) ? $aItem['{DAV:}resourcetype'] : null;
- /* @var $oResourceType \SabreForRainLoop\DAV\Property\ResourceType */
- if ($oResourceType && $oResourceType->is('{DAV:}collection'))
+ if (empty($sFirstNextPath))
{
- $sNextPath = $sKey;
- continue;
+ $sFirstNextPath = $sKey;
+ }
+
+ if (empty($sNextPath))
+ {
+ $oResourceType = isset($aItem['{DAV:}resourcetype']) ? $aItem['{DAV:}resourcetype'] : null;
+ /* @var $oResourceType \SabreForRainLoop\DAV\Property\ResourceType */
+ if ($oResourceType && $oResourceType->is('{DAV:}collection'))
+ {
+ $sNextPath = $sKey;
+ continue;
+ }
}
}
}
@@ -562,6 +568,17 @@ class PdoAddressBook
return false;
}
+ $aMatch = array();
+ $sUserAddressBookNameName = '';
+
+ if (\preg_match('/\|(.+)$/', $sUrl, $aMatch) && !empty($aMatch[1]))
+ {
+ $sUserAddressBookNameName = \trim($aMatch[1]);
+ $sUserAddressBookNameName = \MailSo\Base\Utils::StrToLowerIfAscii($sUserAddressBookNameName);
+
+ $sUrl = \preg_replace('/\|(.+)$/', '', $sUrl);
+ }
+
$oClient = $this->getDavClientFromUrl($sUrl, $sUser, $sPassword, $sProxy);
if (!$oClient)
{
@@ -583,12 +600,30 @@ class PdoAddressBook
{
if (1 < \count($aPaths))
{
- foreach ($aPaths as $sKey => $sValue)
+ if ('' !== $sUserAddressBookNameName)
{
- if (\in_array(\strtolower($sValue), array('contacts', 'default', 'addressbook', 'address book')))
+ foreach ($aPaths as $sKey => $sValue)
{
- $sNewPath = $sKey;
- break;
+ $sValue = \MailSo\Base\Utils::StrToLowerIfAscii(\trim($sValue));
+ if ($sValue === $sUserAddressBookNameName)
+ {
+ $sNewPath = $sKey;
+ break;
+ }
+ }
+ }
+
+ if (empty($sNewPath))
+ {
+ foreach ($aPaths as $sKey => $sValue)
+ {
+ $sValue = \MailSo\Base\Utils::StrToLowerIfAscii($sValue);
+
+ if (\in_array($sValue, array('contacts', 'default', 'addressbook', 'address book')))
+ {
+ $sNewPath = $sKey;
+ break;
+ }
}
}
}