From 248aab17c2daded34022265e53807ed7da535a14 Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Mon, 23 Dec 2013 20:11:42 +0400 Subject: [PATCH] Change dav handle configuration (move to /index.php/dav/) --- rainloop/v/0.0.0/app/handle.php | 1 - .../0.0.0/app/libraries/RainLoop/Actions.php | 2 +- .../libraries/RainLoop/Config/Application.php | 4 +-- .../0.0.0/app/libraries/RainLoop/Service.php | 28 +++++++++++-------- .../app/libraries/RainLoop/ServiceActions.php | 24 ++++++++++++---- rainloop/v/0.0.0/static/js/admin.js | 2 +- rainloop/v/0.0.0/static/js/app.js | 2 +- 7 files changed, 40 insertions(+), 23 deletions(-) diff --git a/rainloop/v/0.0.0/app/handle.php b/rainloop/v/0.0.0/app/handle.php index a261b8d2f..787863d9e 100644 --- a/rainloop/v/0.0.0/app/handle.php +++ b/rainloop/v/0.0.0/app/handle.php @@ -14,7 +14,6 @@ if (!\defined('RAINLOOP_APP_ROOT_PATH')) } else if (0 === \strpos($sClassName, 'Sabre') && false !== \strpos($sClassName, '\\')) { - include_once RAINLOOP_APP_LIBRARIES_PATH.'RainLoop/SabreDAV/MbStringFix.php'; return include RAINLOOP_APP_LIBRARIES_PATH.'Sabre/'.\str_replace('\\', '/', \substr($sClassName, 6)).'.php'; } 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 511b17519..a3cf0a228 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -997,7 +997,7 @@ class Actions $aResult['ContactsEnable'] = (bool) $oConfig->Get('contacts', 'enable', false); $aResult['ContactsSharing'] = (bool) $oConfig->Get('contacts', 'allow_sharing', false); - $aResult['ContactsSync'] = (bool) $oConfig->Get('labs', 'sync_allow_dav', false); + $aResult['ContactsSync'] = (bool) $oConfig->Get('contacts', 'allow_sync', false); $aResult['ContactsPdoType'] = $this->ValidateContactPdoType(\trim($this->Config()->Get('contacts', 'type', 'sqlite'))); $aResult['ContactsPdoDsn'] = (string) $oConfig->Get('contacts', 'pdo_dsn', ''); $aResult['ContactsPdoType'] = (string) $oConfig->Get('contacts', 'type', ''); diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php index 3210f175f..753471af2 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -84,6 +84,7 @@ class Application extends \RainLoop\Config\AbstractConfig 'contacts' => array( 'enable' => array(false, 'Enable contacts'), 'allow_sharing' => array(true), + 'allow_sync' => array(false), 'suggestions_limit' => array(30), 'type' => array('sqlite', ''), 'pdo_dsn' => array('mysql:host=127.0.0.1;port=3306;dbname=rainloop', ''), @@ -200,10 +201,7 @@ Enables caching in the system'), 'ignore_folders_subscription' => array(false, 'Experimental settings. Handle with care. '), - 'sync_allow_dav' => array(false), - 'sync_dav_host' => array(''), 'sync_dav_digest_auth' => array(false), - 'allow_message_append' => array(false), 'date_from_headers' => array(false), 'cache_system_data' => array(true), diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php index adcf5a27c..242bf5ba6 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php @@ -100,23 +100,29 @@ class Service $this->oActions->KeenIO('Install'); } - if ($this->oActions->Config()->Get('labs', 'sync_allow_dav', false)) + $bCached = false; + $sResult = ''; + $sPathInfo = \trim(\trim($this->oHttp->GetServer('PATH_INFO', '')), ' /'); + if (!empty($sPathInfo)) { - $sDavDomain = \trim($this->oActions->Config()->Get('labs', 'sync_dav_host', '')); - if (!empty($sDavDomain) && $sDavDomain === $this->oHttp->GetHost()) + if ('dav' !== \substr($sPathInfo, 0, 3)) { - $this->oServiceActions->HostDav(); - return $this; + $sPathInfo = ''; } } - $bCached = false; - $sResult = ''; - $sQuery = \trim(\trim($this->oHttp->GetServer('QUERY_STRING', '')), ' /'); - $iPos = \strpos($sQuery, '&'); - if (0 < $iPos) + if (empty($sPathInfo)) { - $sQuery = \substr($sQuery, 0, $iPos); + $sQuery = \trim(\trim($this->oHttp->GetServer('QUERY_STRING', '')), ' /'); + $iPos = \strpos($sQuery, '&'); + if (0 < $iPos) + { + $sQuery = \substr($sQuery, 0, $iPos); + } + } + else + { + $sQuery = $sPathInfo; } $this->oActions->Plugins()->RunHook('filter.http-query', array(&$sQuery)); diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php index cdc1950d9..91295bb73 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php @@ -715,6 +715,8 @@ class ServiceActions { try { + include_once RAINLOOP_APP_LIBRARIES_PATH.'RainLoop/SabreDAV/MbStringFix.php'; + \set_error_handler(function ($errno, $errstr, $errfile, $errline ) { throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); }); @@ -743,18 +745,17 @@ class ServiceActions $oPrincipalCollection, $oAddressBookRoot )); - $oServer->setBaseUri('/'); + $aPath = \trim($this->oHttp->GetPath(), '/\\ '); + $oServer->setBaseUri((0 < \strlen($aPath) ? '/'.$aPath : '').'/index.php/dav/'); +// $oServer->setBaseUri('/'); // Plugins $oServer->addPlugin(new \Sabre\DAV\Auth\Plugin($oAuthBackend, 'RainLoop')); $oServer->addPlugin(new \Sabre\DAV\Browser\Plugin()); $oServer->addPlugin(new \Sabre\CardDAV\Plugin()); $oServer->addPlugin(new \Sabre\DAVACL\Plugin()); - $oServer->addPlugin(new \RainLoop\SabreDAV\Logger($this->Logger())); - - - + $oServer->exec(); } catch (\Exception $oException) @@ -763,6 +764,19 @@ class ServiceActions } } + /** + * @return string + */ + public function ServiceDav() + { + if ($this->oActions->Config()->Get('contacts', 'allow_sync', false)) + { + $this->HostDav(); + } + + return ''; + } + /** * @return string */ diff --git a/rainloop/v/0.0.0/static/js/admin.js b/rainloop/v/0.0.0/static/js/admin.js index 313800b91..5d5ccb1c9 100644 --- a/rainloop/v/0.0.0/static/js/admin.js +++ b/rainloop/v/0.0.0/static/js/admin.js @@ -2771,7 +2771,7 @@ ko.bindingHandlers.command = { jqElement.toggleClass('command-can-not-be-execute', !bResult); } - jqElement.toggleClass('command-disabled disable disabled', !bResult); + jqElement.toggleClass('command-disabled disable disabled', !bResult).toggleClass('no-disabled', !!bResult); if (jqElement.is('input') || jqElement.is('button')) { diff --git a/rainloop/v/0.0.0/static/js/app.js b/rainloop/v/0.0.0/static/js/app.js index a963604eb..27b66cc68 100644 --- a/rainloop/v/0.0.0/static/js/app.js +++ b/rainloop/v/0.0.0/static/js/app.js @@ -2771,7 +2771,7 @@ ko.bindingHandlers.command = { jqElement.toggleClass('command-can-not-be-execute', !bResult); } - jqElement.toggleClass('command-disabled disable disabled', !bResult); + jqElement.toggleClass('command-disabled disable disabled', !bResult).toggleClass('no-disabled', !!bResult); if (jqElement.is('input') || jqElement.is('button')) {