From 5b6c90aea942f7c24d65074e63db9838049128f0 Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Sat, 9 May 2015 16:09:08 +0400 Subject: [PATCH] pre release commit (1.9.0.325) --- build/owncloud/rainloop-app/appinfo/info.xml | 2 +- dev/Common/Enums.js | 15 +++++ dev/Promises/User/Populator.js | 11 ++- gulpfile.js | 7 +- package.json | 2 +- .../0.0.0/app/libraries/RainLoop/Actions.php | 4 +- .../Providers/AddressBook/PdoAddressBook.php | 67 ++++++++++++++----- 7 files changed, 80 insertions(+), 28 deletions(-) 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; + } } } }