diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index bd57d80dab0f93d045411eca7b79c58a99c881bd..458102036be41f7701e26012af898c140b23c866 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -450,11 +450,11 @@ class ShareAPIController extends OCSController { } $share->setSharedWith($shareWith); } else if ($shareType === \OCP\Share::SHARE_TYPE_CIRCLE) { - if (!\OCP\App::isEnabled('circles')) { + if (!\OC::$server->getAppManager()->isEnabledForUser('circles') || !class_exists('\OCA\Circles\ShareByCircleProvider')) { throw new OCSNotFoundException($this->l->t('You cannot share to a Circle if the app is not enabled')); } - $circle = \OCA\Circles\Api\Circles::detailsCircle($shareWith); + $circle = \OCA\Circles\Api\v1\Circles::detailsCircle($shareWith); // Valid circle is required to share if ($circle === null) { diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index 57d51ebac6a01cc902219ee16f2c760880050abf..3e0c01b342e1aec4d750aa66dfafba527c0f4faf 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -472,7 +472,7 @@ class ShareesAPIController extends OCSController { $shareTypes[] = Share::SHARE_TYPE_EMAIL; } - if (\OCP\App::isEnabled('circles')) { + if (\OC::$server->getAppManager()->isEnabledForUser('circles') && class_exists('\OCA\Circles\ShareByCircleProvider')) { $shareTypes[] = Share::SHARE_TYPE_CIRCLE; } diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 7c39733ce2af9262a3f3f7a1e2a866f1c77793cf..798ea937038f434d31adf5421d82acaa62860aa6 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -193,7 +193,7 @@ class Manager implements IManager { throw new \InvalidArgumentException('SharedWith should not be empty'); } } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_CIRCLE) { - $circle = \OCA\Circles\Api\Circles::detailsCircle($share->getSharedWith()); + $circle = \OCA\Circles\Api\v1\Circles::detailsCircle($share->getSharedWith()); if ($circle === null) { throw new \InvalidArgumentException('SharedWith is not a valid circle'); } diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php index ddd8177250bc7bd101e39f38307c0eafe2cc4b53..aedad6a32a75b8ca302c1b81f5c15e5081192524 100644 --- a/lib/private/Share20/ProviderFactory.php +++ b/lib/private/Share20/ProviderFactory.php @@ -51,9 +51,10 @@ class ProviderFactory implements IProviderFactory { private $federatedProvider = null; /** @var ShareByMailProvider */ private $shareByMailProvider; - /** @var \OCA\Circles\ShareByCircleProvider; - * ShareByCircleProvider */ - private $shareByCircleProvider; + /** @var \OCA\Circles\ShareByCircleProvider */ + private $shareByCircleProvider = null; + /** @var bool */ + private $circlesAreNotAvailable = false; /** * IProviderFactory constructor. @@ -179,11 +180,16 @@ class ProviderFactory implements IProviderFactory { */ protected function getShareByCircleProvider() { - $appManager = $this->serverContainer->getAppManager(); - if (!$appManager->isEnabledForUser('circles')) { + if ($this->circlesAreNotAvailable) { return null; } + if (!$this->serverContainer->getAppManager()->isEnabledForUser('circles') || + !class_exists('\OCA\Circles\ShareByCircleProvider') + ) { + $this->circlesAreNotAvailable = true; + return null; + } if ($this->shareByCircleProvider === null) {