diff --git a/core/ajax/share.php b/core/ajax/share.php index 75b749a5b0..feb64490b4 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -236,7 +236,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo break; case 'getShareWith': if (isset($_GET['search'])) { - $sharePolicy = OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'); + $shareWithinGroupOnly = OC\Share\Share::shareWithGroupMembersOnly(); $shareWith = array(); // if (OC_App::isEnabled('contacts')) { // // TODO Add function to contacts to only get the 'fullname' column to improve performance @@ -256,7 +256,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo // } // } $groups = OC_Group::getGroups($_GET['search']); - if ($sharePolicy == 'groups_only') { + if ($shareWithinGroupOnly) { $usergroups = OC_Group::getUserGroups(OC_User::getUser()); $groups = array_intersect($groups, $usergroups); } @@ -266,7 +266,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $offset = 0; while ($count < 15 && count($users) == $limit) { $limit = 15 - $count; - if ($sharePolicy == 'groups_only') { + if ($shareWithinGroupOnly) { $users = OC_Group::DisplayNamesInGroups($usergroups, $_GET['search'], $limit, $offset); } else { $users = OC_User::getDisplayNames($_GET['search'], $limit, $offset); diff --git a/lib/private/share/share.php b/lib/private/share/share.php index 189be2363e..2126a1d2dd 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -478,7 +478,7 @@ class Share extends \OC\Share\Constants { */ public static function shareItem($itemType, $itemSource, $shareType, $shareWith, $permissions, $itemSourceName = null, \DateTime $expirationDate = null) { $uidOwner = \OC_User::getUser(); - $sharingPolicy = \OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'); + $shareWithinGroupOnly = self::shareWithGroupMembersOnly(); $l = \OC_L10N::get('lib'); if (is_null($itemSourceName)) { @@ -533,7 +533,7 @@ class Share extends \OC\Share\Constants { \OC_Log::write('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OC_Log::ERROR); throw new \Exception($message_t); } - if ($sharingPolicy == 'groups_only') { + if ($shareWithinGroupOnly) { $inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith)); if (empty($inGroup)) { $message = 'Sharing %s failed, because the user ' @@ -563,7 +563,7 @@ class Share extends \OC\Share\Constants { \OC_Log::write('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OC_Log::ERROR); throw new \Exception($message_t); } - if ($sharingPolicy == 'groups_only' && !\OC_Group::inGroup($uidOwner, $shareWith)) { + if ($shareWithinGroupOnly && !\OC_Group::inGroup($uidOwner, $shareWith)) { $message = 'Sharing %s failed, because ' .'%s is not a member of the group %s'; $message_t = $l->t('Sharing %s failed, because %s is not a member of the group %s', array($itemSourceName, $uidOwner, $shareWith)); @@ -1829,4 +1829,14 @@ class Share extends \OC\Share\Constants { return $backend->formatItems($items, $format, $parameters); } } + + /** + * check if user can only share with group members + * @return bool + */ + public static function shareWithGroupMembersOnly() { + $value = \OC_Appconfig::getValue('core', 'shareapi_only_share_with_group_members', 'no'); + return ($value === 'yes') ? true : false; + } + } diff --git a/lib/private/updater.php b/lib/private/updater.php index 106970c412..29923d7629 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -53,7 +53,7 @@ class Updater extends BasicEmitter { $version = \OC_Util::getVersion(); $version['installed'] = \OC_Appconfig::getValue('core', 'installedat'); $version['updated'] = \OC_Appconfig::getValue('core', 'lastupdatedat'); - $version['updatechannel'] = \OC_Util::getChannel(); + $version['updatechannel'] = \OC_Util::getChannel(); $version['edition'] = \OC_Util::getEditionString(); $version['build'] = \OC_Util::getBuild(); $versionString = implode('x', $version); @@ -119,7 +119,7 @@ class Updater extends BasicEmitter { if (!\OC::$CLI && version_compare($installedVersion, '6.90.1', '<')) { // Add the trusted_domains config if it is not existant // This is added to prevent host header poisoning - \OC_Config::setValue('trusted_domains', \OC_Config::getValue('trusted_domains', array(\OC_Request::serverHost()))); + \OC_Config::setValue('trusted_domains', \OC_Config::getValue('trusted_domains', array(\OC_Request::serverHost()))); } /* * STOP CONFIG CHANGES FOR OLDER VERSIONS @@ -151,6 +151,13 @@ class Updater extends BasicEmitter { $this->emit('\OC\Updater', 'failure', array($exception->getMessage())); } + // upgrade from OC6 to OC7 + // TODO removed it again for OC8 + $sharePolicy = \OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'); + if ($sharePolicy === 'groups_only') { + \OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', 'yes'); + } + if ($canUpgrade) { // proceed with real upgrade try { diff --git a/settings/admin.php b/settings/admin.php index d2be04fcd1..dd1c604edb 100755 --- a/settings/admin.php +++ b/settings/admin.php @@ -83,7 +83,7 @@ $tmpl->assign('enforceLinkPassword', \OCP\Util::isPublicLinkPasswordRequired()); $tmpl->assign('allowPublicUpload', OC_Appconfig::getValue('core', 'shareapi_allow_public_upload', 'yes')); $tmpl->assign('allowResharing', OC_Appconfig::getValue('core', 'shareapi_allow_resharing', 'yes')); $tmpl->assign('allowMailNotification', OC_Appconfig::getValue('core', 'shareapi_allow_mail_notification', 'no')); -$tmpl->assign('sharePolicy', OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global')); +$tmpl->assign('onlyShareWithGroupMembers', \OC\Share\Share::shareWithGroupMembersOnly()); $tmpl->assign('forms', array()); foreach($forms as $form) { $tmpl->append('forms', $form); diff --git a/settings/templates/admin.php b/settings/templates/admin.php index f0b72d0956..ce33a804f5 100644 --- a/settings/templates/admin.php +++ b/settings/templates/admin.php @@ -278,12 +278,9 @@ if (!$_['internetconnectionworking']) { > - /> -
- /> -
+ /> +
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index aae91fa108..95983ee70e 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -384,8 +384,8 @@ class Test_Share extends PHPUnit_Framework_TestCase { } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - $policy = OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'); - OC_Appconfig::setValue('core', 'shareapi_share_policy', 'groups_only'); + $policy = OC_Appconfig::getValue('core', 'shareapi_only_share_with_group_members', 'no'); + OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', 'yes'); $message = 'Sharing test.txt failed, because '.$this->user1.' is not a member of the group '.$this->group2; try { OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, OCP\PERMISSION_READ); @@ -393,7 +393,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - OC_Appconfig::setValue('core', 'shareapi_share_policy', $policy); + OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', $policy); // Valid share $this->shareUserOneTestFileWithGroupOne();